rpm 软件包
Linux 中有安装软件方式有两种,源码安装以及软件包安装:
- 压缩包:源码包,编译后安装
- rpm(redhat package manager 红帽软件包管理):需要编译,直接安装即可
采用源码包安装,需要考虑软件之间的依赖关系,以及自行编译,在校验、安装、卸载等方面很不方便。rpm 机制就是为解决这种问题而设计的,像 Windows 的控制面板一样,简历同一的数据库文件,详细记录软件信息并自动分析依赖关系。
1. rpm 命令
1.1 安装本地软件包
用于安装、卸载、查询、升级软件包等
语法:
rpm [选项] 软件包名
选项:
- i:安装(install)软件
-U:升级(upgrade)软件
-e:移除/删除(erase)软件
-v:显示详细的处理信息,一般与 h 搭配使用
-h:显示安装进度,卸载不能用
-q: 查询(query)
-a:所有(all)
1. rpm 软件包结构
rpm 软件包分为包名、版本号、修正次数(及发行多少次)、适用平台、32/64 位以及拓展名:
# 版本是奇数为测试版本(不稳定),偶数为稳定版
yum-plugin-aliases-1.1.30-16.el6.x86_64.rpm # el6 可以安装到哪个系统,16 是修正次数
2. 安装
cd /media/CentOS_6.8_Final/Packages
rpm -ivh file1.rpm
rpm -ivh file1.rpm file2.rpm... # 安装多个
rpm -ivh file.rpm --force # 覆盖安装
3. 查询
# 查询所有安装的软件包
rpm -qa # query/all
# 过滤,查询某个软件包
rpm -qa | grep 'dhcp'
rpm -q 软件包名
rpm -ql 软件包名 # query location 查询软件包安装位置
rpm -qi 软件包名 # 查询软件包详细信息
4. 卸载
rpm -e 软件包名
5. 升级
rpm -U 软件包名
1.2 安装网络软件包
语法:
rpm -ivh 域名/软件包名
rpm -ivh http://mirror.centos.org/centos-6/6.8/extras/x86_64/Packages/python-boto-2.32.1-1.el6.centos.noarch.rpm
也可以先使用 wget 命令下载到本地,再使用 rpm 命令安装:
cd direcory # 切换到目录
wget http://mirror.centos.org/centos-6/6.8/extras/x86_64/Packages/python-boto-2.32.1-1.el6.centos.noarch.rpm # 下载
rpm -ivh python-boto # 安装
1.3 rpm 包的属性依赖性问题
rpm 软件包的属性依赖性问题,即这个软件包的安装依赖于其他软件包的安装。那么卸载它就需要忽略依赖或者先卸载依赖于它的那个软件,安装亦一样:
# 删除有依赖关系的软件包
rpm -e dhcp-common --nodeps # no dependencies 忽略依赖
2. yum 命令
  
