linux程序包管理之rpm_第1页
linux程序包管理之rpm_第2页
linux程序包管理之rpm_第3页
linux程序包管理之rpm_第4页
linux程序包管理之rpm_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、linux程序的遮阳编译安装方式毕竟比较繁琐,安装后也不易管理,为此linux 官方提供了专门的程序包管理器来解决这些问题一、程序包管理器程序包管理器:将源程序编译并打包成一个或有限的几个文件,可用于实现安 装、查询、升级、卸载等功能程序包管理器的管理实现:数据库,用于记录:程序名及版本程序之间的依赖关系功能性说明安装生成的各文件路径及校验码程序的组成清单:文件清单安装卸载时运行的脚本常用程序包管理器:Redhat: rpm (redhat package manager),其对应的程序包后缀为.rpm,对应 的前端工具为yumDebian: dpkg,其对应的程序包后缀为.deb,对应的前端

2、工具为apt-getrpm包的制作需要rpmbuild工具,其制作过程这里不作说明,以下详解一下 rpm包的管理二、rpm程序包2.1、 rpm 包命名格式:name-version-release. arch. rpm, 如 httpd-2. 2. 15-45. el6. centos. x86_64. rpmversion: major, minor, release, 同源码release: rpm自身发行号,与源码的发行号无关,仅用于标识对rpm包不同制作的修订,同时release还包含此包适用的OSarch:适用的硬件平台x86: i386, i486, i586, i686 等x8

3、6_64: x86_64powerpc: ppcnoarch:依赖于虚拟机2.2、 rpm分包机制一个程序体积可能很大,为了方便管理,rpm包管理器依据功能性差异,将一 个程序打包成若干个包主包(核心包):其name与源程序一致,如httpd-2. 2.15-45. el6. centos. x86_64, rpm子包:httpd-devel-2. 2. 15-45. el6. centos. x86_64. rpmhttpd-tools-2. 2. 15-45. el6. centos. x86_64. rpm区别:程序X依赖于*y和z,若x是基于rpm包安装,则x依赖的是y和z的 核心包;

4、若x基于源码编译安装,则x依赖的是y和z的开发包2.3、 获取rpm包的途径官方发行的光盘、官方站点、镜像站点mirros. 163. commirrors, sohu. com项目的官网:源代码、rpm包第三方机构或个人制作并公开发布许多rpm包rpmf ind. netrpm. pbone. net额外程序包的可靠途径:EPEL,为Federa所维护2.4、 rpm包的合法性验证rpm包的合法性包括来源合法性和包的完整性两个方面包的制作者使用单向加密算法提取出原始数据的特征码,并使用自己的私钥加 密这段特征码,附加在原始数据之后验证过程:前提:必须有可靠机制获取到包制作者的公钥 使用包制作

5、者的公钥解密那段加密的特征码,能解密则说明来源合法使用与制作者同样的单向加密算法提取数据的特征码,并与解密得到的特征 码比对,相同则说明包完整性没问题2.5、 rpm包管理器的使用验证程序包的合法性我们在安装rpm程序包之前,一般要检验其合法性,尤其是从非官方或非权威 站点获得的包。当然,不检验包的合法性并不影响包的安装导入制作者的公钥rpm -import /path/to/key_file若已导入公钥,rpm安装程序包的过程中会自动检查其合法性手动检查:rpm -K /path/to/pkg_namerpm -checksig /path/to/pkg_name不检查包完整性:rpm -K

6、 -nodigest /path/to/pkg_name不检查包的来源合法性:rpm -K -nosignature /path/to/pkg_namerpm -qa gpg-pubkey*#显示所有已导入的gpg格式的公钥rpm -qi gpg-pubkey-NMffi#显示密钥的详细信息9*1 rootlocalhost mount /dev/cdrom /media #挂载 centos 官网发行2的光盘3 Lrootlocalhost Is /media ttcentos 光盘中自带了许多 rpm 包,位4于Packages目录中5 CentOS_BuiIdTag EULA image

