Linux查询所有已安装的包

使用 -a 选项,我们可以查询系统上安装的每个软件包。
例如:

# rpm -qa | grep kernel
kernel-default-devel-3.0.76-0.11.1
kernel-firmware-20110923-0.42.49
kernel-source-3.0.76-0.11.1
linux-kernel-headers-2.6.32-1.13.5
kernel-default-3.0.101-0.46.1
kernel-default-base-3.0.101-0.46.1
kernel-default-extra-3.0.101-0.46.1

Linux显示包的文档列表

当 -d 被添加到查询中时,我们会得到一个包含命名包或者包的文档的所有文件的列表。
当我们在使用不熟悉的软件时遇到问题时,这是加快速度的好方法。
与 -c 和 -l 一样,我们将看到一个简单的文件名列表,或者(如果我们添加了 -v)一个更全面的列表。

# rpm -qd gawk
/usr/share/doc/packages/gawk/AUTHORS
/usr/share/doc/packages/gawk/COPYING
/usr/share/doc/packages/gawk/FUTURES
/usr/share/doc/packages/gawk/LIMITATIONS
/usr/share/doc/packages/gawk/NEWS
/usr/share/doc/packages/gawk/POSIX.STD
/usr/share/doc/packages/gawk/PROBLEMS
/usr/share/doc/packages/gawk/README
/usr/share/info/gawk.info.gz
/usr/share/info/gawkinet.info.gz
/usr/share/man/man1/awk.1.gz
/usr/share/man/man1/gawk.1.gz
/usr/share/man/man1/igawk.1.gz
/usr/share/man/man1/pgawk.1.gz
Linux中的rpm命令

Linux使用rpm命令显示包的配置文件列表

将 -c 添加到 rpm -q 命令后,RPM 将显示作为指定包的一部分的配置文件。

# rpm -qc netcfg
/etc/HOSTNAME
/etc/aliases
/etc/defaultdomain
/etc/ethers
/etc/exports
/etc/ftpusers
/etc/host.conf
/etc/hosts
/etc/hosts.allow
/etc/hosts.deny
/etc/hosts.equiv

查询提供命令的软件包

RPM 为包之间的依赖关系提供了广泛的支持。
使用的基本机制是一个包可能需要另一个包提供的东西。

# rpm -q --whatprovides gcc
gcc-4.3-62.198

Linux使用rpm命令卸载软件包

要卸载 rpm,我们需要必须安装的 rpm 的确切名称。
例如,如果我们必须卸载 gcc43-c++,那么如果我们运行以下命令将其删除

# rpm -e gcc43-c
error: package gcc43-c is not installed

如您所见,您应该提供完整的名称

# rpm -e gcc-c++
# echo $?
0

Linux显示未安装 rpm 的包的文件列表

要检查这一点,请确保我们有权访问必须检查其内容的 rpm

# rpm -qlp squashfs-4.0-2.1.x86_64.rpm
warning: squashfs-4.0-2.1.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 29b4acdd
/usr/bin/mksquashfs
/usr/bin/unsquashfs
/usr/share/doc/packages/squashfs
/usr/share/doc/packages/squashfs/CHANGES
/usr/share/doc/packages/squashfs/PERFORMANCE.README
/usr/share/doc/packages/squashfs/README
/usr/share/doc/packages/squashfs/README-4.0

Linux使用rpm命令显示包的文件列表

将 -l 添加到 rpm -q 告诉 RPM 显示由指定的一个或者多个包安装的文件列表。

# rpm -ql gcc
/usr/bin/cc
/usr/bin/gcc
/usr/bin/gcov
/usr/share/man/man1/cc.1.gz
/usr/share/man/man1/gcc.1.gz
/usr/share/man/man1/gcov.1.gz

显示包含添加信息的包的文件列表

# rpm -qlv gcc
lrwxrwxrwx 1 root root 7 Nov 21 2009 /usr/bin/cc -> gcc-4.3
lrwxrwxrwx 1 root root 7 Nov 21 2009 /usr/bin/gcc -> gcc-4.3
lrwxrwxrwx 1 root root 8 Nov 21 2009 /usr/bin/gcov -> gcov-4.3
lrwxrwxrwx 1 root root 12 Nov 21 2009 /usr/share/man/man1/cc.1.gz -> gcc-4.3.1.gz
lrwxrwxrwx 1 root root 12 Nov 21 2009 /usr/share/man/man1/gcc.1.gz -> gcc-4.3.1.gz
lrwxrwxrwx 1 root root 13 Nov 21 2009 /usr/share/man/man1/gcov.1.gz -> gcov-4.3.1.gz

