Linux之软件rpm、yum、源码安装方式
- Linux软件基础知识
- 软件包类型
- 二进制软件包的安装方式
- 获取软件
- 如何选择合适的软件
- rpm软件包的安装方式
- yum软件包安装方式
- 源码包安装方式
- 使用源码包`默认`安装cmatrix代码雨
- 使用源码包`自定义`安装cmatrix代码雨
- 示例:axel多线程下载软件源码安装
- 第五步:解决命令无法访问问题
- 解决源码安装手册找不到问题
- 卸载源码安装的软件
Linux软件基础知识
三种软件安装方法:
① RPM软件包管理(软件名称.rpm)rpm -ivh 软件包名称
② YUM软件包管理(使用yum命令install + 软件名称) => 下载 + 安装一体化
③ 源码编译安装(相对来说是最复杂的一种方式)
软件包类型
1、二进制软件包
- 二进制包,指的是已经编译好了的软件包,只需要直接安装就可以使用。
- 二进制包,不需要编译,直接下载安装即可。
- 二进制包,需要根据自己的计算机CPU以及操作系统去选择合适的。
2、源码包
- 源码包,指的是程序员写的原始的程序代码文件,不能够直接在计算机上运行。
- 源码包,需要进行编译,变成二进制的软件包后,才可安装使用。
- 源码包,一般可以在任何的计算机上安装使用。
- 源码包,命名方式一般为:软件包名.tar.gz[.tar.bz2、.tar.xz、.zip]。
类似于腾讯QQ开发工程师 => QQ的源代码发给你了 如.c源代码 => 编译 => QQ.exe文件二进制包
3、二进制源码包(.src.rpm)
- 二进制源码包,是一个半成品,安装后不能直接使用。
- 二进制源码包,需要使用
rpmbuild
工具重建成真正的rpm
包或者重建成源码包才可安装使用。 - 二进制源码包,命名方式一般为:mysql-community-5.7.25-1.el6.src.rpm、mysql-community-5.7.25-1.el7.src.rpm
常见的二进制软件包
总结二进制包和源码包区别
二进制软件包的安装方式
① 基于RPM进行安装(先下载软件然后本地进行安装)
② 基于YUM进行安装(在线下载然后安装)
如何选择合适的软件
选择适合当前系统的版本号:
- 找不到适合的,才去尝试别的系统版本号
- el6兼容el5;el5无法安装 el6
选择适合当前计算机cpu的架构:
- x86_64包,只能安装在64位的系统上
- i386,i586,i686的软件包可以安装在32和64位系统上
- noarch表示这个软件包与硬件构架无关,可以通用
- 32位系统不能安装64位包
建议: 建议不要跨大版本号去安装软件包,尽量使用当前系统版本自带软件包安装
rpm软件包的安装方式
rpm安装软件包无法解决依赖问题,需要根据提示一个一个软件包安装,先解决依赖再回来安装软件
安装:
# rpm -ivh 软件包名称
卸载:
# rpm -e 软件包名称 [--nodeps强制]
查询:
# rpm -q 软件名称
或
# rpm -qa |grep 软件名称
升级:
# rpm -Uvh 软件包名称
注:rpm -Uvh不仅可以升级软件,其实它也可以安装软件。
yum软件包安装方式
使用yum源一键解决依赖包安装问题,yum安装方式的最大好处是,如果安装软件时,产生了依赖,不用担心,yum会自动帮助我们解决这些问题的!
安装:
# yum install 软件名称.rpm
备注:当yum安装需要解决依赖时,下载epel扩展源
# yum install epel-release -y
源码包安装方式
获取软件的源码包:
- 可以去某个软件的官网获取,官网一般摆放的都是源码包*.tar.gz
源码安装三步走:
- ① 配置
./configure
(配置软件安装路径,也可以不配置,不配置使用默认路径) - ② 编译
make
(把软件的源代码做成类似rpm的可以直接按照的软件) - ③ 安装
make install
(把刚才编译好的程序进行安装到Linux系统)
使用源码包默认
安装cmatrix代码雨
第一步:对软件进行解压缩
# tar -zxf cmatrix-1.2a.tar.gz
第二步:进入到cmatrix文件夹,然后对软件进行配置
# cd cmatrix-1.2a
#l ./configure => 设置软件默认安装的位置等信息
第三步:编译软件,使用make命令
# make
第四步:安装软件
# make install
#l 总结:进入解压后的软件目录 => ./configure => make => make install
常见错误:
cmatrix.c:37:20: fatal error: "curses.h": No such file or directory
出现以上问题的主要原因在于系统中没有找到ncurses-devel软件包
解决方案:
# yum install gcc gcc-c++ ncurses-devel -y
注意:当编译安装到一半是提示没有安装编译工具或基本库没有安装,需要重新安装工具和库。先把工具安装好,重新解压源码编译安装
使用源码包自定义
安装cmatrix代码雨
详解源码安装的配置过程(定制):./configure
- 可以指定配置源码的安装目录和其他一些配置文件的存放目录。
# cd 软件源码包
# ./configure [选项]
# ./configure --help
选项说明:
--prefix=... Directories to put files in /usr/local "软件家目录"
--bindir=... $prefix/bin "命令的目录"
--etcdir=... $prefix/etc "配置文件的目录" httpd => /etc/httpd/httpd.conf
--mandir=... $prefix/share/man man "文档路径"
--locale=... $prefix/share/locale "语言编码"
详解编译过程:make
- 在Linux操作系统中,make 主要功能就是讲其他语言的源代码包打包成 Linux 可以识别安装的程序,编译的过程中需要一个gcc软件(开发工具)的支持。
- 当源码包是c或c++语言编写的时候需要额外下载 gcc 和gcc-c++工具的支持。
# make
安装过程:make install
- 将make编译好的程序直接安装。
# make install
示例:axel多线程下载软件源码安装
第一步:获取axel多线程下载软件
第二步:上传axel软件包到Linux系统中
第三步:安装axel软件(源码安装三步走=>配置+编译+安装)
- ①对软件进行解压缩操作
# tar -zxf axel-2.4.tar.gz
或
# tar -xf axel-2.4.tar.gz
- ② 使用cd命令切换到axel目录中
# cd axel-2.4
- ③ 对axel软件进行配置(不采用默认配置)
设置axel软件的安装路径为/opt/axel
#l ./configure --prefix=/opt/axel
选项说明:
#l ./configure --help
Usage: ./configure [OPTIONS]
Option Description Default
--prefix=... Directories to put files in /usr/local
--bindir=... $prefix/bin
--etcdir=... $prefix/etc
--mandir=... $sharedir/man
--locale=... $sharedir/locale
④ 对axel软件进行编译与安装
-
&&
:逻辑与,如果make编译成功会立即执行右边的make install安装程序,如果make编译失败,则以上程序会停止执行,然后抛出错误。
# make
# make install
或
# make && make install
第四步:测试与使用:
- 出现以下问题的主要原因在于:我们没有采用默认的安装方式,所以导致当我们执行axel命令时,其找不到对应的软件。
#l [root@yunwei ~]# axel http://mirrors.163.com/centos/7/os/x86_64/RPM-GPG-KEY-CentOS-7
# bash: axel: command not found...
第五步:解决命令无法访问问题
- 第一种方式:采用软链接形式(类似Windows中的快捷方式)
- 第二种方式:使用环境变量(重要,Linux中的环境变量)
①使用软链接解决command not found
# whereis axel => 查询axel命令所在的目录。
[root@localhost opt]# whereis axel
axel: /opt/axel/bin/axel
# which axel => 查询,发现axel命令不在系统命令目录中,所以无法直接调用axel命令
/usr/bin/which: no axel in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
# ll /opt/axel/bin => axel命令在/opt/axel/bin目录下,需要想办法将其链接到系统命令目录中
axel
解决方案:给/opt/axel/bin/axel创建一个快捷方式到/usr/local/bin
# ln [选项] 源文件路径 软链接路径
选项说明:
s:建立软链接
# ln -s /opt/axel/bin/axel /usr/local/bin/axel
主要功能:创建axel命令的软链接,把axel命令加入环境变量
验证:
# axel http://mirrors.163.com/centos/7/os/x86_64/RPM-GPG-KEY-CentOS-7
#l 删除软链接:
# rm -rf /usr/local/bin/axel
②使用环境变量解决command not found
- 环境变量:命令能执行主要是因为命令存放在系统的环境变量里面
- axel多线程下载软件,通过源码的方式安装成功后。由于没有使用默认的安装路径,导致axel命令没有出现在系统的环境变量中,所以会出现 command not found,需要手动将axel命令添加到环境变量中
#l 终端 => 命令 => 系统的环境变量(PATH => /etc/profile[全局配置环境变量]) => 一些命令的存放路径
# echo $PATH
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
主要功能:以上目录都属于"系统的环境变量"
- 手动添加命令到系统环境变量
第一步:查询当前系统环境变量路径
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
第二步:把axel命令所在的目录添加到环境变量中
第一种方法:使用vim编辑/etc/profile文件,追加到最后一行
# vim /etc/profile
...
增加如下内容:
export PATH=$PATH:/opt/axel/bin
# soure /etc/profile => 代表让配置立即生效
第二种方法:使用echo命令向/etc/profile文件追加一行
# echo 'export PATH=$PATH:/opt/axel/bin' >> /etc/profiel
# soure /etc/profile => 代表让配置立即生效
第三步:测试axel命令是否正常使用
# axel http://mirrors.163.com/centos/7/os/x86_64/RPM-GPG-KEY-CentOS-7
#l 查看环境变量
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/axel/bin
解决源码安装手册找不到问题
- 当使用源码安装时,有些电脑找软件手册找不到
# man axel => 查看axel更详细的帮助
[root@localhost ~]# man axel
No manual entry for axel
原因:找不到指定的man文档
解决方案:
# vim /etc/man.config => 属于系统文件,查找的时候查找不到,使用就可以
...
增加如下内容:
MANPATH /opt/axel/share/man
主要功能:增加自定义路径,当使用man axel 时就可以查看到软件的手册
卸载源码安装的软件
第一步:进入到源码的安装包中
# cd axel-2.4/
# make uninstall => 对安装软件的安装包等程序进行卸载
# make distclean => 卸载编译与配置过程,恢复到原始状态
第二步:删除软件的目录
# rm -rf /opt/axel