软件安装与管理--rpm、yum

一、rpm包管理器

1、介绍rpm

在linux系统中,服务是要通过程序来提供的,通过调用API接口编写好之后的源码包文件对于普通用户来说,安装起来较为繁琐。于是人们将源码在编译安装的环境下制作了更加高级的rpm包,它的最大特点是避免了对原软件包的编译安装,以更加简便的安装方式提供给用户。可以使用rpm(RedhatPackage Manager)管理器来进行安装.

rpm包格式

2、rpm包管理器

<1>安装

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

rpm -i FILE..

             -i:表示安装        
             -v:输出详细过程
             -h:以进度条的方式显示安装过程

常用选项

             --test:测试安装,不进行实际安装
             --nodeps:忽略依赖关系安装
             --replacepkgs:重新安装
             --force:强制安装

<2>升级

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

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

rpm -U FILE..

             -U:安装或者升级
             -F:仅升级
             -v:输出详细过程
             -h:以进度条的方式显示安装过程

常用选项

             --oldpackage:降级成旧版本
             --force:强制升级到新版本

<3>卸载

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

rpm -e FILE..

常用选项

             -allmatches:卸载所有匹配指定程序包名称的程序包的各版本
             --nodeps:忽略依赖关系卸载程序包
             --test:测试卸载程序包

<4>查询

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

              -q file.rpm:查询指定的rpm包是否安装

[select-options]

             -p:查询未安装的包的信息
             -a,--all:查询已安装的所有程序包
             -f FILE:查询指定的文件由哪个程序包安装生成
             --whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供
             --whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖

[query-options]

             -c: 查询程序的配置文件
             -d: 查询程序的文档
             -i: 查询程序的详细信息
             -l: 查看指定的程序包安装后生成的所有文件;
             --scripts:程序包自带的脚本片断
             -R: 查询指定的程序包所依赖的CAPABILITY;
             --provides: 列出指定程序包所提供的CAPABILITY;

*这里注释一下cpio的特殊用法

示例:如果删除了一个rpm包的程序文件,而又不想重新安装时还原原有的配置文件,可以选择只安装rpm包中的程序文件。

步骤1、查看rpm安装包的文件列表

[[email protected] Packages]# rpm2cpio tree-1.5.3-3.el6.x86_64.rpm | cpio -t
./usr/bin/tree
./usr/share/doc/tree-1.5.3
./usr/share/doc/tree-1.5.3/LICENSE
./usr/share/doc/tree-1.5.3/README
./usr/share/man/man1/tree.1.gz
132 blocks

步骤2、解压包内文件

[[email protected] ~]# rpm2cpio tree-1.5.3-3.el6.x86_64.rpm | cpio -id
132 blocks

步骤3、移动程序文件

[[email protected] ~]# cp usr/bin/tree /usr/bin

<5>包校验

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

注:[select-options]与上不同,不予列出

下面介绍俩个常用的检查机制

▲合法性校验:rpm --import Public_key

[[email protected] ~]#rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[[email protected] ~]#rpm -ivh zsh-5.0.2-14.el7.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:zsh-5.0.2-14.el7                 ################################# [100%]

安装过程不提示警告

补充:导入密钥之后,如果再删除之,再安装就会提示警告信息

[[email protected] ~]#rpm -qa gpg*
gpg-pubkey-f4a80eb5-53a7ff4b
gpgme-1.3.2-5.el7.x86_64
[[email protected] ~]#rpm -e gpg-pubkey-f4a80eb5-53a7ff4b
[[email protected] ~]#rpm -ivh zsh-5.0.2-14.el7.x86_64.rpm 
warning: zsh-5.0.2-14.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:zsh-5.0.2-14.el7                 ################################# [100%]

▲完整性校验rpm -K file.rpm

[[email protected] ~]#echo ‘ ‘ > zsh-5.0.2-14.el7.x86_64.rpm 
[[email protected] ~]#rpm -K zsh-5.0.2-14.el7.x86_64.rpm 
error: zsh-5.0.2-14.el7.x86_64.rpm: not an rpm package

检查出现错误

<6>数据库维护

系统上的rpm包依靠一个数据库(var/lib/rpm/)来维护,一旦rpm数据库删除,系统上关于包的任何操作都将无法进行,因为程序包的操作都是由数据库来维护的。

rpm --initdb: 创建数据库

rpm --rebuilddb:创建数据库索引

