实验环境:

CentOS release 6.6 (Final)  一台

IP地址:172.16.249.230

RPM 是 Red Hat Package Manager 的缩写,本意是Red Hat 软件包管理,顾名思义是Red Hat 贡献出来的软件包管理;在CentOS 、Redhat、Fedora 、SuSE、YellowDog等主流发行版本,以及在这些版本基础上二次开发出来的发行版采用;

一、RPM程序包管理的用途;

1、可以安装、删除、升级和管理软件;当然也支持在线安装和升级软件;

2、通过RPM包管理能知道软件包包含哪些文件,也能知道系统中的某个文件属于哪个软件包;

3、可以在查询系统中的软件包是否安装以及其版本;

4、作为开发者可以把自己的程序打包为RPM 包发布;

5、软件包签名GPG和MD5的导入、验证和签名发布

6、依赖性的检查,查看是否有软件包由于不兼容而扰乱了系统;

二、RPM 的使用权限

RPM软件的安装、删除、更新只有root权限才能使用;对于查询功能任何用户都可以操作;如果普通用户拥有安装目录的权限,也可以进行安装;

三、rpm 的一点简单用法;

我们除了软件包管理器以外,还能通过rpm 命令来安装;是不是所有的软件包都能通过rpm 命令来安装呢?不是的,文件以.rpm 后缀结尾的才行;有时我们在一些网站上找到file.rpm ,都要用 rpm 来安装;

一)初始化rpm 数据库;

通过rpm 命令查询一个rpm 包是否安装了,也是要通过rpm 数据库来完成的;所以我们要经常用下面的两个命令来初始化rpm 数据库;

# rpm –initdb      初始化数据库

无论当前是否已经存在数据库,都会直接重新建立和覆盖现有数据库

# rpm --rebuilddb   重新构建    注:这个要花好长时间;

如果事先不存在数据,则会新建,否则不会重建

注:这两个参数是极为有用,有时rpm 系统出了问题,不能安装和查询,大多是这里出了问题;

二)RPM软件包管理的查询功能:

命令格式

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

RPM的查询功能是极为强大,是极为重要的功能之一;举几个常用的例子,更为详细的具体的,请参考#man rpm

1、对系统中已安装软件的查询;

1)查询系统已安装的软件;

语法:rpm -q 软件名

举例:

1
2
[root@LinuxHost html]# rpm -q zsh
zsh-4.3.10-7.el6.x86_64

-q就是 --query ,中文意思是“问”,此命令表示的是,是不是系统安装了zsh ;如果已安装会有信息输出;如果没有安装,会输出zsh没有安装的信息;

查看系统中所有已经安装的包,要加 -a 参数 ;

1
[root@LinuxHost html]# rpm –qa

如果分页查看,再加一个管道 |和more命令;

1
[root@LinuxHost html]# rpm -qa |more

在所有已经安装的软件包中查找某个软件,比如说 zsh ;可以用 grep 抽取出来;

1
2
[root@LinuxHost html]# rpm -qa |grep zsh
zsh-4.3.10-7.el6.x86_64

上面这条的功能和 rpm -q zsh 输出的结果是一样的;

2)查询一个已经安装的文件属于哪个软件包;

语法 rpm -qf 文件名

注:文件名所在的绝对路径要指出

举例:

1
2
[root@LinuxHost html]# rpm -qf /bin/zsh
zsh-4.3.10-7.el6.x86_64

3)查询已安装软件包都安装到何处;

语法:rpm -ql 软件名 或 rpm rpmquery -ql 软件名

举例:

1
2
[root@LinuxHost html]# rpm -ql zsh 
[root@LinuxHost html]# rpm rpmquery -ql zsh

4)查询一个已安装软件包的信息

语法格式: rpm -qi 软件名

