linux软件包管理-rpm-创新互联

1.程序包管理

成都创新互联主要从事网站制作、网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务莎车,十年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18982081108

功能:将编译好的应用程序的各组件组成文件打包成一个或几个程序包文件,从而更方便快捷实现程序包的安装升级,卸载和查询等管理操作

 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

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文名称:linux软件包管理-rpm-创新互联
本文路径:http://ybzwz.com/article/jhsds.html