如何从Linux中的某个存储库列出已安装的软件包

时间:2020-03-21 11:46:10  来源:igfitidea点击:

我们已经知道如何托收UNIX的操作系统中已安装的存储库。

今天,让我向我们展示如何从Linux中的某个存储库中列出已安装的软件包。
当我们想知道哪个软件包来自哪个存储库时,这可能很有用。

列出从Linux中的某个存储库中安装的软件包

Arch Linux.

在ARCH Linux及其衍生产品(如Antergos,Manjaro Linux)中,运行以下命令以了解来自某个存储库的已安装软件包列表。

$paclist community

上面的命令将列出Arch Linux中的社区存储库的已安装的软件包。

示例输出:

acpi 1.7-1
acpid 2.0.28-1
arj 3.10.22-11
at 3.1.20-3
atril 1.18.0-1
bamf 0.5.3-1
blueman 2.0.4-3
blur-effect 1.1.2-1
.
.
.
wpscan 1:2.9.2-3
xcur2png 0.7.1-4
yaml-cpp 0.5.3-3
youtube-dl 2016.06.05-1
zathura 0.3.7-1
zathura-pdf-poppler 0.2.7-1
zeromq 4.2.1-1
zim 0.66-1

或者,如果要仅显示没有版本号的已安装软件包的名称,则可以使用以下命令。

$awk '{print }' <(paclist community)

Rhel/CentOS:

在Rhel及其克隆等CentOS,Scientific Linux等克隆,使用命令查看已安装的软件包:

$yum list installed | grep @epel

此命令将列出从epel存储库的已安装的软件包。

dnf.noarch 0.6.4-2.el7 @epel 
dnf-conf.noarch 0.6.4-2.el7 @epel 
dnf-plugins-core.noarch 0.1.5-3.el7 @epel 
epel-release.noarch 7-9 @epel 
libcomps.x86_64 0.1.6-13.el7 @epel 
python-dnf.noarch 0.6.4-2.el7 @epel 
python-libcomps.x86_64 0.1.6-13.el7 @epel

我们还可以使用YUMDB命令从某个存储库获取已安装的软件包列表。
默认情况下未安装YUMDB。
我们需要安装yum-utils包以使用yumdb命令。

$sudo yum install yum-utils

现在,使用Yumdb命令列出来自特定存储库的已安装的软件包。

$yumdb search from_repo epel

上面的命令将从epel存储库中显示已安装的软件包。

dnf-0.6.4-2.el7.noarch
 from_repo = epel
dnf-conf-0.6.4-2.el7.noarch
 from_repo = epel
dnf-plugins-core-0.1.5-3.el7.noarch
 from_repo = epel
epel-release-7-9.noarch
 from_repo = epel
libcomps-0.1.6-13.el7.x86_64
 from_repo = epel
python-dnf-0.6.4-2.el7.noarch
 from_repo = epel
python-libcomps-0.1.6-13.el7.x86_64
 from_repo = epel

此外,我们可以使用AWK命令以打印友好格式打印输出,如下所示。

$yumdb search from_repo epel* |awk -F"\n" '{ RS=""; print  }'

其中欧莱克是重回的。
通过运行以下命令,我们可以获得重物:

$yum repolist

recosquery是另一个命令,以列出基于yum系统中某个存储库的已安装软件包。
请注意,我们需要按顺序安装yum-utils包以使用repoquery命令。

要使用ReposQuery列出从Epel存储库的已安装的软件包,刚刚运行:

$repoquery -a --installed --qf "%{ui_from_repo} %{name}" | grep '^@epel'

来自我的CentOS 7服务器系统的示例输出。

@epel dnf
@epel dnf-conf
@epel dnf-plugins-core
@epel epel-release
@epel libcomps
@epel python-dnf
@epel python-libcomps

推荐下载 - 免费教程:"你应该买什么类型的Linux桌面或者笔记本电脑?
"