举例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@LinuxHost opt]# rpm -qi zsh
Name        : zsh                          Relocations: (not relocatable)
Version     : 4.3.10                            Vendor: CentOS
Release     : 7.el6                         Build Date: Mon 25 Nov 2013 01:40:59 AM CST
Install Date: Mon 24 Nov 2014 04:05:58 AM CST      Build Host: c6b9.bsys.dev.centos.org
Group       : System Environment/Shells     Source RPM: zsh-4.3.10-7.el6.src.rpm
Size        : 5009102                          License: BSD
Signature   : RSA/SHA1, Mon 25 Nov 2013 03:33:46 AM CST, Key ID 0946fca2c105b9de
Packager    : CentOS BuildSystem <http://bugs.centos.org>
URL         : http://zsh.sunsite.dk/
Summary     : A powerful interactive shell
Description :
The zsh shell is a command interpreter usable as an interactive login
shell and as a shell script command processor.  Zsh resembles the ksh
shell (the Korn shell), but includes many enhancements.  Zsh supports
command line editing, built-in spelling correction, programmable
command completion, shell functions (with autoloading), a history
mechanism, and more.

5)查看一下已安装软件的配置文件;

语法格式:rpm -qc 软件名

举例:

1
2
3
4
5
6
7
[root@LinuxHost html]# rpm -qc zsh
/etc/skel/.zshrc
/etc/zlogin
/etc/zlogout
/etc/zprofile
/etc/zshenv
/etc/zshrc

6)查看一个已经安装软件的文档安装位置:

语法格式: rpm -qd 软件名

举例:

1
[root@LinuxHost html]# rpm -qd zsh

7)查看一下已安装软件所依赖的软件包及文件;

语法格式: rpm -qR 软件名

举例:

1
[root@LinuxHost html]# rpm -qR zsh

查询已安装软件的总结:对于一个软件包已经安装,我们可以把一系列的参数组合起来用;比如 rpm -qil ;比如:

1
[root@LinuxHost html]# rpm -qil zsh

2、对于未安装的软件包的查看:

查看的前提是您有一个.rpm 的文件,也就是说对既有软件file.rpm的查看等;

1)查看一个软件包的用途、版本等信息;

语法: rpm -qpi file.rpm

举例:

1
2
3
4
5
6
7
8
9
10
11
12
13
# rpm -qpi SDL_image-1.2.12-1.x86_64.rpm 
Name        : SDL_image                    Relocations: /usr 
Version     : 1.2.12                            Vendor: (none)
Release     : 1                             Build Date: Sat 21 Jan 2012 09:53:22 AM CST
Install Date: (not installed)               Build Host: localhost.localdomain
Group       : System Environment/Libraries   Source RPM: SDL_image-1.2.12-1.src.rpm
Size        : 246207                           License: LGPL
Signature   : (none)
Packager    : Hakan Tandogan <hakan@iconsult.com>
Summary     : Simple DirectMedia Layer - Sample Image Loading Library
Description :
This is a simple library to load images of various formats as SDL surfaces.
This library supports BMP, PPM, PCX, GIF, JPEG, PNG, and TIFF formats.

2)查看一件软件包所包含的文件;

语法: rpm -qpl file.rpm

举例:

1
2
3
4
5
6
7
[[root@LinuxHost opt]# rpm -qpl SDL_image-1.2.12-1.x86_64.rpm  
/usr/lib/libSDL_image-1.2.so.0
/usr/lib/libSDL_image-1.2.so.0.8.4
/usr/share/doc/SDL_image-1.2.12
/usr/share/doc/SDL_image-1.2.12/CHANGES
/usr/share/doc/SDL_image-1.2.12/COPYING
/usr/share/doc/SDL_image-1.2.12/README

3)查看软件包的文档所在的位置;

语法: rpm -qpd file.rpm

举例:

1
2
3
4
[root@LinuxHost opt]# rpm -qpd SDL_image-1.2.12-1.x86_64.rpm
/usr/share/doc/SDL_image-1.2.12/CHANGES
/usr/share/doc/SDL_image-1.2.12/COPYING
/usr/share/doc/SDL_image-1.2.12/README

三)软件包的安装、升级、删除等;

1、安装和升级一个rpm 包;

[root@LinuxHost opt]#rpm -vih file.rpm 注:这个是用来安装一个新的rpm 包;

[root@LinuxHost opt]##rpm -Uvh file.rpm 注:这是用来升级一个rpm 包;

如果有依赖关系的,请解决依赖关系,其实软件包管理器能很好的解决依赖关系,请看前面的软件包管理器的介绍;如果您在软件包管理器中也找不到依赖关系的包;那只能通过编译他所依赖的包来解决依赖关系,或者强制安装;

