1.程序包管理
功能:将编译好的应用程序的各组件组成文件打包成一个或几个程序包文件,从而更方便快捷实现程序包的安装升级,卸载和查询等管理操作
1 程序包的组成清单(每个程序包都单独实现)
文件清单
安装或卸载是运行的脚本
2 数据库部分(公共)
程序包名称和版本
依赖关系
功能说明
程序包我们在哪获取了?
最常用的例如像
http://mirrors.aliyun.com
http://mirrors.souhu.com
http://mirrors.163.com
2)程序官方站点下载
3)第三方组织的rpm包
(a)EPEL:红帽站点论坛组织,提供高效的yum原
pkgs.org
rpmfind.net
rpm.pbone.net
4)自己做
ps:下载时注意其合法性,来源合法
rpm :readhat package manager ;rpm is package manager
2.rpm包命名格式
tree-1.5.3-3.el6.x86_64.rpm
name-version-release.arch.rpm
versiom:是指源代码版本
release.arch:rpm包的发行号
archetecture:架构号:i386,x64(amd64)..
e16适用平台 6
3.rpm 特性
1,rpm分包机制
主包:name-version-release.arch.rpm
支包:name-function-version-release.arch.rpm
untils工具程序
libs库文件等
2,依赖关系
依赖关系:因为linux程序做到短小精湛,程序彼此之间依赖其他程序提供的功能,然后才能运行,所以导致包和包之间有着复杂的依赖关系
3,解决依赖
yum :rpm包管理器的前端工具
apt-get(apt-cache)deb包管理器的前端工具 用于debian
zypper :suse的rpm管理器前端工具
dnf:fedora-22+系统上的rpm包管理器的前端工具
4.rpm命令管理程序包:
使用方法
rpm [OPTION] [PACKAGE_FILE]
安装
rpm {-i|--install} [install-options] PACKAGE_FILE ...
[GENERAL OPTIONS]:通用选项 -v 详细信息输出 -vv 更详细信息输出
[install-options]:安装选项 -h 显示以hash标记输出进度条 yum -ivh --test测试安装(不实际安装,仅测试,检查依赖及冲突关系); --nodeps 忽略依赖关系安装; --replacepkgs 重新安装; ps:rpm可以自带脚本 --noscripts 四类: prelnstall:安装过程之前运行的脚本%pre --nopre postinstall:安装过程完成之后运行的脚本,%pot --post preuninstall:卸载过程真正开始执行之前运行的脚本 %preun --nopreun postuninstall:卸载过程完成之后运行脚本 %postun --nopostun --nosignature:不检查包签名信息,不检查来源合法性; --nodigest:不检查包完整性信息
例如:安装tree包
[root@localhost Packages]# rpm -ivh tree-1.6.0-10.el7.x86_64.rpm warning: tree-1.6.0-10.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY Preparing... ################################# [100%] package tree-1.6.0-10.el7.x86_64 is already installed
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ... rpm {-F|--freshen} [install-options] PACKAGE_FILE ... -U 升级或安装 -F升级 rpm -Uvh rpm -Fvh --oldpackage:降级; --force:强制升级;升级会影响依赖关系可能 #ps:1)不要对内核做升级操作;linux支持多内核,直接安装新版本内核即可; # 2)如果原程序包配置文件安装后被修改过,升级是,新版本程序提供的同一个配置文件不会 覆盖原有版本的配置文件,会将新文件重命名后保留;
例如:验证 如果原程序包配置文件安装后被修改过,升级是,新版本程序提供的同一个配置文件不会覆盖原有版本的配置文件,会将新文件重命名后保留;
[root@localhost Packages]# rpm -ivh vsftpd-3.0.2-10.el7.x86_64.rpm warning: vsftpd-3.0.2-10.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY Preparing... ################################# [100%] Updating / installing... 1:vsftpd-3.0.2-10.el7 ################################# [100%] [root@localhost Packages]# #安装vsftp [root@localhost vsftpd]# cat vsftpd.conf|wc -l 127 [root@localhost vsftpd]# vim vsftpd.conf [root@localhost vsftpd]# cat vsftpd.conf|wc -l 27 #修改其配置文件(删除文件中100行内容) [root@localhost Packages]# rpm -Uvh vsftpd-3.0.2-10.el7.x86_64.rpm --force warning: vsftpd-3.0.2-10.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY Preparing... ################################# [100%] Updating / installing... 1:vsftpd-3.0.2-10.el7 ################################# [100%] #升级安装vsftpd [root@localhost vsftpd]# cat vsftpd.conf|wc -l 27 #配置文件行数与之前安装修改行数一样
卸载
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ... --allmatches:删除所有所匹配指定名称的程序包版本 --nodeps:忽略依赖关系 --test 测试卸载,不真正执行卸载
例如:卸载vsftpd
[root@localhost Packages]# rpm -e --nodeps vsftpd warning: /etc/vsftpd/vsftpd.conf saved as /etc/vsftpd/vsftpd.conf.rpmsave #卸载vsftpd包 [root@localhost ~]# ll /etc/vsftpd/ total 4 -rw-------. 1 root root 1127 Aug 23 21:10 vsftpd.conf.rpmsave [root@localhost ~]# cat /etc/vsftpd/vsftpd.conf.rpmsave |ec -l bash: ec: command not found... [root@localhost ~]# cat /etc/vsftpd/vsftpd.conf.rpmsave |wc -l 27 #卸载后将配置文件备份成了一个新文件
rpm {-q|--query} [select-options] [query-options] 1)select-options: PACKAGE_NAME 直接给出包名查看是否已经安装 -a,--all 查询所有已安装的包 rpm -qa [root@localhost ~]# rpm -qa |grep http -f,--file 查询文件的生成安装包 [root@localhost ~]# rpm -qf /etc/fstab setup-2.8.71-6.el7.noarch -p --pachage 查寻未安装的包 --whatprovides CAPABILITY:查询指定的CAPABILITY安装包 --whatrequires CAPABILITY:查询指定的CAPABILITY安装包有哪些依赖包 2)query-options: --changelog 查看rpm改进日志 -l, --list 安装生成的文件 rpm -ql 查看安装这个程序包后生成了哪些文件 -i --info 查询程序包相关的信息(版本,大小,所属的包组) rpm -qi 程序名 -c, --configfiles 查询指定程序包提供的配置文件 -d, --docfiles 查询指定程序包提供的文档 --provides 列出程序提供的CAPABTLITY --scripts 查看指定程序安装后的脚本
查询举例:
#查询某个包是否已经安装的多个方法 [root@localhost vsftpd]# rpm -q vsftpd package vsftpd is not installed [root@localhost vsftpd]# rpm -qa vsftpd [root@localhost vsftpd]# rpm -qa |grep vsftpd [root@localhost vsftpd]# rpm -q vsftpd vsftpd-3.0.2-10.el7.x86_64 [root@localhost vsftpd]# rpm -qa |grep vsftpd vsftpd-3.0.2-10.el7.x86_64
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
#查询某个文件是由哪个安装包生成的 [root@localhost vsftpd]# rpm -qf /etc/vsftpd/ vsftpd-3.0.2-10.el7.x86_64
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
#查看某个包安装过后生成的文件 [root@localhost vsftpd]# rpm -ql vsftpd /etc/logrotate.d/vsftpd /etc/pam.d/vsftpd /etc/vsftpd /etc/vsftpd/ftpusers /etc/vsftpd/user_list /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd_conf_migrate.sh /usr/lib/systemd/system-generators/vsftpd-generator /usr/lib/systemd/system/vsftpd.service /usr/lib/systemd/system/vsftpd.target /usr/lib/systemd/system/vsftpd@.service /usr/sbin/vsftpd /usr/share/doc/vsftpd-3.0.2 /usr/share/doc/vsftpd-3.0.2/AUDIT /usr/share/doc/vsftpd-3.0.2/BENCHMARKS /usr/share/doc/vsftpd-3.0.2/BUGS /usr/share/doc/vsftpd-3.0.2/copYING /usr/share/doc/vsftpd-3.0.2/Changelog /usr/share/doc/vsftpd-3.0.2/EXAMPLE /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE/README /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE/README.configuration /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE/vsftpd.conf /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE/vsftpd.xinetd /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE_NOINETD /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE_NOINETD/README /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE_NOINETD/README.configuration /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE_NOINETD/vsftpd.conf /usr/share/doc/vsftpd-3.0.2/EXAMPLE/PER_IP_CONfig /usr/share/doc/vsftpd-3.0.2/EXAMPLE/PER_IP_CONfig/README /usr/share/doc/vsftpd-3.0.2/EXAMPLE/PER_IP_CONfig/README.configuration /usr/share/doc/vsftpd-3.0.2/EXAMPLE/PER_IP_CONfig/hosts.allow /usr/share/doc/vsftpd-3.0.2/EXAMPLE/README /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_HOSTS /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_HOSTS/README /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/README /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/README.configuration /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/logins.txt /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/vsftpd.conf /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/vsftpd.pam /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS_2 /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS_2/README /usr/share/doc/vsftpd-3.0.2/FAQ /usr/share/doc/vsftpd-3.0.2/INSTALL /usr/share/doc/vsftpd-3.0.2/LICENSE /usr/share/doc/vsftpd-3.0.2/README /usr/share/doc/vsftpd-3.0.2/README.security /usr/share/doc/vsftpd-3.0.2/REWARD /usr/share/doc/vsftpd-3.0.2/Security /usr/share/doc/vsftpd-3.0.2/Security/DESIGN /usr/share/doc/vsftpd-3.0.2/Security/IMPLEMENTATION /usr/share/doc/vsftpd-3.0.2/Security/OVERVIEW /usr/share/doc/vsftpd-3.0.2/Security/TRUST /usr/share/doc/vsftpd-3.0.2/SIZE /usr/share/doc/vsftpd-3.0.2/SPEED /usr/share/doc/vsftpd-3.0.2/Todo /usr/share/doc/vsftpd-3.0.2/TUNING /usr/share/doc/vsftpd-3.0.2/vsftpd.xinetd /usr/share/man/man5/vsftpd.conf.5.gz /usr/share/man/man8/vsftpd.8.gz /var/ftp /var/ftp/pub
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
#查询指定程序包包含的配置文件 [root@localhost Packages]# rpm -qc vsftpd /etc/logrotate.d/vsftpd /etc/pam.d/vsftpd /etc/vsftpd/ftpusers /etc/vsftpd/user_list /etc/vsftpd/vsftpd.conf
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
#查询指定程序包提供的文档 [root@localhost Packages]# rpm -qd vsftpd /usr/share/doc/vsftpd-3.0.2/AUDIT /usr/share/doc/vsftpd-3.0.2/BENCHMARKS /usr/share/doc/vsftpd-3.0.2/BUGS /usr/share/doc/vsftpd-3.0.2/copYING /usr/share/doc/vsftpd-3.0.2/Changelog /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE/README /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE/README.configuration /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE/vsftpd.conf /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE/vsftpd.xinetd /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE_NOINETD/README /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE_NOINETD/README.configuration /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE_NOINETD/vsftpd.conf /usr/share/doc/vsftpd-3.0.2/EXAMPLE/PER_IP_CONfig/README /usr/share/doc/vsftpd-3.0.2/EXAMPLE/PER_IP_CONfig/README.configuration /usr/share/doc/vsftpd-3.0.2/EXAMPLE/PER_IP_CONfig/hosts.allow /usr/share/doc/vsftpd-3.0.2/EXAMPLE/README /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_HOSTS/README /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/README /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/README.configuration /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/logins.txt /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/vsftpd.conf /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/vsftpd.pam /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS_2/README /usr/share/doc/vsftpd-3.0.2/FAQ /usr/share/doc/vsftpd-3.0.2/INSTALL /usr/share/doc/vsftpd-3.0.2/LICENSE /usr/share/doc/vsftpd-3.0.2/README /usr/share/doc/vsftpd-3.0.2/README.security /usr/share/doc/vsftpd-3.0.2/REWARD /usr/share/doc/vsftpd-3.0.2/Security/DESIGN /usr/share/doc/vsftpd-3.0.2/Security/IMPLEMENTATION /usr/share/doc/vsftpd-3.0.2/Security/OVERVIEW /usr/share/doc/vsftpd-3.0.2/Security/TRUST /usr/share/doc/vsftpd-3.0.2/SIZE /usr/share/doc/vsftpd-3.0.2/SPEED /usr/share/doc/vsftpd-3.0.2/Todo /usr/share/doc/vsftpd-3.0.2/TUNING /usr/share/doc/vsftpd-3.0.2/vsftpd.xinetd /usr/share/man/man5/vsftpd.conf.5.gz /usr/share/man/man8/vsftpd.8.gz
效验
rpm {-V|--verify} [select-options] [verify-options] --nodeps Don't verify dependencies of packages. --nodigest Don't verify package or header digests when read ing. --nofiles Don't verify any attributes of package files. --noscripts Don't execute the %verifyscript scriptlet (if any). S file Size differs M Mode differs (includes permissions and file type) 5 digest (formerly MD5 sum) differs D Device major/minor number mismatch L readLink(2) path mismatch U User ownership differs G Group ownership differs T mTime differs P caPabilities differ 不添加任何参数默认就是检查所有参数 rpm -V --nodeps
程序包的合法性验证:
来源合法:由制作者提供,依赖于制作者的数字签名,签名是作者使用自己的私钥加密程序包的特性码进行的;
验正方式:安装者用同样的特征码提取算法提取程序包的特征码,并与原作者提供的相比较;
举例:
rpm --import /misc/cd/RPM-GPG-KEY-CentOS-6 rpm -K vsftpd-3.0.2-10.el7.x86_64.rpm vsftpd-3.0.2-10.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 OK
数据库维护
rpm管理器数据库:/var/lib/rpm rpmdb {--initdb|--rebuilddb} [-v] [--dbpath DIRECTORY] --initdb: 初始化数据库,数据库不存在,才会新建; --rebuilddb: 无论当前数据库是否存在,都会直接重建此库;
举例:
#删除库 [root@localhost rpm]# ls Basenames __db.001 __db.003 Group Name Packages Requirename Sigmd5 Conflictname __db.002 Dirnames Installtid Obsoletename Providename Sha1header Triggername [root@localhost rpm]# rm -fr * [root@localhost rpm]# ls #使用查询重新生成库 [root@localhost rpm]# rpm -qa vsftpd [root@localhost rpm]# ls Basenames __db.001 __db.003 Group Name Packages Requirename Sigmd5 Conflictname __db.002 Dirnames Installtid Obsoletename Providename Sha1header Triggername [root@localhost rpm]# #使用命令rpmdb --initdb生成库 [root@localhost rpm]# rm -fr * [root@localhost rpm]# ll total 0 [root@localhost rpm]# rpmdb --initdb [root@localhost rpm]# ll total 388 -rw-r--r--. 1 root root 8192 Aug 23 22:19 Basenames -rw-r--r--. 1 root root 8192 Aug 23 22:19 Conflictname -rw-r--r--. 1 root root 270336 Aug 23 22:19 __db.001 -rw-r--r--. 1 root root 81920 Aug 23 22:19 __db.002 -rw-r--r--. 1 root root 107048 Aug 23 22:19 __db.003 -rw-r--r--. 1 root root 8192 Aug 23 22:19 Dirnames -rw-r--r--. 1 root root 8192 Aug 23 22:19 Group -rw-r--r--. 1 root root 8192 Aug 23 22:19 Installtid -rw-r--r--. 1 root root 8192 Aug 23 22:19 Name -rw-r--r--. 1 root root 8192 Aug 23 22:19 Obsoletename -rw-r--r--. 1 root root 12288 Aug 23 22:19 Packages -rw-r--r--. 1 root root 8192 Aug 23 22:19 Providename -rw-r--r--. 1 root root 8192 Aug 23 22:19 Requirename -rw-r--r--. 1 root root 8192 Aug 23 22:19 Sha1header -rw-r--r--. 1 root root 8192 Aug 23 22:19 Sigmd5 -rw-r--r--. 1 root root 8192 Aug 23 22:19 Triggername
帮助
1. man
rpm
2.
man
rpmdb