RPM 与 YUM 相关

程序包管理是在电脑中自动安装、配制、卸载和升级软件包的工具组合,在各种系统软件和应用软件的安装管理中均有广泛应用。

在Linux发行版中,几乎每一个发行版都有自己的软件包管理系统。常见有: 管理deb软件包的dpkg以及它的前端apt(使用于Debian、Ubuntu)。 rpm以及它的前端yum(使用于Fedora)、前端ZYpp(使用于openSUSE)、 前端urpmi(使用于Mandriva Linux、Mageia)等。使用软件包管理系统将大大简化在Linux发行版中安装软件的过程。其他软件包管理系统有ArchLinux中使用的Pacman,Gentoo使用的基于源代码的Portage和Mac系统下的Homebrew等。

一、rpm

1.1、rpm程序包的命名规则

  • Name:软件包名
  • Major:主版本号,如软件的框架做重大更改后才会修改
  • Minor:次版本号,如软件添加了某些新功能后才会修改
  • 第一个Release:发行号,如软件修复了某些bug后才会修改
  • 第二个Release:修订号,如源码未做过修改,发行商对发行的RPM包进行再次发行后才会修改
  • Arch:硬件平台架构

1.2 rpm程序包管理的主要功能是安装,升级,卸载,查询,验证等。

1.2.1 通用选项

  • -v:显示安装的详细信息
  • -vv:显示安装时的更详细信息
  • -h:通过50个#号来显示安装进度

1.2.2 常用查询选项

rpm {-q|--query} [select-options] [query-options]

  • [select-options]
    • PACKAGE_NAME:包名
    • -a:查询已安装的包
    • -p PACKAGE_FILE:对未安装包的详细信息查询,与[query-options]配合使用
    • -f或--file FILE:查询某文件有哪个包生成
  • [query-options]
    • --changelog:查询RPM包的变更信息
    • -c, --configfiles:显示包的配置文件
    • -d, --docfiles:显示包的帮助文件
    • -i, --info:显示包的信息,包含包名,版本和描述
    • -l, --list:显示包中的所有文件
    • --provides:列出包提供的功能
    • -R或--requires:列出这个包所依赖的功能
    • --scripts:列出包安装和卸载时运行的特定脚本
      • preinstall: 安装前执行的脚本
      • postinstall: 安装后执行的脚本
      • preuninstall: 卸载前执行的脚本
      • postuninstall: 卸载后执行的脚本

查询包生成的配置文件

  1. [[email protected]_6_N1 ~]# rpm -ql cronolog
  2. /usr/bin/cronosplit
  3. /usr/sbin/cronolog
  4. /usr/share/doc/cronolog-1.6.2
  5. /usr/share/doc/cronolog-1.6.2/AUTHORS
  6. /usr/share/doc/cronolog-1.6.2/COPYING
  7. /usr/share/doc/cronolog-1.6.2/ChangeLog
  8. /usr/share/doc/cronolog-1.6.2/NEWS
  9. /usr/share/doc/cronolog-1.6.2/README
  10. /usr/share/doc/cronolog-1.6.2/TODO
  11. /usr/share/info/cronolog.info.gz
  12. /usr/share/man/man1/cronolog.1m.gz
  13. /usr/share/man/man1/cronosplit.1m.gz

查询某包是否安装

  1. [[email protected] Packages]# rpm -q zsh
  2. package zsh is not installed

查询已安装的所有包

  1. [[email protected] Packages]# rpm -qa

查询某文件由哪个包安装生成的

  1. [[email protected] Packages]# rpm -qf /etc/fstab
  2. setup-2.8.14-20.el6_4.1.noarch

查询未安装包的相关信息与与[query-options]配合使用

  1. [[email protected] Packages]# rpm -qpi zsh-4.3.10-7.el6.x86_64.rpm
  2. [[email protected] Packages]# rpm -qpc zsh-4.3.10-7.el6.x86_64.rpm

查询RPM包的变更信息

  1. [[email protected] Packages]# rpm -q zsh --changelog
  2. * Mon Aug 05 2013 James Antill <james.antill@redhat.com> - 4.3.10-7
  3. - Change {NAME:OFFSET:LENGTH} substitution feature to ignore KSH_ARRAYS option.
  4. - Fixup tests.
  5. - Resolves: rhbz#820530

查询所提供的功能

  1. [[email protected] Packages]# rpm -q xz --provides
  2. xz = 4.999.9-0.5.beta.20091007git.el6
  3. xz(x86-64) = 4.999.9-0.5.beta.20091007git.el6