语法结构:

1
2
[root@LinuxHost opt]# rpm -ivh file.rpm --nodeps --force
[root@LinuxHost opt]#rpm -Uvh file.rpm --nodeps --force

更多的参数,请查看#man rpm

安装一个软件程序包:

1
2
3
4
5
6
7
8
9
10
11
选项参数:
-h         显示hash以#号显示安装速度
-v        显示安装详细信息,-vv  -vvv越多越详细
-i        安装包
--nodeps忽略依赖关系
--nodigest忽略完整性
--nosignature忽略来源合法性
--replacepkgs重新安装包
--test        测试安装,而不执行真正的安装过程,dry run模式
--prefix NEWPATH指定程序安装路径(特定程序包)
--oldpackeage降级安装

举例应用:

安装zsh:

1
2
3
[root@LinuxHost Packages]# rpm -ivh zsh-4.3.10-7.el6.x86_64.rpm 
Preparing...                ########################################### [100%]
        package zsh-4.3.10-7.el6.x86_64 is already installed

注: --replacepkgs 参数是以已安装的软件再安装一次;有时没有太大的必要;

测试安装参数 --test ,用来检查依赖关系;并不是真正的安装;

1
2
3
[root@LinuxHost Packages]# rpm -ivh --test zsh-4.3.10-7.el6.x86_64.rpm 
Preparing...                ########################################### [100%]
        package zsh-4.3.10-7.el6.x86_64 is already installed

重新安装程序包:

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

升级一个软件程序包:

1
2
3
4
5
命令选项
-U        真正执行升级操作,如果有较老程序则升级,无包执行安装
-F        如果有较老程序则升级,否则,中止安装
--oldpackage降级安装
--force        忽略冲突,强制执行过程

升级一个程序包:

1
2
3
4
5
6
7
[root@LinuxHost dvd]# rpm -qa zsh
zsh-4.3.10-7.el6.x86_64
[root@LinuxHost dvd]# rpm -Uvh zsh-4.3.10-8.el6_5.x86_64.rpm 
Preparing...                ########################################### [100%]
   1:zsh                    ########################################### [100%]
[root@LinuxHost dvd]# rpm -qa zsh
zsh-4.3.10-8.el6_5.x86_64

由新版本降级为旧版本,要加 --oldpackage 参数;

1
2
3
4
5
6
7
8
[root@LinuxHost dvd]# rpm -qa zsh
zsh-4.3.10-8.el6_5.x86_64
[root@LinuxHost dvd]# cd Packages/
[root@LinuxHost Packages]# rpm -Uvh --oldpackage zsh-4.3.10-7.el6.x86_64.rpm 
Preparing...                ########################################### [100%]
   1:zsh                   ########################################### [100%]
[root@LinuxHost Packages]# rpm -qa zsh 
zsh-4.3.10-7.el6.x86_64

注意:

1.不要对内核执行升级操作:Linux支持多版本内核并存,因此,对新版本内核可直接安装。

2.如果源程序包的配置文件安装后曾被改动,升级时,新版本的配置文件并不会直接覆盖老版本文件,而是把新版本的文件重命名(加后缀.rpmnew)后保留。

2、删除一个rpm 包;

1
2
3
语法:
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts]
[--notriggers] [--test] PACKAGE_NAME ...

首先您要学会查询rpm 包 ;请看前面的说明;

[root@LinuxHost Packages]#rpm -e 软件包名

举例:我想移除zsh 包,完整的操作应该是:

1
2
[root@LinuxHost Packages]# rpm -e zsh
[root@LinuxHost Packages]# rpm -qa zsh

如果有依赖关系,您也可以用--nodeps 忽略依赖的检查来删除。但尽可能不要这么做,最好用软件包管理器 systerm-config-packages 来删除或者添加软件;

1
[root@LinuxHost Packages]# rpm -e zsh --nodeps

注意:如果包的配置文件安装后曾被改动过,卸载时,此文件不会删除,而是被重命名(原文件名加.rpmsave后缀)并保留。

四、导入签名:

程序包来源合法性和完整性验证:

1
2
3
4
5
命令语法:
rpm --import PUBKEY ...
rpm {-K|--checksig} [--nosignature] [--nodigest]
PACKAGE_FILE ...
[root@LinuxHost Packages]# rpm --import 签名文件

