`
aideehorn
  • 浏览: 260725 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

rpm包的安装、删除、效验、查询

阅读更多
rpm包的安装、删除、效验、查询
安装软件包
rpm  -i 包全名
删除
rpm -e name(不是包名)
参数
-ivh 获得一个详细的安装进程
--nodeps 忽略依赖关系
--force 强制安装
-U 包名:升级安装
-F 更新不管是什么直接覆盖
--replacepkgs这样 RPM 将忽略该错误信息 -vih --replacepkgs
-q name :查询
-qa查询所有已安装的RPM
-qi name 查询这个软件详细信息
-ql 显示列表
-qf path  :查询一个文件属于哪个包
-qp 包名 :查文件是什么
-qpl 包名 :针对一个没装过的包
rpm -qc 配置文件
效验 rpm  -Va
rpm  -Vf /bin/ls
rpm  -Vp 包名
5 -- MD5 校验和
S -- 文件长度
L -- 符号链接
T -- 文件修改日期
D -- 设备
U -- 用户
G -- 用户组
M -- 模式 (包含许可和文件类型)
? -- 不可读文件
       详细课程
使用 RPM
RPM 有五个基本的操作 模式(不包括包的编译): 安装,卸载,升级,查询,校验。本节将对它们一一介绍。要了解完整的细节和选项,可以使用
rpm --help, 或转到 the section called 其它 RPM 资源 得到更多关于 RPM 的信息。
1 安装
典型的 RPM 有着类似 foo-1.0-1.i386.rpm这样的名称, 其中指明了包名 (foo), 版本号 (1.0), 发行号 (1), 和硬件平台 (i386)。安装一个软件包只需简单的键入以下命令:
# rpm -ivh foo-1.0-1.i386.rpm
foo                      ####################################
#
正如您所看到的, RPM 将会打印出软件包的名字 ( 并不一定要与文件名相同, 可能是 1.rpm), 而后打印出一连串的 # 号以表示安装进度。
请注意
  尽管通常是使用 rpm -ivh foo-1.0-1.i386.rpm 来安装包, 但也可以用 rpm -Uvh
foo-1.0-1.i386.rpm 来替代。 -U 是包升级参数, 也可以用来安装新包。参看 升级 有关RPM 中 -U 参数的详细使用情况。
软件包的安装设计非常简单, 但还是有可能发生以下错误:
软件包已被安装
如果软件包已被安装, 会出现以下信息:
# rpm -ivh foo-1.0-1.i386.rpm
foo                    package foo-1.0-1 is already installed
error: foo-1.0-1.i386.rpm cannot be installed
#
如果仍要安装该包, 可以在命令行中使用 --replacepkgs 选项, 这样 RPM 将忽略该错误信息:
# rpm -ivh --replacepkgs foo-1.0-1.i386.rpm
foo                      ####################################
#
文件冲突
如果要安装的软件包中有一个文件已在安装其它包时被安装,会显示以下信息:
# rpm -ivh foo-1.0-1.i386.rpm
foo          /usr/bin/foo conflicts with file from bar-1.0-1
error: foo-1.0-1.i386.rpm cannot be installed
#
要想让RPM 忽略该错误信息, 请使用 --replacefiles 命令行选项:
# rpm -ivh --replacefiles foo-1.0-1.i386.rpm
foo                      ####################################
#
未解决依赖关系
一个 RPM 包可能会 "依赖" 其它软件包, 也就是说要求在安装了特定的软件包之后才能安装该软件包。 如果在安装这个软件包时未解决这种存在的依赖关系, 会看到:
# rpm -ivh bar-1.0-1.i386.rpm
failed dependencies:
       foo is needed by bar-1.0-1
#
只有先安装完所依赖的软件包,才能解决这个问题。 如果想强制安装 (这不是个好办法,因为安装后的软件包未必能正常运行), 可以使用 --nodeps 命令行选项。
3.2.2 卸载
卸载软件包就象安装软件包时一样简单:
# rpm -e foo
#
请注意
  注意这里使用软件包的 名字 "foo" , 而不是原始软件包的 文件名 "foo-1.0-1.i386.rpm"。卸载软件包时, 需要用原始包的实际文件名替换 foo 包名。
在卸载某个软件包时,可能会发生依赖关系错误,这说明其它包与此包之间有安装依赖关系。例如:
# rpm -e foo
removing these packages would break dependencies:
       foo is needed by bar-1.0-1
#
要使 RPM 在卸载此包时忽略该错误 (这不是个好办法,因为卸载后,与它有依赖关系的软件包未必能正常运行), 使用 --nodeps 命令行选项。
3.2.3 升级
升级软件包和安装软件包十分类似。
# rpm -Uvh foo-2.0-1.i386.rpm
foo                      ####################################
#
RPM 将自动卸载已安装的老版本的 foo 软件包,用户无法看到有关信息。事实上用户可能总是使用 -U 来安装软件包, 因为即便以往未安装过该软件包,也能正常运行。
因为 RPM 执行智能化的软件包升级,自动处理配置文件,会显示如下信息:
saving /etc/foo.conf as /etc/foo.conf.rpmsave
这表示用户对配置文件的修改,不一定能 "向上兼容" 该软件包中的配置文件。 因此,RPM 会备份原始的文件,再安装新文件。用户应当尽快解决这两个配置文件的不同之处,以便系统能持续正常运行。
因为升级其实就是软件包的卸载与安装的综合,也可能会遇见那些操作中所可能发生的错误。 再有就是: 在使用 旧 版本的 RPM 软件包来升级新版本的软件时,会产生以下信息:
# rpm -Uvh foo-1.0-1.i386.rpm
foo   package foo-2.0-1 (which is newer) is already installed
error: foo-1.0-1.i386.rpm cannot be installed
#
要使用 RPM 强行 "升级" , 请使用 --oldpackage 命令行参数:
# rpm -Uvh --oldpackage foo-1.0-1.i386.rpm
foo                      ####################################
#
3.2.4 更新
包的更新与包升级相似:
# rpm -Fvh foo-1.2-1.i386.rpm
foo                      ####################################
#
RPM 更新选项,是检查命令行中指明的包版本与安装在系统中的包版本是否一致。 当 RPM
更新选项处理完已安装包的新版本时,该包会升级到新版本。 但是,RPM 更新选项无法安装系统目前没有的软件包。 这与 RPM
升级不同,升级选项能够 安装软件包,无论旧版本的包是否已安装。
RPM 更新选项可以很好的更新一个软件包或一组软件包。 如果用户下载了大量的软件包,但只想升级系统中已有的包时,RPM 更新选项会非常有用。 使用 RPM 更新选项意味着你无需从下载的包中挑挑拣拣,也不用事先删除不要的包。
这种情况下, 只需简单的键入:
# rpm -Fvh *.rpm
RPM 工具会自动升级那些已经安装好的包。
3.2.5 查询
使用命令 rpm -q来查询已安装软件包的数据库。简单的使用命令 rpm -q foo 会打印出foo软件包的包名、版本号和发行号:
# rpm -q foo
foo-2.0-1
#
除了指定包名以外,用户还可以使用以下选项与 -q 连用,来指明要查询哪些软件包的信息。这些选项被称之为 软件包指定选项 。
-a 查询所有已安装的软件包。
-f  将查询包含有文件 的软件包。
-p  查询软件包文件名为 的包。
有几种方式来指定查询软件包时所显示的信息。 以下选项可以出选择感兴趣的信息,加以显示。这样的选项被称作 信息选择选项 。
-i 显示软件包信息,如描述、发行号、大小、编译日期、安装日期、硬件平台、以及其它一些各类信息。
-l 列出软件包中包含的文件。
-s 显示软件包中所有文件的状态。
-d 列出被标注为文档的文件 (如,man 手册、 info 信息、README,等等) 。
-c 列出被标注为配置文件的文件。这些文件是需要在安装完毕后加以定制的,如 (sendmail.cf, passwd, inittab, 等) 。
如果要在执行上述选项的同时,显示文件列表, 可以同时使用 -v 命令行选项,就能得出与 ls -l 格式类似的输出。
3.2.6 校验
包校验是比较自软件包中安装的文件信息和软件包中的原始文件的相同信息。 与其它校验相同,包校验将比较文件的长度、MD5校验和、许可、类型、文件属主和群组。
使用 rpm -V 命令进行包校验。用户可以配合使用各个包选择选项 ,来列出校验包的查询结果。 简单地使用 rpm -V foo 可以校验 foo 包中原始安装时的所有文件。例如:
校验包含特定文件的软件包: rpm -Vf /bin/vi
校验所有已安装的软件包: rpm -Va
用 RPM 包文件校验已安装的软件包: rpm -Vp foo-1.0-1.i386.rpm
如果担心RPM数据库被破坏,就可以使用这种方式加以校验。
如果校验结果一切正常,将不会产生任何输出。如果有不一致的地方,会显示出来。 输出格式是8位长字符串, "c" 用以指配置文件,
接着是文件名。8位长字符,每个代表一个文件属性与RPM数据库中记录的属性相比较的结果。"." (点) 表示测试通过。下面的字符代表某测试的失败:
5 -- MD5 校验和
S -- 文件长度
L -- 符号链接
T -- 文件修改日期
D -- 设备
U -- 用户
G -- 用户组
M -- 模式 (包含许可和文件类型)
? -- 不可读文件
如果有信息输出, 用户应当认真加以考虑,是该删除、重新安装、还是修正出现的问题。
3.2 使用 RPM
RPM 有五个基本的操作 模式(不包括包的编译): 安装,卸载,升级,查询,校验。本节将对它们一一介绍。要了解完整的细节和选项,可以使用
rpm --help, 或转到 the section called 其它 RPM 资源 得到更多关于 RPM 的信息。
3.2.1 安装
典型的 RPM 有着类似 foo-1.0-1.i386.rpm这样的名称, 其中指明了包名 (foo), 版本号 (1.0), 发行号 (1), 和硬件平台 (i386)。安装一个软件包只需简单的键入以下命令:
# rpm -ivh foo-1.0-1.i386.rpm
foo                      ####################################
#
正如您所看到的, RPM 将会打印出软件包的名字 ( 并不一定要与文件名相同, 可能是 1.rpm), 而后打印出一连串的 # 号以表示安装进度。
请注意
  尽管通常是使用 rpm -ivh foo-1.0-1.i386.rpm 来安装包, 但也可以用 rpm -Uvh
foo-1.0-1.i386.rpm 来替代。 -U 是包升级参数, 也可以用来安装新包。参看 升级一节 有关RPM 中 -U
参数的详细使用情况。
软件包的安装设计非常简单, 但还是有可能发生以下错误:
软件包已被安装
如果软件包已被安装, 会出现以下信息:
# rpm -ivh foo-1.0-1.i386.rpm
foo                    package foo-1.0-1 is already installed
error: foo-1.0-1.i386.rpm cannot be installed
#
如果仍要安装该包, 可以在命令行中使用 --replacepkgs 选项, 这样 RPM 将忽略该错误信息:
# rpm -ivh --replacepkgs foo-1.0-1.i386.rpm
foo                      ####################################
#
文件冲突
如果要安装的软件包中有一个文件已在安装其它包时被安装,会显示以下信息:
# rpm -ivh foo-1.0-1.i386.rpm
foo          /usr/bin/foo conflicts with file from bar-1.0-1
error: foo-1.0-1.i386.rpm cannot be installed
#
要想让RPM 忽略该错误信息, 请使用 --replacefiles 命令行选项:
# rpm -ivh --replacefiles foo-1.0-1.i386.rpm
foo                      ####################################
#
未解决依赖关系
一个 RPM 包可能会 "依赖" 其它软件包, 也就是说要求在安装了特定的软件包之后才能安装该软件包。 如果在安装这个软件包时未解决这种存在的依赖关系, 会看到:
# rpm -ivh bar-1.0-1.i386.rpm
failed dependencies:
       foo is needed by bar-1.0-1
#
只有先安装完所依赖的软件包,才能解决这个问题。 如果想强制安装 (这不是个好办法,因为安装后的软件包未必能正常运行), 可以使用 --nodeps 命令行选项。
3.2.2 卸载
卸载软件包就象安装软件包时一样简单:
# rpm -e foo
#
请注意
  注意这里使用软件包的 名字 "foo" , 而不是原始软件包的 文件名 "foo-1.0-1.i386.rpm"。卸载软件包时, 需要用原始包的实际文件名替换 foo 包名。
在卸载某个软件包时,可能会发生依赖关系错误,这说明其它包与此包之间有安装依赖关系。例如:
# rpm -e foo
removing these packages would break dependencies:
       foo is needed by bar-1.0-1
#
要使 RPM 在卸载此包时忽略该错误 (这不是个好办法,因为卸载后,与它有依赖关系的软件包未必能正常运行), 使用 --nodeps 命令行选项。
3.2.3 升级
升级软件包和安装软件包十分类似。
# rpm -Uvh foo-2.0-1.i386.rpm
foo                      ####################################
#
RPM 将自动卸载已安装的老版本的 foo 软件包,用户无法看到有关信息。事实上用户可能总是使用 -U 来安装软件包, 因为即便以往未安装过该软件包,也能正常运行。
因为 RPM 执行智能化的软件包升级,自动处理配置文件,会显示如下信息:
saving /etc/foo.conf as /etc/foo.conf.rpmsave
这表示用户对配置文件的修改,不一定能 "向上兼容" 该软件包中的配置文件。 因此,RPM 会备份原始的文件,再安装新文件。用户应当尽快解决这两个配置文件的不同之处,以便系统能持续正常运行。
因为升级其实就是软件包的卸载与安装的综合,也可能会遇见那些操作中所可能发生的错误。 再有就是: 在使用 旧 版本的 RPM 软件包来升级新版本的软件时,会产生以下信息:
# rpm -Uvh foo-1.0-1.i386.rpm
foo   package foo-2.0-1 (which is newer) is already installed
error: foo-1.0-1.i386.rpm cannot be installed
#
要使用 RPM 强行 "升级" , 请使用 --oldpackage 命令行参数:
# rpm -Uvh --oldpackage foo-1.0-1.i386.rpm
foo                      ####################################
#
3.2.4 更新
包的更新与包升级相似:
# rpm -Fvh foo-1.2-1.i386.rpm
foo                      ####################################
#
RPM 更新选项,是检查命令行中指明的包版本与安装在系统中的包版本是否一致。 当 RPM
更新选项处理完已安装包的新版本时,该包会升级到新版本。 但是,RPM 更新选项无法安装系统目前没有的软件包。 这与 RPM
升级不同,升级选项能够 安装软件包,无论旧版本的包是否已安装。
RPM 更新选项可以很好的更新一个软件包或一组软件包。 如果用户下载了大量的软件包,但只想升级系统中已有的包时,RPM 更新选项会非常有用。 使用 RPM 更新选项意味着你无需从下载的包中挑挑拣拣,也不用事先删除不要的包。
这种情况下, 只需简单的键入:
# rpm -Fvh *.rpm
RPM 工具会自动升级那些已经安装好的包。
3.2.5 查询
使用命令 rpm -q来查询已安装软件包的数据库。简单的使用命令 rpm -q foo 会打印出foo软件包的包名、版本号和发行号:
# rpm -q foo
foo-2.0-1
#
除了指定包名以外,用户还可以使用以下选项与 -q 连用,来指明要查询哪些软件包的信息。这些选项被称之为 软件包指定选项 。
-a 查询所有已安装的软件包。
-f  将查询包含有文件 的软件包。
-p  查询软件包文件名为 的包。
有几种方式来指定查询软件包时所显示的信息。 以下选项可以出选择感兴趣的信息,加以显示。这样的选项被称作 信息选择选项 。
-i 显示软件包信息,如描述、发行号、大小、编译日期、安装日期、硬件平台、以及其它一些各类信息。
-l 列出软件包中包含的文件。
-s 显示软件包中所有文件的状态。
-d 列出被标注为文档的文件 (如,man 手册、 info 信息、README,等等) 。
-c 列出被标注为配置文件的文件。这些文件是需要在安装完毕后加以定制的,如 (sendmail.cf, passwd, inittab, 等) 。
如果要在执行上述选项的同时,显示文件列表, 可以同时使用 -v 命令行选项,就能得出与 ls -l 格式类似的输出。
3.2.6 校验
包校验是比较自软件包中安装的文件信息和软件包中的原始文件的相同信息。 与其它校验相同,包校验将比较文件的长度、MD5校验和、许可、类型、文件属主和群组。
使用 rpm -V 命令进行包校验。用户可以配合使用各个包选择选项 ,来列出校验包的查询结果。 简单地使用 rpm -V foo 可以校验 foo 包中原始安装时的所有文件。例如:
校验包含特定文件的软件包: rpm -Vf /bin/vi
校验所有已安装的软件包: rpm -Va
用 RPM 包文件校验已安装的软件包: rpm -Vp foo-1.0-1.i386.rpm
如果担心RPM数据库被破坏,就可以使用这种方式加以校验。
如果校验结果一切正常,将不会产生任何输出。如果有不一致的地方,会显示出来。 输出格式是8位长字符串, "c" 用以指配置文件,
接着是文件名。8位长字符,每个代表一个文件属性与RPM数据库中记录的属性相比较的结果。"." (点) 表示测试通过。下面的字符代表某测试的失败:
5 -- MD5 校验和
S -- 文件长度
L -- 符号链接
T -- 文件修改日期
D -- 设备
U -- 用户
G -- 用户组
M -- 模式 (包含许可和文件类型)
? -- 不可读文件
如果有信息输出, 用户应当认真加以考虑,是该删除、重新安装、还是修正出现的问题。
分享到:
评论

相关推荐

    rpm包安装htpasswd所需包

    rpm包安装htpasswd所需包rpm包安装htpasswd所需包rpm包安装htpasswd所需包rpm包安装htpasswd所需包rpm包安装htpasswd所需包rpm包安装htpasswd所需包rpm包安装htpasswd所需包rpm包安装htpasswd所需包rpm包安装...

    gcc_rpm包安装及安装顺序

    在Linux系统中,GCC(GNU Compiler ...以上就是关于“gcc_rpm包安装及安装顺序”的详细内容,希望对你的工作有所帮助。在实际操作中,务必注意系统的具体环境和版本,以及软件仓库的可用性,以确保安装过程的顺利进行。

    rpm包安装相关命令

    ### rpm包安装相关命令详解 在Linux环境中,`rpm`(Red Hat Package Manager)是管理软件包的强大工具,它不仅支持软件包的安装、卸载、升级,还提供了丰富的查询功能。以下是对rpm命令中涉及的关键操作的深入解析...

    vim离线安装rpm包

    针对“vim离线安装rpm包”这个主题,我们将详细讲解如何在Linux系统中通过rpm命令来实现vim的离线安装,以及相关的重要知识点。 首先,RPM(Red Hat Package Manager)是Linux下广泛使用的软件包管理器,它负责软件...

    Linux RPM 包安装

    - `rpm -qf /root/install.log`:查询哪个RPM包安装了`/root/install.log`文件。 **4. 查询未安装的RPM包信息** - `rpm -qp jdk-1_5_0-linux-i586.rpm`:查询未安装的`jdk-1_5_0-linux-i586.rpm`包的信息。 - `rpm...

    perl 离线安装rpm包

    在离线安装场景中,Perl RPM包对于那些没有互联网连接或者需要在安全环境中部署软件的用户尤其重要。本文将详细介绍如何在CentOS系统上离线安装Perl RPM包,以及它在PostGIS安装过程中的作用。 首先,让我们了解...

    suse离线安装gcc的rpm包

    RPM是一种广泛用于Fedora、CentOS和SUSE等Linux发行版的软件包管理工具,它负责安装、升级、查询和删除软件包。 在描述中提到的"根据我的另一篇文章的安装顺序进行安装",这暗示了安装GCC时可能涉及多个步骤,每个...

    国产麒麟系统KylinOS 安装MySQL 8.0-RPM包安装操作手册

    国产麒麟系统KylinOS 安装MySQL 8.0-RPM包安装操作手册 在国产麒麟系统KylinOS环境下安装MySQL 8.0-RPM包需要按照以下步骤进行操作。 检查是否有mysql残留 在安装MySQL之前,需要检查服务器是否已经安装了mysql。...

    php 7.2.16 rpm包

    3. **安装RPM包**:使用`rpm`命令来安装下载的包。例如,如果RPM包位于当前目录,可以运行`sudo rpm -ivh PHPrpm包7.2.16`。参数`-i`表示安装,`-v`是详细模式,`-h`则是在安装过程中显示进度条。 4. **依赖管理**...

    安装keepalived确实的rpm包

    安装keepalived时缺少的一些包,收集起来共享,包括 autoconf-2.63-5.1.el6.noarch.rpm automake-1.11.1-1.2.el6.noarch.rpm cluster-glue-1.0.5-2.el6.i686.rpm cluster-glue-libs-1.0.5-2.el6.i686.rpm cluster-...

    gcc 8.5 rpm 离线安装依赖包

    标题中的“gcc 8.5 rpm 离线安装依赖包”指的是在Linux系统中,特别是CentOS这样的发行版上,使用GCC(GNU Compiler Collection)的8.5版本的RPM包进行离线安装的过程。GCC是开源的、跨平台的编译器集合,它包含了C...

    gcc 离线安装rpm包

    RPM(Red Hat Package Manager)是Linux上广泛使用的软件包管理器,用于安装、升级、查询和删除软件包。RPM包是预编译的二进制文件,可以直接在支持RPM的系统上运行,如Fedora、CentOS、RHEL等。 在标题中提到的...

    CentOS 7 离线安装 Python 3 需要的 rpm 包

    4. **安装依赖**:使用 `yum install -y 文件名.rpm` 命令逐个安装 rpm 包。首先安装依赖库,如 `libffi`, `openssl`, `zlib` 等,然后安装 Python 3 主体和开发库。 5. **确认安装**:安装完成后,通过 `python3 --...

    Linux安装SNMP服务所需要rpm包

    本文将详细介绍在Linux上安装SNMP服务所需的RPM包以及相关配置步骤。 首先,我们需要理解RPM(Red Hat Package Manager)是Linux发行版如CentOS、Fedora、RHEL等使用的软件包管理系统,它负责软件的安装、升级和...

    安装gcc需要的相关rpm包

    安装gcc需要的相关rpm包: cloog-ppl-0.15.7-1.2.el6.x86_64.rpm cpp-4.4.7-3.el6.x86_64.rpm gcc-4.4.7-3.el6.x86_64.rpm glibc-2.12-1.107.el6.x86_64.rpm glibc-common-2.12-1.107.el6.x86_64.rpm glibc-devel-...

    postgis2.2安装包附属包-pgrouting的rpm包

    在RPM(Red Hat Package Manager)环境下,使用RPM包是安装软件的一种常见方式,因为它可以自动化处理依赖关系和配置步骤。本压缩包中包含的pgrouting_95表明它是针对PostgreSQL 9.5版本的pgrouting RPM包。确保在...

    center os7 安装gcc/make所需要的rpm包

    5. `yum`:CentOS 7中的包管理工具,用于安装、升级和查询RPM包。 6. 手动安装RPM包:使用`rpm`命令安装压缩包内的RPM文件。 7. 依赖管理:安装RPM包时需注意处理软件的依赖关系。 了解这些知识点后,你应该能够...

    离线安装NFS服务相关rpm包

    3. **安装rpm包**:使用 `rpm -ivh <package.rpm>` 命令逐一安装这些包。安装顺序通常为 `rpcbind`(或 `portmap`)、`nfs-utils`,如果有的话,再安装 `kernel-nfs-server`。 例如: ``` sudo rpm -ivh rpcbind-*....

    离线安装nginx所需要的rpm包

    3. **安装RPM包**:使用`rpm`命令逐个安装RPM包,按照依赖关系顺序安装。一般来说,先安装pcre、openssl和zlib,最后安装Nginx。命令格式如下: ``` rpm -ivh pcre-x.x.x-xxxx.el7.x86_64.rpm rpm -ivh openssl-...

Global site tag (gtag.js) - Google Analytics