安装/卸载一个没有依赖的包

在使用此选项之前,请确保我们完全了解,因为如果未安装依赖项,包可能无法正常运行。
尽管我们可以使用 --nodeps 跳过相同的操作

# rpm -ivh kiwi-instsource-5.05.25-616.1.x86_64.rpm
warning: kiwi-instsource-5.05.25-616.1.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID d3668a00
error: Failed dependencies:
        build is needed by kiwi-instsource-5.05.25-616.1.x86_64
# rpm -ivh kiwi-instsource-5.05.25-616.1.x86_64.rpm --nodeps
warning: kiwi-instsource-5.05.25-616.1.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID d3668a00
Preparing...                ########################################### [100%]
   1:kiwi-instsource        ########################################### [100%]

要删除包,我们可以使用相同的选项

# rpm -e kiwi-tools-5.05.25-616.1
error: Failed dependencies:
        kiwi-tools >= 5.05.25 is needed by (installed) kiwi-5.05.25-616.1.x86_64

或者,我们也可以将 --force 与 --nodeps 一起使用

# rpm -e kiwi-tools-5.05.25-616.1 --nodeps

Linux强制安装软件包

# rpm -ivh gcc-4.3-62.198.x86_64.rpm
Preparing...                ########################################### [100%]
        package gcc-4.3-62.198.x86_64 is already installed

正如你所看到的,因为 gcc rpm 已经安装,安装没有完成,所以对于这种情况,应该使用 --force 选项,如下所示

# rpm -ivh gcc-4.3-62.198.x86_64.rpm --force
Preparing...                ########################################### [100%]
   1:gcc                    ########################################### [100%]

Linux查询文件所属的软件包

可能会出现这样的情况:我们知道 /usr/bin/sudo 之类的文件,但我们不确定哪个 rpm 负责安装此文件。
在这种情况下,将 -qf 与 rpm 命令一起使用。

注意:以下命令仅在我们查询的文件存在于机器中时才有用

# rpm -qf /usr/bin/sudo
sudo-1.7.6p2-0.17.5

查看软件包提供的功能

通过在查询命令中添加“--provides”,我们可以看到一个或者多个包提供的功能。
如果包不提供任何功能,则 --provides 选项不会产生任何输出:

# rpm -q gcc --provides
c_compiler
gcc = 4.3-62.198

Linux使用rpm命令升级软件包

# rpm -Uvh gcc-4.3-62.200.2.x86_64.rpm
Preparing...                ########################################### [100%]
   1:gcc                    ########################################### [100%]

Linux安装新的软件包

# rpm -ivh gcc-4.3-62.198.x86_64.rpm
Preparing...                ########################################### [100%]
   1:gcc                    ########################################### [100%]

Linux使用rpm命令显示软件包信息

# rpm -qi kernel-default-base
Name        : kernel-default-base          Relocations: (not relocatable)
Version     : 3.0.101                           Vendor: SUSE LINUX Products GmbH, Nuernberg, Germany
Release     : 0.46.1                        Build Date: Wed Dec 17 09:19:54 2014
Install Date: Fri Jun 12 05:31:11 2014         Build Host: sheep03
Group       : System/Kernel                 Source RPM: kernel-default-3.0.101-0.46.1.nosrc.rpm
Size        : 23896685                         License: GPL v2 only
Signature   : RSA/8, Wed Dec 17 09:22:49 2014, Key ID e3a5c360307e3d54
Packager    : http://bugs.opensuse.org
URL         : http://www.kernel.org/
Summary     : The Standard Kernel - base modules
Description :
The standard kernel for both uniprocessor and multiprocessor systems.

该软件包仅包含所有安装所需的基本模块。

Source Timestamp: 2014-12-17 12:04:10 +0100
GIT Revision: 8356111faa769f649b6d7c8b5bcbb34fb17120aa
GIT Branch: SLE11-SP3-CVE-2014-9322
Distribution: SUSE Linux Enterprise 11
日期:2020-06-02 22:18:43 来源:oir作者:oir