举例:

获取公钥:RPM-GPG-KEY-CentOS-6

1
2
3
4
#rpm --import RPM-GPG-KEY-CentOS-6
#rpm  -K  Packages
# rpm -K zsh-4.3.10-7.el6.x86_64.rpm 
zsh-4.3.10-7.el6.x86_64.rpm: rsa sha1 (md5) pgp md5 OK

关于RPM的签名功能,详情请参见 man rpm

五、RPM管理包管理器支持网络安装和查询;

比如我们想通过 CentOS 6.6 的一个镜像查询、安装软件包;

地址:

http://mirrors.sohu.com/centos/6.6/os/x86_64/Packages/

举例:

命令格式:

rpm 参数 rpm包文件的http或者ftp的地址

查询

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@LinuxHost Packages]# rpm -qpi http://mirrors.sohu.com/centos/6.6/os/x86_64/Packages/zsh-html-4.3.10-7.el6.x86_64.rpm
Name        : zsh-html                     Relocations: (not relocatable)
Version     : 4.3.10                            Vendor: CentOS
Release     : 7.el6                         Build Date: Mon 25 Nov 2013 01:40:59 AM CST
Install Date: (not installed)               Build Host: c6b9.bsys.dev.centos.org
Group       : System Environment/Shells     Source RPM: zsh-4.3.10-7.el6.src.rpm
Size        : 2993485                          License: BSD
Signature   : RSA/SHA1, Mon 25 Nov 2013 03:33:46 AM CST, Key ID 0946fca2c105b9de
Packager    : CentOS BuildSystem <http://bugs.centos.org>
URL         : http://zsh.sunsite.dk/
Summary     : Zsh shell manual in html format
Description :
The zsh shell is a command interpreter usable as an interactive login
shell and as a shell script command processor.  Zsh resembles the ksh
shell (the Korn shell), but includes many enhancements.  Zsh supports
command line editing, built-in spelling correction, programmable
command completion, shell functions (with autoloading), a history
mechanism, and more.
This package contains the Zsh manual in html format.

安装

1
2
3
4
[root@LinuxHost Packages]# rpm -ivh http://mirrors.sohu.com/centos/6.6/os/x86_64/Packages/zsh-html-4.3.10-7.el6.x86_64.rpm
Retrieving http://mirrors.sohu.com/centos/6.6/os/x86_64/Packages/zsh-html-4.3.10-7.el6.x86_64.rpm
Preparing...                ########################################### [100%]
   1:zsh-html               ########################################### [100%]

举一反三吧;

六 、RPM包的命名规则和获取途径

命名规则

RPM包的一般格式为:

1
2
name-version-arch.rpm
name-version-arch.src.rpm

name:软件包名称。

version:带有主、次和修订的软件包版本。

arch:硬件平台。硬件平台包括了:i386、i486、i586、i686、x86_64、ppc、sparc、alpha

src.rpm:源代码包。

以“openssl098e-0.9.8e-18.el6_5.2.x86_64.rpm”为例:

openssl098e:是软件名称。

0.9.8e:是软件版本。

x86_64:是适用的硬件平台。

其中还包含有特殊的名称:

1、fcXX,elXX:表示这个软件包的发行商版本,就像这里的fc18,说明这个软件包是在Fedora 18下使用的。而openssl098e-0.9.8e-18.el6_5.2.x86_64.rpm表示这个软件包是在RHEL 6.x(Red Hat Enterprise Linux)/CentOS 6.x下使用。

2、devel:表示这个RPM包是软件的开发包,例如mysql-devel-5.1.73-3.el6_5.x86_64.rpm。

3、noarch:说明这样的软件包可以在任何平台上安装,不需要特定的硬件平台。在任何硬件平台上都可以运行。

了解了RPM包的命名规则,看到一个RPM包就能知道它适用的环境了。

获取包的途径:按安全高低排名

1.系统发行版光盘或者官方站点服务器

镜像站(sohu,163)

2.程序项目官方网站

3.第三方组织

Fedora-EPEL:epel

搜索引擎:

http://rpmfind.net

http://rpm.pbone.net

http://pkgs.org

4.自制程序包。