7、sPackagesrepodataRPM-GPG-KEY-6 CentOS-Debug-6 RPM-GPG-KEY-CentOS-Testing-67 EFI GPL isolinux RELEASE-NOTES-en-US. html RPM-GPG-KEY-8 CentOS-6 RPM-GPG-KEY-CentOS-Security-6 TRANS. TBL9 rootlocalhost cd /media/Packages/10Lrootlocalhost Packages# Is11.121ibreoff ice-langpack-et-4. 0. 4. 2-9. el6. x86_6

8、4. rpm zlib-devel-131. 2. 3-29. el6. x86_64. rpm141 ibreoff ice-langpack-eu-4. 0. 4. 2-9. el6. x86_64. rpm zsh-4. 3. 10-157. el6. x86_64. rpm16rootlocalhost Packages# rpm -ivh 一一test samba-3. 6. 9-17164. el6. x86_64. rpm#测试安装18warning: samba-3. 6. 9-164. el6. x86_64.rpm: Header V3 RSA/SHA119Signatur

9、e, key ID cl05b9de: NOKEY20#警告:没有公钥,无法验证包的合法性21Preparing. . . # 100%22rootlocalhost Packages# rpm -import ./RPM-GPG-KEY-CentOS-6#23导入光盘中提供的公钥24rootlocalhost Packages# rpm -ivh 一一test samba-3. 6. 9-25164. el6. x86_64. rpm#可以看到警告信息已消除,验证通过26Preparing. . . # 100%27rootlocalhost Packages# rpm -K samba-3

10、. 6. 9-164. el6. x86_64. rpm #28还可手动检查29samba-3. 6. 9-164. el6. x86_64. rpm: rsa shal (md5) pgp md5 OK30rootlocalhost Packages# rpm -qa gpg-pubkey* #查看已导入的所有31公钥32gpg-pubkey-cl05b9de-4e0fd3a333FrootSlocalhost Packages# rpm -qi gpg-pubkey-clO5b9de-4e0fd3a3#34查看指定公钥的详细信息35Name : gpg-pubkey Relocations

11、: (not relocatable)Version : cl05b9de Vendor: (none)Release : 4e0fd3a3Build Date: Wed 28 Oct 2015 08:31:40 PM CSTInstall Date: Wed 28 Oct 2015 08:31:40 PM CSTBuild Host: localhostGroup : Public Keys Source RPM: (none)Size : 0 License: pubkeySignature : (none)Summary : gpg(CentOS-6 Key (CentOS 6 Offi

12、cial Signing Key) <centos- 6-keycentos. org>)Description :BEGIN PGP PUBLIC KEY BLOCKVersion: rpm-4. 8. 0 (NSS-3)mQINBE4P06NffiEACqn48FZgYkG2QrtUAW58H6LpDYEcTcv4CIFSkgs6dJ9TavCW安装程序包rpm -i option /path/to/package_file常用选项:-i: install-h:安装时显示hash码,用来表示安装进度-V:显示执行过程-VV:详细显示执行过程-test:仅作测试,并不真正安装一n

13、odeps:忽略依赖关系-replacepkgs:重新安装。如果原有的配置文件作了修改,重装可能不执行 替换,而是将新生成的配置文件重命名为X.rpmnew常用组合选项:-ivh如果依赖于其它包:解决依赖关系使用一nodeps选项忽略依赖关系,能安装上,但可能无法运行rootlocalhost Packages# rpm -ivh samba-3. 6. 9-164. el6. x86_64. rpmPreparing. . . # 100%1:samba# 100%123456789Lrootlocalhost Packages# rpm -ivh 一一test mysql-5. 1. 71

14、-1. el6. x86_64, rpmerror: Failed dependencies:提示需要先解决依赖关系libmysqlclient. so. 16() (64bit) is needed by mysql-5. 1. 71-1. el6. x86_64libmysqlclient. so. 16(libmysqlclient_16)(64bit) is needed by mysql-5. 1. 71-1. el6. x86_64libmysqlclient_r. so. 16 () (64bit) is needed by mysql-5. 1. 71-1. el6. x86_

