安装的 RPM 去哪里了?

eas*_*asl 29 yum rpm rhel directory android

我在命令行模式下使用YUM包管理器在我的 Red Hat Enterprise Linux Server 6 机器上下载并安装包。

当我在Android手机上安装apk文件时,它们会转到目录,我想知道RHEL6将其安装的rpm文件保存在哪里?/data/app

slm*_*slm 31

Yum 在此处维护它下载的 RPM 的缓存:

/var/cache/yum/<you architecture>/<OS version>/
Run Code Online (Sandbox Code Playgroud)

例如,我的盒子是 Fedora 14,x86_64 架构,所以我有以下内容:

$ ls /var/cache/yum/x86_64/14/
adobe-linux-i386        lamolabs                                  rpmfusion-nonfree
adobe-linux-x86_64      lamolabs-noarch                           rpmfusion-nonfree-debuginfo
Dropbox                 nautilus-flickr-uploader                  rpmfusion-nonfree-rawhide-debuginfo
fedora                  qm                                        rpmfusion-nonfree-source
...
...
Run Code Online (Sandbox Code Playgroud)

但是安装的 RPM 基本上就像一个 zip 或 tar 文件。因此,这些文件的内容会转储到系统中,并且 RPM 会维护一个包含它已安装的软件包的数据库。RPM“数据库”位于此目录中:

$ ls /var/lib/rpm
Basenames     __db.002  Dirnames     Installtid    Packages        Pubkeys         Sha1header
Conflictname  __db.003  Filedigests  Name          Providename     Requirename     Sigmd5
__db.001      __db.004  Group        Obsoletename  Provideversion  Requireversion  Triggername
Run Code Online (Sandbox Code Playgroud)

您可以使用这些命令查看每个 RPM 的文件安装位置。

已安装的 RPM 中有哪些文件

$ rpm -ql rpm
/bin/rpm
/etc/rpm
/usr/bin/rpm2cpio
/usr/bin/rpmdb
/usr/bin/rpmquery
/usr/bin/rpmsign
/usr/bin/rpmverify
/usr/lib/rpm
/usr/lib/rpm/macros
/usr/lib/rpm/platform
/usr/lib/rpm/platform/amd64-linux
...
...
Run Code Online (Sandbox Code Playgroud)

关于给定 RPM 的包信息

$ rpm -qi rpm
Name        : rpm                          Relocations: (not relocatable)
Version     : 4.8.1                             Vendor: Fedora Project
Release     : 7.fc14                        Build Date: Tue 04 Oct 2011 03:49:08 AM EDT
Install Date: Tue 25 Oct 2011 09:36:34 AM EDT      Build Host: x86-05.phx2.fedoraproject.org
Group       : System Environment/Base       Source RPM: rpm-4.8.1-7.fc14.src.rpm
Size        : 2035701                          License: GPLv2+
Signature   : RSA/SHA256, Tue 04 Oct 2011 12:14:48 PM EDT, Key ID 421caddb97a1071f
Packager    : Fedora Project
URL         : http://www.rpm.org/
Summary     : The RPM package management system
Description :
The RPM Package Manager (RPM) is a powerful command line driven
package management system capable of installing, uninstalling,
verifying, querying, and updating software packages. Each software
package consists of an archive of files along with information about
the package like its version, a description, etc.
Run Code Online (Sandbox Code Playgroud)

  • @Line - 抱歉,RPM 也是一个合法的包。它也是安全的 b/c 每个人都有,这是我选择它的主要原因。 (3认同)
  • 天哪,这对我来说太难理解了!因为作为示例,您给出了 rpm ;) 所以,如果您想查看,例如 **java-11-openjdk-src** 包的文件安装在哪里,您可以使用 rpm `-ql java-11-openjdk-src` ;) (2认同)
  • 我明白,这只是令人困惑,因为我不知道那件事。如果没有这方面知识的人看看这个,希望上述建议能有所帮助;) (2认同)

zje*_*zje 13

rpm 文件本身被下载然后安装。一旦安装了这些文件,rpm 数据库就会跟踪它们。要查看特定 rpm 文件的安装位置,您可以运行rpm -ql.

例如

[z@localhost ~]# rpm -ql bash |head
/bin/bash
/bin/sh
/etc/skel/.bash_logout
/etc/skel/.bash_profile
/etc/skel/.bashrc
/usr/bin/bashbug-64
/usr/share/doc/bash-4.1.2/COPYING
/usr/share/info/bash.info.gz
/usr/share/locale/af/LC_MESSAGES/bash.mo
/usr/share/locale/bg/LC_MESSAGES/bash.mo
Run Code Online (Sandbox Code Playgroud)

显示 bash rpm 安装的前十个文件。话虽如此,rpms 还包含前脚本和后脚本,并且一些构建不良的包可能会丢弃在 rpm 数据库中不会被跟踪的文件。

如果这不是您要问的,yum可以在下载安装时缓存 ​​rpms。尝试环顾四周/var/cache/yum/- 但这仅适用keepcache=1于您在/etc/yum.conf.

  • +1 给 zje 提及 keepcache=1 配置。如果 keepcache=0,则包不会出现在 /var/cache/yum/ 下 (2认同)