yum( Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。
基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。
yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
2.1 常见 yum 命令
命令 | 作用 | 命令 | 作用 |
---|---|---|---|
yum install 软件包 | 安装软件包 | yum repolist all | 列出所有仓库 |
yum list all | 列出仓库中所有软件包 | yum info 软件包 | 查看软件包信息 |
yum makecache | 制作缓存 | yum -y install http* | 模糊安装(安装所有含http 的软件包 |
yum reinstall 软件包 | 重新安装软件包 | yum update 软件包 | 升级软件包 |
yum remove 软件包 | 移除软件包 | yum clean all | 清除所有仓库缓存 |
yum check-update | 检查可更新的软件包 | yum grouplist | 查看系统中已安装的软件包组 |
yum groupinstall "软件包组" | 安装指定的软件包组 | yum groupremove 软件包组 | 移除指定的软件包组 |
2.2 配置本地 yum 仓库
配置一个本地 yum 仓库,需要将路径设置为光盘路径(/media/CentOS_6.8_Final/Packages 存放的 rpm软件包),再配置 yum 仓库。
步骤一:将光盘挂载到某个目录,也可以不挂载直接指定光盘路径
mkdir /media/local_yum
mount /media/CentOS_6.8_Final /media/local_yum
步骤二:配置 yum 仓库,编辑配置文件。首先在 /etc/yum.repos.d/ 目录下创建一个仓库名(local.repo),再编辑配置文件
[root@hj /]# vim /etc/yum.repos.d/local.repo
[local] # id ,中括号内容要求唯一,但不要出现特殊字符
name=local yum # 描述信息
baseurl=file:///media/CentOS_6.8_Final # yum 软件仓库位置,指向光盘挂载点
enabled=1 # 1 为开启,0不开启
gpgcheck=0 # 检查签名,1 为检测,0不检测(一般设置不检测)
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release # 签名认证信息的路径(gpgcheck=1 才有这行)
查看仓库是否安装成功,安装软件包
[root@hj yum.repos.d]# yum repolist
[root@hj yum.repos.d]# yum install dhcp-common
2.3 自定义 yum 源
自定义 yum 源除了需要有 rpm 软件包,还需要存放有软件包依赖关系的配置文件 repodata,可以使用 createrepo 命令生成:
安装 createrepo
mkdir /test
cp 软件包 /test
createrepo /test
修改 /etc/yum.repos.d/local.repo 的 baseurl=file:///test
2.4 网络源仓库
要想安装网络上的软件包,就需要安装网络源仓库,与配置本地 yum 仓库不同的是 baseurl 指向的是网络 URL:
vim /etc/yum.repos.d/line_yum
[online]
name=online yum
baseurl=http://mirrors.163.com/.help/CentOS6-Base-163.repo
enabled=1
gpgabled=0
使用 yum 命令安装网络上的软件包,安装完毕后默认移除软件包,也可以通过设置 /etc/yum.conf 文件,将软件包保留下来,用于以后制作自己的 yum 源。
mkdir /etc/yum_source # 新建一个目录用于存储缓存的软件包
vim /etc/yum.conf # 打开配置文件
cachedir=/yum_source # 缓存目录
keepcache=0 # 保留缓存,0表示不缓存,1表示缓存
2.5 国内源
系统默认的源有时速度上很慢,我们可以将源路径设置为国内的源,国内目前比较好用的几个源有:网易 163 、中科大、sohu 等,下面以网易 163 为例:
步骤一:备份原先的源(CentOS-Base.repo)
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
步骤二:下载对应版本 repo 文件,放入 /etc/yum.repos.d/
- CentOS5 :http://mirrors.163.com/.help/CentOS5-Base-163.repo
- CentOS6 :http://mirrors.163.com/.help/CentOS6-Base-163.repo
- CentOS7 :http://mirrors.163.com/.help/CentOS7-Base-163.repo
wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
mv CentOS6-Base-163.repo CentOS-Base.repo
步骤三:运行命令生成缓存
yum clean all
yum makecache
3. 源码包安装
3.1 源码包安装步骤
一般来说,能用 yum 软件仓库安装,就要 yum 方式;反之则去寻找合适的 rpm 软件包安装;实在没有资源可用,则采用源码包安装。
源码安装分为以下几个步骤:
第 1 步:安装编译所需的 C 运行库 glibc(Linux 最底层的 api ),以及 gcc 编译器(Linux 中所有程序包括内核都是 gcc 编译),两个软件互相依赖。
yum install gcc-* glibc-* -y
第 2 步:下载源码包。源码包通常是归档后的以 gzip 或 bzip2 等格式压缩的文件,因此一般会具有 .tar.gz、.tar.bz2 后缀。
# 一般下载到根目录下
wget https://python.org/ftp/python/3.6.5/Python-3.6.5.tgz
第 3 步:解包。
tar -xvf Python-3.5.2.tgz
第 4 步:编译源码包文件。在正式安装之前,还需使用编译器脚本针对当前系统进行一系列的评估工作,如果系统符合安装要求,会在当前目录生成一个 Makefile 安装文件,还根据需要追加 --prefix 参数,指定软件安装路径。
cd /Python-3.5.2
./configure --prefix=/usr/local/python3.6 # 指定软件安装路径
第 5 步:生成二进制安装程序。刚刚生成的 Makefile 文件保存有关系统环境、软件依赖关系和安装规则等,接下来可以用 make 命令编译生成二进制安装程序。
make
第 6 步:运行二进制服务程序安装包(即安装软件)。
make install
第 7 步:清理源码包临时文件。在编译时会产生很多临时垃圾文件,可以使用 make clean 命令将其清除掉。
make clean
3.2 添加环境路径(PATH)
软件安装成功后,要想正常使用,一般都需要添加环境路径,这和 Windows 上类似,以上面的 Python 程序为例:
1. 查看 PATH 路径
# 以冒号【:】 为分隔符
[root@hj /]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
2. 临时添加 PATH
临时添加 PATH,重启系统服务失效,直接给 PATH 赋值即可
# 添加 Python 执行程序路径 /usr/local/python3.6/bin/
PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/python3.6/bin/
3. 永久添加 PATH
凡是永久有效的,都需要修改配置文件。添加 PATH 需要修改 /etc/profile ,在最后面添加 PATH
vim /etc/profile
PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/python3.6/bin/
export PATH
保存,退出,执行 source /etc/profile,否则不奏效。