15、64libmysqlclient_r. so. 16(libmysqlclient_16)(64bit) is needed by mysql-5. 1. 71-1. el6. x86_64mysql-libs = 5. 1. 71-1. el6 is needed by mysql-5. 1. 71-1. el6. x86_64rootSlocalhost Packages# rpm -ivh mysql-libs-5. 1. 71一:J. el6. x86.64. rpm #安装被依赖的包14Preparing. . . # 100%1:mysql-1ibs #16100%rootloca

16、lhost Packages# rpm -ivh mysql-5. 1. 71-1. el6. x86_64.rpmPreparing. . . # 100%1100%卸载程序包rpm -e optionj pkg_name常用选项:-e: erase-v, -vv, -test, nodeps如果被其它包依赖:将依赖于此包的所有包都卸载忽略依赖关系,能卸教,但可能造成其它包无法正常使用如果包的配置文件被修改,卸载时此文件将会被重命名(X.rpmsave)并保留Erootlocalhost Packages# rpm -e mysql-libs#卸载指定的包error: Failed depe

17、ndencies:#提示该包被mysql包依赖,无法卸载libmysqlclient. so. 16()(64bit) is needed by (installed) mysql- 1 5. 1. 711. el6. x86_64? libmysqlclient. so. 16(libmysqlclient_16)(64bit) is needed by g (installed) mysql-5. 1. 71-1. el6. x86_64.libmysqlclient_r. so. 16()(64bit) is needed by (installed) mysql-4一. 5. 1. 7

18、1-1. el6. x86_64 Q6 libmysqlclient_r. so. 16(libmysqlclient_16)(64bit) is needed by7 (installed) mysql-5. 1. 71-1. el6. x86_64mysql-libs = 5. 1. 71-1. el6 is needed by (installed) mysql-5. 1. 71-:l.el6. x86 649一_? zLrootlocalhost Packages# rpm -e -nodeps mysql-libs#忽略依赖关系强制卸载rootlocalhost Packages#

19、mysql#可以看到 mysql 已无法使用了mysql: error while loading shared libraries: libmysqlclient. so. 16: .cannot open shared object file: No such file or directory 14rootSlocalhost Packages# vim /etc/samba/smbusersrootlocalhost Packages# rpm -e samba#卸教 sambawarning: /etc/samba/smbusers saved as /etc/samba/smbus

20、ers. rpmsave #可以看到,修改后的配置文件在程序卸载后会保留升级程序包:新版本取代老版本rpm -U/-F option /path/to/packagedile常用选项:-u:升级或安装。不管有无老版本,都安装新版本-F:纯升级。有老版本才安装新版本,没有的话就不安装 一force:强制升级,可能导致依赖此包的程序无法正常运行-v, h常用组合选项:TJvh, -Fvh注意:不应该对内核执行升级操作,对于新内核应该直接安装,系统支持多内 核并存,新内核若有兼容性问题还能用回老内核。9 *rootlocalhost "# rpm -q zshpackage zsh is

21、not installed#显示2$11 没有安装rootlocalhost rpm -Fvh /media/Packages/zsh-4. 3. 10-7. el6.x86_64.rpm #没看老版本,不安装1 rootlocalhost rpm -Uvh /media/Packages/zsh-4. 3. 10-2 7. el6. x86_64. rpm #不管有无老版本,都安装新版本3 Preparing. . . # 100%4 l:zsh # 100%5 rootlocalhost rpm -q mysql6 mysql-5. 1. 71-1. el6. x86_647 Lrootl

22、ocalhost rpm -Fvh mysql-5. 1. 73-5. el6_6. x86_64. rpm #安 8装新版本的mysql9 error: Failed dependencies:提示依赖新版本的 mysqlTibs 包lOmysql-libs = 5. 1. 73-5. el6_6 is needed by mysql-5. 1. 73-115. el6_6. x86_6412rootlocalhost rpm -Fvh mysql-libs-5. 1. 73-5. el6_6.x86_64.rpm13error: Failed dependencies:14mysql-li