查询所依赖的功能

  1. [[email protected] Packages]# rpm -q xz --requires
  2. /bin/sh
  3. libc.so.6()(64bit)
  4. libc.so.6(GLIBC_2.2.5)(64bit)
  5. libc.so.6(GLIBC_2.3)(64bit)
  6. libc.so.6(GLIBC_2.3.4)(64bit)
  7. libc.so.6(GLIBC_2.4)(64bit)
  8. libc.so.6(GLIBC_2.6)(64bit)
  9. libc.so.6(GLIBC_2.7)(64bit)
  10. liblzma.so.0()(64bit)
  11. libpthread.so.0()(64bit)
  12. libpthread.so.0(GLIBC_2.2.5)(64bit)
  13. rpmlib(CompressedFileNames) <= 3.0.4-1
  14. rpmlib(FileDigests) <= 4.6.0-1
  15. rpmlib(PayloadFilesHavePrefix) <= 4.0-1
  16. rtld(GNU_HASH)
  17. xz-libs = 4.999.9-0.5.beta.20091007git.el6
  18. rpmlib(PayloadIsXz) <= 5.2-1

1.2.3 常用安装选项

rpm {-i|--install} [install-options] PACKAGE_FILE ...

  • [install-options]
    • --test    测试安装
    • --nodeps    忽略依赖关系
    • --replacepkgs    重新安装RPM包
    • --prefix NEWPATH  指定安装目录

软件包的安装

  1. [[email protected] Packages]# rpm -ivh zsh-4.3.10-7.el6.x86_64.rpm
  2. warning: zsh-4.3.10-7.el6.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
  3. Preparing... ########################################### [100%]
  4. 1:zsh ########################################### [100%]

软包重新安装

  1. [[email protected] Packages]# rpm -ivh zsh-4.3.10-7.el6.x86_64.rpm --replacepkgs
  2. Preparing... ########################################### [100%]
  3. 1:zsh ########################################### [100%]

测试安装

  1. [[email protected] Packages]# rpm -ivh zsh-4.3.10-7.el6.x86_64.rpm --test
  2. Preparing... ########################################### [100%]
  3. [[email protected] Packages]# rpm -q zsh
  4. package zsh is not installed

忽略依赖关系

  1. [[email protected] Packages]# rpm -ivh gcc-4.4.7-11.el6.x86_64.rpm
  2. error: Failed dependencies:
  3. cloog-ppl >= 0.15 is needed by gcc-4.4.7-11.el6.x86_64
  4. cpp = 4.4.7-11.el6 is needed by gcc-4.4.7-11.el6.x86_64
  5. [[email protected] Packages]# rpm -ivh gcc-4.4.7-11.el6.x86_64.rpm --nodeps
  6. Preparing... ########################################### [100%]
  7. 1:gcc ########################################### [100%]

1.2.4 常用卸载选项

rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...

卸载程序,如卸载程序的配置文件被修改过,卸载是被更改的配置文件将被重命名为***.rpmsave

  1. [[email protected] Packages]# rpm -e zsh
  2. warning: /etc/zlogin saved as /etc/zlogin.rpmsave

1.2.5 常用升级选项

rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...

rpm {-F|--freshen} [install-options] PACKAGE_FILE ...

  • [install-options]
    • --oldpackage:降级安装
    • --force: 忽略冲突,强制执行过程

升级安装,U 选项:如果有较旧版本程序包,则升级安装;否则,则执行安装操作

  1. [[email protected] Packages]# rpm -Uvh zsh-4.3.10-7.el6.x86_64.rpm
  2. Preparing... ########################################### [100%]
  3. 1:zsh ########################################### [100%]
  4. [[email protected] Packages]# rpm -q zsh
  5. zsh-4.3.10-7.el6.x86_64

升级安装, F 选项:如果有较旧版本程序包,则升级安装;否则,中止

  1. [[email protected] Packages]# rpm -q bash
  2. bash-4.1.2-15.el6_4.x86_64
  3. [[email protected] Packages]# rpm -Fvh bash-4.1.2-29.el6.x86_64.rpm
  4. Preparing... ########################################### [100%]
  5. 1:bash ########################################### [100%]
  6. [[email protected] Packages]# rpm -q bash
  7. bash-4.1.2-29.el6.x86_64
  8. [[email protected] Packages]# rpm -Fvh zsh-4.3.10-7.el6.x86_64.rpm
  9. [[email protected] Packages]# rpm -q zsh
  10. package zsh is not installed

1.2.6 常用校验选项

