linux软件包管理-rpm
1.程序包管理
专注于为中小企业提供做网站、成都网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业姜堰免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千多家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
功能:将编译好的应用程序的各组件组成文件打包成一个或几个程序包文件,从而更方便快捷实现程序包的安装升级,卸载和查询等管理操作
1 程序包的组成清单(每个程序包都单独实现)
文件清单
安装或卸载是运行的脚本
2 数据库部分(公共)
程序包名称和版本
依赖关系
功能说明
安装生成各文件位置路径及校验码信息
程序包我们在哪获取了?
1)系统发行的光盘或官方文件服务器或镜像站点:
最常用的例如像
http://mirrors.aliyun.com
http://mirrors.souhu.com
http://mirrors.163.com
2)程序官方站点下载
3)第三方组织的rpm包
(a)EPEL:红帽站点论坛组织,提供高效的yum原
(b)搜索引擎搜索
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分包机制
将一个包的功能拆成n个不同功能支包
主包:name-version-release.arch.rpm
支包:name-function-version-release.arch.rpm
function:功能 例如:devel开发功能
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
新闻名称:linux软件包管理-rpm
URL网址:http://ybzwz.com/article/jijcsh.html