Debian/Ubuntu/Linux Mint

在基于APT的系统中,我们可以使用命令查找来自特定存储库的已安装软件包列表,例如Docker,使用命令:

$aptitude search "?origin (docker) ?installed"
i   containerd.io                          - An open and reliable container runtime          
i   docker-ce                              - Docker: the open-source application container en
i   docker-ce-cli                          - Docker CLI: the open-source application containe

如果要从PPA列出所有包,请执行以下操作:

$grep ^Package: /var/lib/apt/lists/ppa.launchpad.net_*_Packages

示例输出:

/var/lib/apt/lists/ppa.launchpad.net_linrunner_tlp_ubuntu_dists_xenial_main_binary-amd64_Packages:Package: tp-smapi-dkms
/var/lib/apt/lists/ppa.launchpad.net_linrunner_tlp_ubuntu_dists_xenial_main_binary-amd64_Packages:Package: tlp
/var/lib/apt/lists/ppa.launchpad.net_linrunner_tlp_ubuntu_dists_xenial_main_binary-amd64_Packages:Package: tlp-rdw
/var/lib/apt/lists/ppa.launchpad.net_linrunner_tlp_ubuntu_dists_xenial_main_binary-i386_Packages:Package: tp-smapi-dkms
/var/lib/apt/lists/ppa.launchpad.net_linrunner_tlp_ubuntu_dists_xenial_main_binary-i386_Packages:Package: tlp
/var/lib/apt/lists/ppa.launchpad.net_linrunner_tlp_ubuntu_dists_xenial_main_binary-i386_Packages:Package: tlp-rdw

上述命令将列出Ubuntu系统上所有PPA的软件包。

此外,我们可以使用命令从存储库列出所有包:

$grep Package /var/lib/apt/lists/in.archive.ubuntu.com_ubuntu_dists_xenial_multiverse_*_Packages

此命令将列出来自Hyliverse存储库的软件包。

推荐阅读:

  • 如何在安装之前检查Linux包版本
  • 如何列出属于Linux中特定组的已安装软件包
  • 如何在Linux中查找已安装大小的安装应用程序

SUSE/OPENSUSE.

zypper使从SUSE,OpenSUSE系统中的某个存储库列出已安装的软件包更容易。

我们需要做的就是打开终端并运行以下命令。

$zypper pa -ir <repo-name_or_number>

我们可以使用以下命令找到存储库名称或者其号码:

$zypper lr

示例输出:

# | Alias | Name | Enabled | GPG Check | Refresh
--+---------------------+------------------------------+---------+-----------+-------
1 | repo-non-oss | openSUSE-leap/42.1-Non-Oss | Yes | (r ) Yes | Yes 
2 | repo-oss | openSUSE-leap/42.1-Oss | Yes | (r ) Yes | Yes 
3 | repo-update | openSUSE-42.1-Update | Yes | (r ) Yes | Yes 
4 | repo-update-non-oss | openSUSE-42.1-Update-Non-Oss | Yes | (r ) Yes | Yes

例如,以下命令将列出"repo-oss"存储库的软件包:

$zypper search -ir repo-oss

或者,只需使用如下所示的存储库号码。

$zypper search -ir 2

示例输出:

Loading repository data...
Reading installed packages...
S | Name | Summary | Type 
--+--------------------------------------------+-------------------------------------------------------------------------+-----------
i | Apper | KDE application and package management tool | application
i | Firefox | Web Browser | application
i | GParted | Create, reorganize, and delete partitions | application
i | Hugin batch processor | A GUI queue manager for stitching multiple hugin projects | application
.
.
.
i | zisofs-tools | User tools for zisofs | package 
i | zypp-plugin-python | Helper that makes writing ZYpp plugins in python easier | package 
i | zypper-aptitude | aptitude compatibility with zypper | package 
i | zypper-log | CLI for accessing the zypper logfile | package