建议做包合法性验证:

来源合法性

包的完整性

转载于:https://www.cnblogs.com/dyllove98/p/4123028.html

Linux下程序包管理工具RPM相关推荐

  1. Linux系统程序包管理工具-RPM

    一.rpm是什么 RPM 是RPM Package Manager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的.RPM包管理器(RPM)是一 ...

  2. Linux系统程序包管理工具 RPM

    什么是RPM: RPM全名是"RedHat Package Manager",简称为RPM,这套软件管理机制是由RedHat这家公司发展而来的.RPM是以一种数据库记录的方式来将你 ...

  3. CentOS 下的包管理工具RPM

    RPM Package Manager(RPM软件包管理器) RPM的常用参数: -i:install,安装, -e:erase,删除 -vh:显示安装进度 -v:verbose,详细显示处理的文件 ...

  4. Windows下的包管理工具scoop

    Windows下的包管理工具scoop 包管理工具? 顾名思义就是程序软件包的安装工具,可以管理操作系统上的软件,我们熟知的Ubuntu上的apt-get(在Ubuntu16以上可以直接用apt了), ...

  5. linuxpip安装python包_Windows+Linux安装Python包管理工具pip

    Windows+Linux安装Python包管理工具pip Windows安装Python包管理工具pip pip是一个Python包管理工具,主要是用于安装PyPI上的软件包,可以替代easy_in ...

  6. Linux下程序的Profiling工具-性能测试工具GNU gprof

    Linux下程序的Profiling工具 http://blog.chinaunix.net/uid-128922-id-289972.html 我们在写程序,特别是嵌入式程序的时候,通常需要对程序的 ...

  7. Linux程序包管理(rpm)

    程序包:由源代码通过编译成CPU可执行的二进制格式,再把这些文件(二进制程序.库文件.配置文件.帮助文件)组织成为一个或有限几个"包"文件. 程序包的组成:1.程序包的组成清单(每 ...

  8. 两类Linux系统的包管理工具

    Linux系统分为两种: 1.RedHat系列:Redhat.Centos.Fedora等 2.Debian系列:Debian.Ubuntu等 RedHat系列的包管理工具是yum,Debian系列的 ...

  9. Linux程序包管理之RPM

    一RPM介绍: 1,RPM:是指.rpm的文件格式的软件包,也可能是指其本身的软件包管理器(RPM Package Manager).最早由Red Hat研制,现在也由开源社区开发.RPM通常随附于L ...

最新文章

  1. Oracle exp/imp,备份或导入时注意的事项
  2. C#调用非托管C++DLL:通过托管C++DLL间接调用
  3. 中国中草药提取物市场需求容量与投资价值预测报告2022年
  4. 图文具体解释 IntelliJ IDEA 15 创建 Maven 构建的 Java Web 项目(使用 Jetty 容器)
  5. yum 下载软件的存放位置
  6. kindle的xray怎么用_Xray简单使用教程
  7. Nginx负载均衡(1)
  8. [Ubuntu] zsh
  9. 自学python买什么教材-最好的Python入门教材是哪本?
  10. python cplex优化包工具箱教程
  11. Ubuntu无盘工作站安装详细步骤
  12. 3D打印切片软件Cura的简单使用
  13. cisco2960(思科2960)
  14. 喜马拉雅 批量重命名
  15. ECS与EDAS什么意思?
  16. window 10 安装node.js时遇到2502 2503错误解决方法
  17. 顺序表的定义及基本操作
  18. vue文件字体颜色都变成黑白的
  19. 毕业答辩的一系列准备工作
  20. python true和false是什么,Python True真和False假的含义是什么?

热门文章

  1. 【常规的01背包 POJ3624 UVA562 HDU2546 HDU3466 poj1745】
  2. 第3周实践项目4 -顺序表的应用 删除顺序表中元素为x的值
  3. [YTU]_2560(C++继承(改错题))
  4. 10.2 运算符重载函数作为类成员函数和友元函数
  5. opencv中图像的基本结构 类型的定义
  6. linux文件需求管理,CaliberRM 需求管理系统
  7. [SOJ1039]Phone Home(深搜,染色问题)
  8. A. A Prank
  9. 【动态库链接】python调用C
  10. Laravel源码解析之从入口开始