linux中管理程序包的方式主要有两种:rpm 和yum,他们的主要功能有安装、查询、卸载、升级、校验、数据库的重建、验正数据包等。下面将分别对rpm 和yum 做详细介绍和应用举例。
一. rpm
rpm包的命名必须以 .rpm 结尾,并且是二进制格式,包名格式:
name-version-release.arch.rpm 。例如:bind-9.7.1-1.el5.i586.rpm。 其中主版本号:重大改进;次版本号:某个子功能发生重大变化;发行号:修正了部分bug,调整了一点功能。
1、安装命令 : rpm -ivh /PATH/TO/PACKAGE_FILE
-h: 以#显示进度;每个#表示2%;
-v: 显示详细过程
–test: 测试安装,但不真正执行安装,即dry run模式
–nodeps:忽略依赖关系
–replacepkgs | replacefiles
–nosignature: 不检查来源合法性
–nodigest:不检查包完整性
–noscripts:不执行程序包脚本
%pre: 安装前脚本; –nopre
%post: 安装后脚本; –nopost
%preun: 卸载前脚本; –nopreun
%postun: 卸载后脚本; –nopostun
如:rpm -ivh system-gnome-theme-60.0.2-1.el6.noarch.rpm
2、查询命令:
rpm -q PACKAGE_NAME: 查询指定的包是否已经安装
rpm -qa : 查询已经安装的所有包
rpm -qi PACKAGE_NAME: 查询指定包的说明信息;
rpm -ql PACKAGE_NAME: 查询指定包安装后生成的文件列表;
rpm -qc PACEAGE_NEME:查询指定包安装的配置文件;
rpm -qd PACKAGE_NAME: 查询指定包安装的帮助文件;
rpm -q –scripts PACKAGE_NAME: 查询指定包中包含的脚本
rpm -qf /path/to/somefile: 查询指定的文件是由哪个rpm包安装生成的;
3、升级命令:
rpm -Uvh /PATH/TO/NEW_PACKAGE_FILE: 如果装有老版本的,则升级;否则,则安装;
rpm -Fvh /PATH/TO/NEW_PACKAGE_FILE:如果装有老版本的,则升级;否则,退出;
–oldpackage: 降级
注意:这种升级会把会把老版本删除,生产中不建议这样做,用rpm -ivh 安装操作!! 重要!
4、卸载
rpm -e PACKAGE_NAME
–nodeps
[root@Centos6.9Packages]#rpm -e tree 卸载tree 包
[root@Centos6.9Packages]#rpm -q tree 卸载后查询
package tree is not installed
5、校验
rpm -V PACKAGE_NAME
6、重建数据库
rpm
–rebuilddb: 重建数据库,一定会重新建立;
–initdb:初始化数据库,没有才建立,有就不用建立;
7、检验来源合法性,及软件包完整性;
加密类型:
对称:加密解密使用同一个密钥
公钥:一对儿密钥,公钥,私钥;公钥隐含于私钥中,可以提取出来,并公开出去;
rpm -K /PAPT/TO/PACKAGE_FILE
dsa, gpg: 验正来源合法性,也即验正签名;可以使用–nosignature,略过此项
sha1, md5: 验正软件包完整性;可以使用–nodigest,略过此项
[root@Centos6.9Packages]#rpm -K tree-1.5.3-3.el6.x86_64.rpm
tree-1.5.3-3.el6.x86_64.rpm: rsa sha1 (md5) pgp md5 OK
rpm --import RPM-GPG-KEY-CentOS-6 导入公钥
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release: 导入密钥文件
二 yum 安装
YUM全称叫Yellowdog Update Modifier, 是rpm的前端程序,可解决软件包相关依赖性,可在多个库之间定位软件包, up2date的替代工具。
yum repository: yum repo,存储了众多rpm包,以及
包的相关的元数据文件(放置于特定目录repodata下)
文件服务器:
http://
https://
ftp://
file://
1. yum客户端配置文件:
/etc/yum.conf:是yum库的全局配置文件
/etc/yum.repos.d/*.repo:是单独的yum个性化配置文件,个性化配置优先于全局配置。
仓库指向的定义:
[repositoryID] 必须用[ ] 扩起来
name=xx
baseurl=url://path/to/repository/ (可以是http,https,ftp,也可以是本地光盘文件用file:// )
enabled={1|0} (1表示启用该yum 配置文件,0表示不启用)
gpgcheck={1|0} (1表示是检查yum 源的证书,如果不通过则停止安装,0表示不检查。)
gpgkey=URL (URL 填写证书的路径)
enablegroups={1|0} (1表示允许数据包组安装,默认是允许的)
failovermethod={roundrobin|priority}
roundrobin: 意为随机挑选,默认值
priority:按顺序访问
cost= 默认为1000
- yum的 repo配置文件中可用的变量:
releasever:当前OS的发行版的主版本号
arch: 平台, i386,i486,i586,x86_64等
basearch:基础平台;i386,x8664
YUM0-$YUM9:自定义变量
实例:
http://server/centos/
releasever/
basearch/
http://server/centos/7/x86_64
http://server/centos/6/i384
yum 客户端常用命令:
yum [options] [command] [package …]
显示仓库列表: yum repolist all
显示程序包: yum list
安装程序包:
yum install package1 [package2] […]
yum reinstall package1 [package2] […] (重新安装)33
yum命令
升级程序包:
yum update [package1] [package2] […]
yum downgrade package1 [package2] […] (降级)
检查可用升级:yum check-update
卸载程序包: yum remove | erase package1 [package2]
查看程序包information: yum info […]
查看指定的特性(可以是某文件)是由哪个程序包所提供:
yum provides | whatprovides feature1 [feature2]
清理本地缓存:
清除/var/cache/yum/
basearch/
releasever缓存
yum clean [ packages | metadata | expire-cache |
查看指定包所依赖的capabilities:
yum deplist package1 [package2] […]
查看yum事务历史:
yum history [info|list|packages-list|packages-info|
summary|addon-info|redo|undo|
rollback|new|sync|stats]
yum history
yum history info 6
yum history undo 6
日志 : /var/log/yum.log3
2. yum 服务器配置
yum 服务端首先要有http 或者https 或者ftp 服务,其次要有repodata 和packets 才能构成yum 库。yum 客户端的baseurl为 repodata 的父目录。 下面以centos 7.3 yum服务端启用ftp服务为例:
1. 启用yum 服务端的ftp 服务:
安装vsftpd 包 :
rpm -ivh /misc/cd/Packages/vsftpd-3.0.2-21.el7.x86_64.rpm
启动服务 :systemctl start vsftpd
设置开机自动启动服务
systemctl enable vsftpd
设置完成后通过 ss -tnl 检查 21 端口是否开启
[root@localhost profile.d]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:111 *:*
LISTEN 0 5 192.168.122.1:53 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 128 127.0.0.1:631 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 :::111 :::*
LISTEN 0 32 :::21 :::*
关闭系统防火墙和selinux :
systemctl stop firewalld.service 马上禁用
systemctl disable firewalld.service 下次开机禁用
vim /etc/selinux/config
SELINUX=permissive 让防火墙永久关闭
在ftp /var/ftp/pub下生成yum 源文件
cd /var/ftp/pub/7
cp /misc/cd/ . -r 把光盘内容copy 到ftp/pub/7 目录下
[root@localhost 7]# ls
CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7
EFI images Packages RPM-GPG-KEY-CentOS-Testing-7
EULA isolinux repodata TRANS.TBL
现在yum 服务端配置完成了,剩下只要配置修改下客户端的配置文件就可以了!
客户端配置:
vim /etc/yum.repos.d/base.repo (base.repo 是自定义的)
[ftpbase]
name=ftp server repo
baseurl=ftp://192.168.10.33/pub/centos/$releasever/ ($releasever 是yum 的变量)
gpgcheck=0
客户可以通过yum install xx 测试,如果不成功第一要确保yum 的路径是能够访问的,如果路径正确通过yum clean all 清楚缓存就可以了。