rpm {-V|--verify} [select-options] [verify-options]

  • [select-options]
    • PACKAGE_NAME:包名
    • -a:查询已安装的包
    • -p PACKAGE_FILE:对未安装包的详细信息查询,与[query-options]配合使用
    • -f或--file FILE:查询某文件有哪个包生成
  • [verify-options]
    • --nosignature: 不检查来源合法性
    • --nodigest: 不检查完整性

对程序进行校验,/etc/zlogin更改后,校验信息如下

  1. [[email protected] Packages]# vim /etc/zlogin
  2. [[email protected] Packages]# rpm -V zsh
  3. S.5....T. c /etc/zlogin

开始的9个选项分别表示如下:

  1. S file Size differs
  2. M Mode differs (includes permissions and file type)
  3. 5 digest (formerly MD5 sum) differs
  4. D Device major/minor number mismatch
  5. L readLink(2) path mismatch
  6. U User ownership differs
  7. G Group ownership differs
  8. T mTime differs
  9. P caPabilities differ

后面的c选项位置有如下选项,被更改的文件类型:

  1. c %config configuration file.
  2. d %doc documentation file.
  3. g %ghost file (i.e. the file contents are not included in the package payload).
  4. l %license license file.
  5. r %readme readme file.

1.3 其他相关

为了验证程序包来源和合法性和完成性,安装的时候需要对程序包进行校验。密钥存放位置/etc/pki/rpm-gpg/

当有warning: zsh-4.3.10-7.el6.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY 提示时,可以导入光盘中的公钥或到官网下在相关公钥。

1.3.1 导入PUBKEY rpm --import PUBKEY ...

  1. [[email protected] Packages]# rpm -ivh zsh-4.3.10-7.el6.x86_64.rpm
  2. warning: zsh-4.3.10-7.el6.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
  3. Preparing... ########################################### [100%]
  4. 1:zsh ########################################### [100%]
  5. [[email protected] cdrom]# rpm --import RPM-GPG-KEY-CentOS-6
  6. [[email protected] Packages]# rpm -ivh zsh-4.3.10-7.el6.x86_64.rpm --replacepkgs
  7. Preparing... ########################################### [100%]
  8. 1:zsh ########################################### [100%]

1.3.2 PUBKEY的查询与删除   

  1. [[email protected] base]# rpm -q gpg-pubkey
  2. package gpg-pubkey is not installed
  3. [[email protected] base]# rpm --import /media/cdrom/RPM-GPG-KEY-CentOS-6
  4. [[email protected] base]# rpm -q gpg-pubkey
  5. gpg-pubkey-c105b9de-4e0fd3a3
  6. [[email protected] base]# rpm -q gpg-pubkey
  7. gpg-pubkey-c105b9de-4e0fd3a3
  8. [[email protected] base]# rpm -e gpg-pubkey-c105b9de-4e0fd3a3
  9. [[email protected] base]# rpm -q gpg-pubkey
  10. package gpg-pubkey is not installed

1.3.3 RPM数据库

为了能有效管理系统上的软件,RPM有一个数据库,存放在/var/lib/rpm文件夹下。RPM文件尝尝会安装,移除,升级等操作,某些动作可能导致RPM数据损坏,可以通过以下来初始化和重建

  1. [[email protected] ~]# rpm --initdb
  2. [[email protected] ~]# rpm --rebuilddb

二、yum

YUM全名Yellow dog Updater,是一个基于RPM包管理的字符前端软件包管理器。能够从指定的服务器自动下载RPM包并且安装,可以处理依赖性关系(安装A-->B,B-->C,B和C就需要一起安装),并且一次安装所有依赖的软件包,无需繁琐地一次次下载、安装。

2.1 一个程序有这么多的rpm包,为什么不打包在一个中呢?

  1. 为了重复利用既有的软件功能,因此很多软件都会以函数库的方式释放出部分功能,以方便其他软件的调用
  2. 节省磁盘空间,不必为了调用相应的库而把整个软件都安装上
  3. 安全,功能越多,BUG的可能性就越大

2.2 yum的相关命令