23、bs = 5. 1. 71-1. el6 is needed by (installed) mysql-5. 1. 71-151. el6. x86_6416#这里出现了一个问题:要升级mysql包,需要先升级其所依赖的mysqb171ibs包,而mysqlTibs包无法升级,因为它被现有mysql包依赖,故这里18只能先卸载19LrootSlocalhost rpm -e -nodeps mysql-libs20Lrootlocalhost rpm -ivh mysql.一libs-5. 1. 73-5. el6_6, x86_64. rpm21Preparing. . . # 100%22

24、1:mysql-1ibs #23100%24rootlocalhost ”# rpm -Fvh mysql-5. 1. 73-5. el6_6. x86_64. rpmPreparing. . . # 100%1:mysql# 100% rootlocalhost rpm -q mysqlmysql-5. 1. 73-5. el6_6. x86_64#已升级至新版本查询操作rpm -q option. pkg_namej常用查询操作:查询某包是否已安装:rpm -q pkg_name查询所有已安装的包:rpm -qa可结合grep命令使用,查询符合指定范式的包:rpm -qa grep 

25、9;PATTERN'查询包的描述信息:rpm -qi pkg_name查询某包生成了哪些文件:rpm -ql pkg_name查询某包生成了哪些配置文件:rpm -qc pkg_name查询某包生成了哪些帮助文件:rpm -qd pkg_name查询程序包相关的脚本:rpm -q scripts pkg_name脚本有四类:preinstall:安装前脚本postinstall:安装后脚本preuninstall:卸载前脚本postuninstall:卸载后脚本查询某个文件由哪个包安装生成:rpm -qf /path/to/somefile对尚未安装的包进行查询:rpm option

26、/path/to/pkg_fi 1 e,可用组合选 项有一qpi,-qpl,-qpc, -qpd 等9*1 rootlocalhost Packages# rpm -q samba#查询 samba 是否已安装2 samba-3. 6. 9-164. el6. x86_643 rootlocalhost Packages# rpm -qa#查询所有已安装的包4 pulseaudio-module-gconf-O. 9. 21-14. el6_3.x86_645 db4-devel-4. 7. 25-18. el6_4. x86_646 libxklavier-4. 0-9. el6. x86_

27、647 .8 rootlocalhost Packages# rpm -qa grep 'mysql'9 mysql-libs-5. 1. 71-1. el6. x86_6410mysql-5. 1. 71-1. el6. x86_6411 rootlocalhost Packages# rpm -ql samba#查看 samba 包生成 了哪些12文件13/etc/logrotate. d/samba14/etc/openldap/schema15/etc/openldap/schema/samba, schema16/etc/pam. d/samba17/etc/rc.

28、d/init. d/nmb18/etc/rc. d/init. d/smb19/etc/samba/smbusers20/usr/bin/eventlogadm21/usr/bin/mksmbpasswd. sh22/usr/bin/smbstatus23/usr/1ib64/samba/auth24.25rootlocalhost Packages# rpm -qc samba#查看 samba 包生成了哪些26配置文件27/etc/logrotate. d/samba28/etc/pam. d/samba29/etc/samba/smbusers30rootlocalhost Packag

29、es# rpm -qd samba#查看 samba 包生成了哪些31帮助文件32/usr/share/doc/samba-3. 6. 9/LDAP/README33.34/usr/share/man/man7/samba. 7. gz3o«36rootlocalhost Packages# rpm -qf /etc/openldap/schema#查询指定37文件由哪个包安装生成38samba-3. 6. 9-164. el6. x86_64rootlocalhost Packages# rpm -qpi httpd-2. 2. 15-29. el6. centos. x86_64. rpm #安装httpd包前查看其详细信息Name : httpdRelocations: (not relocatable)Version : 2. 2. 15Vendor: CentOS用校验程序包:用于检查包安装生成的文件属性是否发生变化rpm -V pkg_namerootlocalhost '# vim /etc/httpd/conf/httpd. confrootlocalhost rpm -V httpdS 5 T c /etc/httpd/conf/httpd. conf#我们修改了 httpd配置文件,可以看到其大小、MD5校验码及修改时间均发生 了改变,其

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论