[[email protected] /var/lib/rpm]#rm -rf *
[[email protected] /var/lib/rpm]#rpm -q bash
package bash is not installed
[[email protected] /var/lib/rpm]#rpm --initdb
[[email protected] /var/lib/rpm]#ls
Basenames     __db.001  __db.003  Group       Name          Packages     Requirename  Sigmd5
Conflictname  __db.002  Dirnames  Installtid  Obsoletename  Providename  Sha1header   Triggername
[[email protected] /var/lib/rpm]#rpm -q bash
package bash is not installed

上面例子证明:即使使用rpm --initdb恢复数据库,也是无济于事,因为其中并没有rpm包的数据息。友情提示:危险操作,切勿模仿 

3、yum机制及其使用

二、yum包管理器

1、介绍yum

前面提到rpm的安装,但是因为库调用的原因,各个软件包之间会存在依赖条件,为了解决这个问题,出现了yum(Yellow dog Updter, Modified),作为rpm的前端程序,可自动处理依赖性关系(即当一个包依赖到另一个包时,自动安装对应的包)

2、yum工作原理

yum的工作模式分为俩部分:yum服务器端,client的yum工具。

◆yum服务器端存放着全部rpm包,以及特定的数据库文件来索引rpm包和记录rpm包之间的依赖关系。

◆client端每次调用yum命令的时候,通过解析/etc/yum.repos.d配置文件中的URL找到yum服务器。并且yum会定期去更新yum服务器上的rpm包的元数据和依赖关系信息到本地(/var/cache/yum/),每次使用yum操作rpm包时,根据数据库里信息确定安装包的名字,版本号,所需要的依赖包等,然后再去yum服务器实现操作。

工作原理示例图

3、配置yum源

      yum源配置格式      

[repositoryID]

name=Some name for this repository

baseurl=url://path/to/repository/

enabled={1|0}

gpgcheck={1|0}

gpgkey=URL

 URL书写格式  

ftp://

http://

file:///

<1>本地

         ###新建cdrom目录
         [[email protected] ~]#mkdir /media/cdrom
         ####挂载光盘文件到目录下
         [[email protected] ~]#mount /dev/cdrom /media/cdrom/
         mount: /dev/sr0 is write-protected, mounting read-only
         ####包文件就在Packages中,repodata父目录即为yum源目录
         [[email protected] ~]#cd /media/cdrom/
         [[email protected] /media/cdrom]#ls
         CentOS_BuildTag  EULA  images   LiveOS   repodata  RPM-GPG-KEY-CentOS-Testing-7
         EFI   GPL   isolinux  Packages  RPM-GPG-KEY-CentOS-7  TRANS.TBL
         ####新建yum配置文件
         [[email protected] /media/cdrom]#cd /etc/yum.repos.d/
         [[email protected] /etc/yum.repos.d]#ls
         CentOS-Base.repo.bak  CentOS-Debuginfo.repo  CentOS-Media.repo CentOS-Vault.repo
         CentOS-Base.repo  CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo
         [[email protected] /etc/yum.repos.d]#vim base.repo  ###注意:要先移除原来的repo文件
         [base]
         name=Local yum repository
         baseurl=file:///media/cdrom
         gpgcheck=1              ####此处如果gpgcheck=0的话,可以不写gpgkey 
         enabled=1 
         gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

<2>远端Server

如果虚拟机支持联网的话,可以直接使用网络上的yum源

         ####直接在/etc/yum.repo下建立配置文件即可
         [[email protected] /etc/yum.repos.d]#vim base2.repo
         ####此处给出示例 
         [base2]
         name=Server yum repository
         baseurl=http://10.1.0.1/cobbler/ks_mirror/7/
         gpgcheck=1
         enabled=1
         gpgkey=http://10.1.0.1/cobbler/ks_mirror/7/RPM-GPG-KEY-CentOS-7

4、yum命令

      yum [options] [command] [package ...]

<1>显示仓库列表

yum repolist

<2>显示程序包

yum list {available|installed|updates}

  • <3>安装升级
  • yum install package...
  • yum apdate package...
  • yum downgrade package..
  • <4>查看包的详细信息
  • yum info package...
  • <5>删除程序包
  • yum remove package...
  • <6>构建缓存
  • yum makecache
  • <7>清理缓存
  • yum clean [ metadata | all ]
  • <8>搜索
  • yum search Key_word
  • <9>查看yum事务历史
  • yum history
  • yum history undo # :可以撤销某个事物历史的所有安装包,类同卸载
  • <10>包组的查看
  • yum gruplist
  • <11>包组的安装
  • yum groupinstall group...
  • <12>包组的升级
  • yum groupupdate group..
  • <13>包组的卸载
  • yum groupremove group...
时间: 2024-10-12 03:30:55

软件安装与管理--rpm、yum的相关文章