选项

  • --enablerepo=  启用repo
  • --disablerepo= 禁用repo    注意:优先级高于/etc/yum.repos.d/*.repo配置文件中定义的属性;
  • -y: 自动回答为yes
  • --nogpgcheck

列出所有仓库,程序包,包组

  1. yum repolist 列出所有仓库
  2. yum list all 列出所有的软件(包含未安装仓库上可用的)
  3. yum list installed 列出所有已安装的软件
  4. yum list available 列出仓库上的软件
  5. yum grouplist 列出包组

安装程序包

  1. yum install PACKAGE_NAME ... 安装程序包
  2. yum install PACKAGE-VERSION 如果要安装指定的版本的程序
  3. yum reinstall PACKAGE_NAME 重装指定的程序包

升级程序包

  1. yum update PACKAGE_NAME 升级程序包
  2. yum update PACKAGE-VERSION 如果有多个版本的升级包可用,且仅期望升级到指定版本:
  3. yum downgrade PACKAGE_NAME 降级
  4. yum check-update 检查可用升级

卸载程序包

  1. yum remove|erase PACKAGE_NAME 卸载程序包依赖于指定程序包的其它包,会被一并卸载

查询程序包

  1. yum list 列出所有包
  2. yum info PACKAGE_NAME 显示包的信息
  3. yum search KEYWORD 根据关键字模糊查询包名或包的sumary信息包含此KEYWORD的相关列表;
  4. yum provides|whatprovides /path/to/somefile 查询包所提供的功能

包组管理

  1. yum grouplist 显示所有包组
  2. yum groupinfo "GROUP_NAME" 显示某包组的相关信息:
  3. yum groupinstall "GROUP_NAME" 安装包组
  4. yum install @GROUP_NAME
  5. yum groupremove "GROUP_NAME" 卸载包组
  6. yum remove @"GROUP_NAME"
  7. yum groupupdate "GROUP_NAME" 升级包组:

安装本地rpm包

  1. yum localinstall /path/to/rpm_package_file ...
  2. yum install /path/to/rpm_package_file ... CentOS7上使用

yum导入PUBKEY,在/etc/yum.repos.d下新建sohu.repo

  1. [Sohu]
  2. name=SohuRepo
  3. baseurl=http://mirrors.sohu.com/centos/$releasever/os/$basearch
  4. gpgcheck=1
  5. gpgkey=http://mirrors.sohu.com/centos/6/os/x86_64/RPM-GPG-KEY-CentOS-6
  6. cost=900
  7. Downloading Packages:
  8. zsh-4.3.10-7.el6.x86_64.rpm                                                    
  9. warning: rpmts_HdrFromFdno: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
  10. Retrieving key from http://mirrors.sohu.com/centos/6/os/x86_64/RPM-GPG-KEY-CentO
  11. Importing GPG key 0xC105B9DE:
  12. Userid: "CentOS-6 Key (CentOS 6 Official Signing Key) <centos-6-key@centos.org>
  13.  From  : http://mirrors.sohu.com/centos/6/os/x86_64/RPM-GPG-KEY-CentOS-6
  14. Is this ok [y/N]: n

三、yum 客户端相关配置

主配置文件/etc/yum.conf

  • [main]
  • cachedir=/var/cache/yum/$basearch/$releasever    缓存存放路径,如安装包
  • keepcache=0    安装成功后是否保存缓存和包,默认1保存,0不保存
  • debuglevel=2    调试级别0-10,默认为2
  • logfile=/var/log/yum.log    日志目录
  • exactarch=1    默认为1,不会更新i686的包到i386的包
  • obsoletes=1
  • gpgcheck=1    是否检查GPG签名
  • plugins=1    是否支持插件,0关闭,1启用
  • installonly_limit=5
  • bugtracker_url=http://bugs.centos.org/set_project.php?project_id=19&ref=http://bugs.centos.org/bug_report_page.php?category=yum
  • distroverpkg=centos-release

接下来就是定义软件仓库位置的配置文件,目录为/etc/yum.repos.d,可以有1个或多个,文件由以下主要参数构成

  • [repository_ID]:在所有配置文件中必须唯一
  • name:一个通俗易懂的名字
  • baseurl:指向YUM仓库的链接
    • $releasever   This is replaced with the package‘s version, as listed in distroverpkg. This defaults to the version of the redhat-release package.
    • $arch  This is replaced with your system‘s architecture, as listed by os.uname() in Python.
    • $basearch   This is replaced with your base architecture. For example, if $arch=i686 then $basearch=i386.
    • $YUM0-9    This is replaced with the value of the shell environment variable of the same name. If the shell environment variable does not exist, then the configuration file variable will not be replaced.
    • enabled:是否启用YUM仓库,0启用,1禁用
    • gpgcheck:GPG签名检查,1启用,0不检查    http://mirrors.sohu.com/centos/6/os/x86_64/
    • gpgkey:Public Key存放位置
    • cost:开销默认为1000,越小优先级越高
时间: 2024-11-05 11:36:20

RPM 与 YUM 相关的相关文章

Linux系统程序包的管理功能相关命令rpm与yum的使用

一.软件包管理核心功能 1.软件包制作 2.包管理器:打包,安装.升级.卸载.查询及校验 3.工具:rpm .deb 4.程序包的组成部分: 二进制程序:/bin, /sbin,/ /usr/bin, /usr/sbin, 库文件:/lib64, /usr/lib64 配置文件:/etc 帮助文件:manual, info 5.rpm包管理 rpm:数据库  /var/lib/rpm rpmbuild:建立软件管理数据库 rpm包默认为二进制格式,有rpm包作者下载源码程序,编译完成后,制作成r

Linux基本功杂记——[010]——{rpm、yum及源码方式管理软件包}

一.yum配置文件位置 /etc/yum.conf /etc/yum.repos.d/*.repo 二.yum常用命令 install pkgs reinstall pkgs update pkgs update-to check-update erase pkgs list installed/updates info pkgs provides pkgs deplist pkgs repolist all/enabled/disabled history [info num] clean a

包管理工具rpm和yum的用法

包管理工具rpm和yum的用法 一.rpm的用法 rpm原本是Rde Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎.逐渐收到其他发行版的采用,RPM套件管理方式的出现,让Linux易于安装.升级,间接提升了Linux的适用性. rpm用法:rpm [OPTION...] 1.rpm安装软件包,后面需要跟上程序包文件的绝对路径或相对路径 常用选项: -v:显示指令的执行过程 -vv:详细显示指令执行过程,便于排错 -h:以#号显示程

centos的软件安装方法rpm和yum

centos的软件安装大致可以分为两种类型: [centos]rpm文件安装,使用rpm指令  类似[ubuntu]deb文件安装,使用dpkg指令 [centos]yum安装   类似[ubuntu]apt-get安装 rpm命令 (一)查询系统装已经安装的软件信息 对于一个rpm包来说,都是有"-"和"."构成的,基本上有以下几部分组成: * 包名 * 版本信息 * 发布版本号 * 运行平台,当出现noarch,代表的是软件可以平台兼容 1)查询系统中已经安装的

总结rpm和yum实现程序包的管理功能

程序包的管理器,其功能有打包.后续的包管理(安装,升级,卸载,查询及校验)       deb:debian系列系统        rpm:功能的提升使得rpm包管理器成为linux主流的标准                程序包的组成四部分:            1.二进制程序:程序的源代码存放/bin, /sbin,/ /usr/bin, /usr/sbin, 2.库文件:某些         二进制程序可能会被多个程序包调用,将这些被多个调用的称               之为库文件存

tar、rpm和yum总结

#tar.rpm和yum总结##tar工具    tar是Tape ARchive的缩写,原意是磁带归档,进行数据备份.在linux中,用tar命令,可以把一大堆的文件和目录全部打包成一个文件,方便网络传输和备份数据.    tar不仅可以打包多个文件和目录,还可以对打包完的数据包进行压缩,进一步提升传输和备份质量.###选项        -c:设置新的备份文件        -t:列出备份文件的内容        -f:指定备份文件        -r:追加,添加文件到已经压缩的文件    

linux CentOS7 中安装包管理:rpm 、yum及源码包安装使用

一. 安装软件包的三种方法 yum ---python rpm工具 yum工具 源码包 二. rpm包介绍 设置光驱并挂载: [[email protected] ~]# mount /dev/cdrom /mntmount: /dev/sr0 写保护,将以只读方式挂载 [[email protected] ~]# ls /mntEULA    isolinux  repodata                      TRANS.TBL GPL     LiveOS    RPM-GPG-

rpm和yum

rpm命令 (一)查询系统装已经安装的软件信息 对于一个rpm包来说,都是有"-"和"."构成的,基本上有以下几部分组成: * 包名 * 版本信息 * 发布版本号 * 运行平台,当出现noarch,代表的是软件可以平台兼容 1)查询系统中已经安装的软件 rpm -qa 2)查询一个已经安装的文件属于哪个软件包: rpm -qf 文件名的绝对路径 3)查询已安装软件包都安装到何处: 软件名定义是:rpm包去除平台信息和后缀后的信息 rpm -ql 软件名 4)查询一个

rpm和yum程序包的管理

rpm和yum程序包的管理 rpm简介: RPM,是RPM Package Manager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux.S.u.S.E.以及Turbo Linux等Linux的分发版本都有采用,可以算是公认的行业标准了. 程序包管理: 内核功能:进程管理.内存管理.网络协议栈.驱动程序.... 应用程序:由二进制程序.管理程序文件.配置文件.文档文件.帮助手册文件组成 程序包的组成部分: 二进