Linux软件安装与管理

软件安装和管理软件包1.bin文件.bin2.rpm包3.源码压缩包 安装软件的步骤:    1.检查是否已经安装         rpm -qa | grep jdk    2.下载软件包    3.安装        依赖 rpm 包,已经编译之后的应用程序. rpm命令: 1.安装rpm -i /PATH/TO/PACKAGE_FILE    -h: 以#显示进度:每个#表示2%;     -v: 显示详细过程    -vv: 更详细的过程    rpm -ivh /PATH/TO/PAC

程序包管理rpm,yum用法解析及自动化部署apache server实战,让您轻松拥有apache网站!

程序包管理器rpm,yum用法及apache httpd服务的自动化部署 程序包管理? 通常来说在windows中将需要安装的程序,程序名.exe下载下来然后点击setup的安装程序或直接点击程序包,下一步下一步即可.而Linux中程序包不是exe,不同的主流发行版有着不同的程序包管理机制.比较主流的主要是rpm程序包管理器和deb程序包管理. 这里要区别: 包名(PACKAGEFILE): rpm包程序文件的全名程序名(PACKAGENAME): rpm包不带版本号的程序名,比如QQ而不是QQ

linux程序包管理rpm,yum和编译安装以及冒泡排序练习

linux程序包管理: API:Application Programming Interface POSIX:Portable OS 程序源代码--> 预处理--> 编译--> 汇编--> 链接 静态编译: 共享编译:.so ABI:Application Binary Interface Windows与Linux不兼容 ELF(Executable and Linkable Format) PE(Portable Executable) 库级别的虚拟化: Linux: WIN

Linux软件包管理{rpm|yum|源码包}2015082901

CentOS软件包管理 Linux程序安装有三种方式: 1.  二进制包安装 a.RPM b.YUM 2.  源码包安装 (1)二进制包管理: RPM CentOS上的二进制包为rpm格式,并且rpm软件包管理程序也叫做rpm(RPM is Package Manager) RPM包管理方式的优点是:安装简单方便,因为软件已经编译完成打包完毕,安装只是个验证环境和解压的过程.此外通过RPM方式安装的软件,RPM工具都会记录软件的安装信息至数据库中(/var/lib/rpm),这样方便了软件日后的

第六天 软件安装和管理

14.1 RPM 软件包管理器 redhat package manager i686 32位 x86_64 64位 noarch 不区分架构 脚本代码之类 安装RPM 软件包 14.2单一软件包安装 rpm -ivh 软件包 卸载 rpm -e 软件名 rpm中软件名唯一 更新 rpm -Uvh 查询 rpm -q 已安装软件包 rpm -qa | grep ssh 所有|筛选 rpm -ql vsftpd // 查询软件已安装文件及目录 rpm -qf /usr/bin/tree //根据文

Linux 系统下软件安装与管理

一.二进制(RPM)程序包概述 1.二进制程序包的组成部分: 二进制文件.库文件.配置文件.帮助文件 [[email protected] ~]# rpm -qpl/mnt/cdrom/Packages/httpd-2.4.6-40.el7.centos.x86_64.rpm /etc/httpd /etc/httpd/conf          #二进制程序包组成部分配置文件 /etc/httpd/conf.d -- /usr/sbin/httpd          #二进制程序包组成部分二进

Linux包管理 rpm yum

程序包管理       内核功能:进程管理   内存管理  网络协议栈  驱动程序            包管理器  : 打包  ,包管理 (安装,升级,卸载,查询及校验)          deb     debian            rpm     redhat   (redhat package manager)                rpm is package manager                     程序包的组成部分            二进制程序:  

rpm---linux软件安装与管理

linux的安装命令选项太多,整理一下,方便后期查找. 汇总: install: rpm -ivh 包全名 安装 upgrade: rpm -Uvh 包全名 升级 erase: rpm -e 包名 删除 search rpm: rpm -q 包名 查询软件包是否安装 rpm -qa 查询所有已经安装的rpm包 rpm -qi 包名 查询已安装的rpm信息 rpm -qip 包名 查询未安装的rpm信息 rpm -ql 包名 查看rpm的安装位置 rpm -qlp 包名 查看rpm的预设安装位置

yum---Linux软件安装与管理

查询: yum list #查询所有可用的软件包列表 yum search keywords #搜索服务器上所有和关键字相关的软件包 安装: yum -y install 包名 options: install 安装 -y 自动回答yes eg:  1 [[email protected] ~]# yum -y install gcc 升级: yum -y update 包名 options: update 升级 -y 自动回答yes 卸载:---------------------------