标签 yum 下的文章

你是否想要了解安装包中各个文件在 Linux 系统中安装(位于)的位置?我们将在本文介绍如何列出文件的来源,或存在于某个特定包或者一组软件包中的文件。

这篇文章可以帮你轻松地找到重要的软件包文件,如配置文件、帮助文档等。我们来看看找出文件在哪个包中或者从哪个包中安装的几个方法:

如何列出 Linux 中全部已安装软件包的文件

你可以使用 repoquery 命令,它是 yum-utils 的一部分,用来列出给定的软件包在 CentOS/RHEL 系统上安装的文件。

要安装并使用 yum-utils,运行下面的命令:

# yum update 
# yum install yum-utils

现在你可以列出一个已安装包的文件了,比如 httpd 服务器 (注意包名是大小写敏感的)。--installed 表示已经安装的包,-l 列出所有的文件:

# repoquery --installed -l httpd
# dnf repoquery --installed -l httpd  [On Fedora 22+ versions]

Repoquery List Installed Files of Httpd

repoquery 列出 httpd 安装的文件

重要:在 Fedora 22 以上的版本中,repoquery 命令在基于 RPM 的发行版中已经与 dnf 包管理器整合,可以用上面的方法列出安装的文件。

除此之外,你也可以使用下面的 rpm 命令列出 .rpm 包中或已经安装的 .rpm 包的文件,下面的 -q-l 表示列出其后跟着的包中的文件:

# rpm -ql httpd

RPM Query Package for Installed Files

rpm 查询已安装程序的安装包

另外一个有用的建议是使用 -p 在安装之前列出 .rpm 中的文件。

# rpm -qlp telnet-server-1.2-137.1.i586.rpm

在 Debian/Ubuntu 发行版中,你可以使用 dpkg 命令带上 -L 标志在 Debian 系统或其衍生版本中列出给定 .deb 包的安装的文件。

在这个例子中,我们会列出 apache2 Web 服务器安装的文件:

$ dpkg -L apache2

dpkg List Installed Packages

dpkg 列出安装的包

不要忘记查看其它有关在 Linux 中软件包管理的文章。

  1. 20 个有用的 yum 包管理命令
  2. 20 个有用的 rpm 包管理命令
  3. 15 个 Ubuntu 中有用的 apt 包管理命令
  4. 15 个 Ubuntu 中有用的 dpkg命令
  5. 5 个最佳的对 Linux 新手的包管理器

就是这样了!在本文中,我们向你展示了如何在 Linux 中列出/找到给定的软件包或软件包组安装的所有文件。在下面的评论栏中分享你的想法。


作者简介:

Aaron Kili 是 Linux 和 F.O.S.S 的爱好者,目前任 TecMint 的作者,志向是一名 Linux 系统管理员、web 开发者。他喜欢用电脑工作,并热衷于分享知识。


via: http://www.tecmint.com/list-files-installed-from-rpm-deb-package-in-linux/

作者:Aaron Kili 译者:geekpi 校对:ezio

本文由 LCTT 原创编译,Linux中国 荣誉推出

Yum 是 RHEL/CentOS 的一个基于 rpm 的交互式高级包管理器,用户可以用它来安装新的软件包、卸载或清除旧的/不需要的软件包。它可以自动运行系统更新,并执行依赖分析,对已安装的或可用的软件包进行查询等等。

在本文中,我们将解释如何查看 Yum 事务的历史记录,以便于了解有关安装的软件包以及从系统中所卸载/清除软件包的信息。

推荐阅读: 20 条关于 Linux 软件包管理的 Yum 命令

以下是一些如何使用 Yum 历史命令的示例。

查看完整的 Yum 历史

要查看 Yum 事务完整的历史记录,我们可以运行以下命令,然后将显示:事务 ID、执行特定操作的用户、操作发生的日期和时间、实际操作以及任何错误的附加信息与操作:

# yum history 

查看 Yum 历史

使用 Yum 查找软件包信息

history 的子命令:info/list/summary 可以将事务 ID 或包名作为参数。此外,list 子命令可以加上特殊的参数,all 表示所有的事务。

运行以下命令查看先前的历史:

# yum history list all

并且,你可以使用下面的 info 命令查看涉及指定软件包的事务详情,例如 httpd

# yum history info httpd

Yum - 查找软件包信息

发出以下命令可以获得包含 httpd 软件包的事务的摘要:

# yum history summary httpd

Yum - 查找软件包的摘要

还可以使用事务的 ID 来查找,以下命令会显示 ID 为 15 的事务的详情。

# yum history info 15

Yum - 使用 ID 查找软件包信息

使用 yum history 查找软件包事务信息

有一些用于打印某个或多个软件包事务详情的子命令。我们可以使用 package-listpackage_info 查看关于 httpd 的更多信息,例如:

# yum history package-list httpd
或
# yum history package-info httpd

Yum - 查找软件包事务信息

要得到多个软件包的记录,我们可以运行:

# yum history package-list httpd epel-release
或
# yum history packages-list httpd epel-release

Yum - 查找多个软件包的信息

使用 Yum 回滚软件包

此外,还有一些 history 的子命令可以让我们撤销/重做/回滚事务。

  1. undo - 会撤销一个指定的事务。
  2. redo - 重复一次指定的事务。
  3. rollback - 撤销指定事务之后的所有事务。

它们采用单个事务 id 或关键字 last 和从最后一个事务开始的偏移量。

例如,假设我们已经做了 60 个事务,last 是指事务 60,last-4 指向事务 56。

推荐阅读: 怎样使用 yum-utils 来维护以及加速 Yum

以上子命令是如下工作的:如果我们有 5 个事务——V,W,X,Y 和 Z,其中分别是安装各个软件包的。

# yum history undo 2    #将删除软件包 W
# yum history redo 2    #将重新安装软件包 W
# yum history rollback 2    #将删除软件包 X、 Y 和 Z

在下面的示例中,事务 2 是一个更新操作,如下所示,以下 redo 命令将重复事务 2 直到所有软件包到更新到当前时间的最新版本:

# yum history | grep -w "2"

Yum - 查找软件包事务的 ID

# yum history redo 2

用 Yum 重新更新软件包

redo 子命令同样可以在我们指定事务之前加上一些可选的参数:

  1. force-reinstall - 重新安装所有在此事务中安装的软件包(通过 yum installupgradedowngrade)。
  2. force-remove - 移除所有已经更新或回滚的软件包。
# yum history redo force-reinstall 16

Yum - 强制安装软件包

查找 Yum 历史数据库和来源信息

这些子命令为我们提供有关历史记录数据库和其它信息来源的信息:

  1. addon-info - 提供更多的信息来源。
  2. stats - 显示当前历史数据库的统计信息。
  3. sync - 使我们能够更改为所有已安装软件包存储的 rpmdb/yumdb 数据。

看一下以下的命令的子命令实际上是怎样工作的:

# yum history addon-info
# yum history stats
# yum history sync

使用 new 子命令设置新的历史文件:

# yum history new

我们可以在 yum 手册页找到关于 Yum history 命令和其它几个命令的完整信息:

# man yum

推荐阅读: 4 个使用 Yum 禁用/锁定某些软件包更新的方法

就是这么多了。在本篇指南中,我们介绍了各种 Yum history 命令,以查看 Yum 事务的详细信息。


作者简介:

Aaron Kili 是 Linux 和 F.O.S.S 的爱好者,目前任 TecMint 的作者,志向是一名 Linux 系统管理员、web 开发者。他喜欢用电脑工作,并热衷于分享知识。


via: http://www.tecmint.com/view-yum-history-to-find-packages-info/

作者:Aaron Kili 译者:OneNewLife 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

一个 Linux 新用户应该知道他或她的进步源自于对 Linux 发行版的使用,而 Linux 发行版有好几种,并以不同的方式管理软件包。

在 Linux 中,包管理器非常重要,知道如何使用多种包管理器可以让你像一个高手一样活得很舒适,从在仓库下载软件、安装软件,到更新软件、处理依赖和删除软件是非常重要的,这也是Linux 系统管理的一个重要部分。

最好的Linux包管理器

成为一个 Linux 高手的一个标志是了解主要的 Linux 发行版如何处理包,在这篇文章中,我们应该看一些你在 Linux 上能找到的最佳的包管理器,

在这里,我们的主要重点是关于一些最佳包管理器的相关信息,但不是如何使用它们,这些留给你亲自发现。但我会提供一些有意义的链接,使用指南或更多。

1. DPKG - Debian 包管理系统 Debian Package Management System

Dpkg 是 Debian Linux 家族的基础包管理系统,它用于安装、删除、存储和提供.deb包的信息。

这是一个低层面的工具,并且有多个前端工具可以帮助用户从远程的仓库获取包,或处理复杂的包关系的工具,包括如下:

APT ( 高级打包工具 Advanced Packaging Tool )

这个是一个 dpkg 包管理系统的前端工具,它是一个非常受欢迎的、自由而强大的,有用的命令行包管理器系统。

Debian 及其衍生版,例如 Ubuntu 和 Linux Mint 的用户应该非常熟悉这个包管理工具。

想要了解它是如何工作的,你可以去看看下面这些 HOW TO 指南:

Aptitude 包管理器

这个也是 Debian Linux 家族一个非常出名的命令行前端包管理工具,它工作方式类似 APT ,它们之间有很多可以比较的地方,不过,你应该两个都试试才知道哪个工作的更好。

它最初为 Debian 及其衍生版设计的,但是现在它的功能延伸到 RHEL 家族。你可以参考这个指南了解更多关于 APT 和 Aptitude。

Synaptic 包管理器

Synaptic是一个基于GTK+的APT的可视化包管理器,对于一些不想使用命令行的用户,它非常好用。

2. RPM - 红帽包管理器 Red Hat Package Manager

这个是红帽创建的 Linux 基本标准(LSB)打包格式和基础包管理系统。基于这个底层系统,有多个前端包管理工具可供你使用,但我们应该只看那些最好的,那就是:

YUM ( 黄狗更新器,修改版 Yellowdog Updater, Modified

这个是一个开源、流行的命令行包管理器,它是用户使用 RPM 的界面(之一)。你可以把它和 Debian Linux 系统中的 APT 进行对比,它和 APT 拥有相同的功能。你可以从这个 HOW TO 指南中的例子更加清晰的理解YUM:

DNF( 优美的 Yum Dandified Yum

这个也是一个用于基于 RPM 的发行版的包管理器,Fedora 18 引入了它,它是下一代 YUM。

如果你用 Fedora 22 及更新版本,你肯定知道它是默认的包管理器。这里有一些链接,将为你提供更多关于 DNF 的信息和如何使用它。

3. Pacman 包管理器 – Arch Linux

这个是一个流行的、强大而易用的包管理器,它用于 Arch Linux 和其他的一些小众发行版。它提供了一些其他包管理器提供的基本功能,包括安装、自动解决依赖关系、升级、卸载和降级软件。

但是最大的用处是,它为 Arch 用户创建了一个简单易用的包管理方式。你可以阅读 Pacman 概览,它会解释上面提到的一些功能。

4. Zypper 包管理器 – openSUSE

这个是一个使用 libzypp 库制作的用于 OpenSUSE 系统上的命令行包管理器,它的常用功能包括访问仓库、安装包、解决依赖问题和其他功能。

更重要的是,它也可以支持存储库扩展功能,如模式、补丁和产品。新的 OpenSUSE 用户可以参考下面的链接来掌控它。

5. Portage 包管理器 – Gentoo

这个是 Gentoo 的包管理器,当下不怎么流行的一个发行版,但是这并不阻止它成为 Linux 下最好的软件包管理器之一。

Portage 项目的主要目标是创建一个简单、无故障的包管理系统,包含向后兼容、自动化等功能。

如果希望理解的更清晰,可以看下: Portage 项目页

结束语

正如我在开始时提到的,这个指南的主要意图是给 Linux 用户提供一个最佳软件包管理器的列表,但知道如何使用它们可以通过其后提供的重要的链接,并实际去试试它们。

各个发行版的用户需要学习超出他们的发行版之外的一些东西,才能更好理解上述提到的这些不同的包管理器。


via: http://www.tecmint.com/linux-package-managers/

作者:Ravi Saive 译者:Bestony 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

DNF即Dandified YUM,是基于RPM的Linux发行版的下一代软件包管理工具。它首先在Fedora 18中出现,并且在最近发行的Fedora 22中替代了YUM工具集

DNF致力于改善YUM的瓶颈,即性能、内存占用、依赖解决、速度和许多其他方面。DNF使用RPM、libsolv和hawkey库进行包管理。尽管它并未预装在CentOS和RHEL 7中,但您可以通过yum安装,并同时使用二者。

您也许想阅读更多关于DNF的信息:

最新的DNF稳定版本是2015年5月11日发布的1.0(在写这篇文章之前)。它(以及所有DNF之前版本)主要由Python编写,并以GPL v2许可证发布。

安装DNF

尽管Fedora 22官方已经过渡到了DNF,但DNF并不在RHEL/CentOS 7的默认仓库中。

为了在RHEL/CentOS系统中安装DNF,您需要首先安装和开启epel-release仓库。

# yum install epel-release
或
# yum install epel-release -y

尽管并不建议在使用yum时添上'-y'选项,因为最好还是看看什么将安装在您的系统中。但如果您对此并不在意,则您可以使用'-y'选项以自动化的安装而无需用户干预。

接下来,使用yum命令从epel-realease仓库安装DNF包。

# yum install dnf

在您装完dnf后,我会向您展示27个实用的dnf命令和例子,以便帮您更容易和高效的管理基于RPM包的发行版。

1. 检查DNF版本

检查您的系统上安装的DNF版本。

# dnf --version

检查DNF版本

2. 列出启用的DNF仓库

dnf命令中的'repolist'选项将显示您系统中所有启用的仓库。

# dnf repolist

检查所有开启的仓库

3. 列出所有启用和禁用的DNF仓库

'repolist all'选项将显示您系统中所有启用/禁用的仓库。

# dnf repolist all

列出所有启用/禁用的仓库

4. 用DNF列出所有可用的且已安装的软件包

'dnf list'命令将列出所有仓库中所有可用的软件包和您Linux系统中已安装的软件包。

# dnf list

用DNF列出所有的软件包

5. 用DNF列出所有已安装的软件包

尽管'dnf list'命令将列出所有仓库中所有可用的软件包和已安装的软件包。然而像下面一样使用'list installed'选项将只列出已安装的软件包。

# dnf list installed

列出已安装的软件包

6. 用DNF列出所有可用的软件包

类似的,可以用'list available'选项列出所有开启的仓库中所有可用的软件包。

# dnf list available

用DNF列出可用的软件包

7. 使用DNF查找软件包

如果您不太清楚您想安装的软件包的名字,这种情况下,您可以使用'search'选项来搜索匹配该字符(例如,nano)和字符串的软件包。

# dnf search nano

通过关键字搜索软件包

8. 查看哪个软件包提供了某个文件/子软件包?

dnf的选项'provides'能查找提供了某个文件/子软件包的软件包名。例如,如果您想找找哪个软件包提供了您系统中的'/bin/bash'文件,可以使用下面的命令

# dnf provides /bin/bash

查找提供文件的软件包

9. 使用DNF获得一个软件包的详细信息

如果您想在安装一个软件包前知道它的详细信息,您可以使用'info'来获得一个软件包的详细信息,例如:

# dnf info nano

用DNF查看软件信息

10. 使用DNF安装软件包

想安装一个叫nano的软件包,只需运行下面的命令,它会为nano自动的解决和安装所有的依赖。

# dnf install nano

用DNF安装软件

11. 使用DNF更新一个软件包

您可能只想更新一个特定的包(例如,systemd)并且保留系统内剩余软件包不变。

# dnf update systemd

更新一个软件包

12. 使用DNF检查系统更新

检查系统中安装的所有软件包的更新可以简单的使用如下命令:

# dnf check-update

检查系统更新

13. 使用DNF更新系统中所有的软件包

您可以使用下面的命令来更新整个系统中所有已安装的软件包。

# dnf update
或
# dnf upgrade

更新系统

14. 使用DNF来移除/删除一个软件包

您可以在dnf命令中使用'remove'或'erase'选项来移除任何不想要的软件包。

# dnf remove nano
或
# dnf erase nano

移除系统中的软件

15. 使用DNF移除于依赖无用的软件包(Orphan Packages)

这些为了满足依赖安装的软件包在相应的程序删除后便不再需要了。可以用过下面的命令来将它们删除。

# dnf autoremove

移除无用的依赖包

16. 使用DNF移除缓存的软件包

我们在使用dnf时经常会碰到过期的头部信息和不完整的事务,它们会导致错误。我们可以使用下面的语句清理缓存的软件包和包含远程包信息的头部信息。

# dnf clean all

移除DNF缓存

17. 获得特定DNF命令的帮助

您可能需要特定的DNF命令的帮助(例如,clean),可以通过下面的命令来得到:

# dnf help clean

获得某一命令帮助

18. 列出所有DNF的命令和选项

要显示所有dnf的命令和选项,只需要:

# dnf help

获得命令选项帮助

19. 查看DNF的历史记录

您可以调用'dnf history'来查看已经执行过的dnf命令的列表。这样您便可以知道什么被安装/移除及其时间戳。

# dnf history

查看历史记录

20. 显示所有软件包组

'dnf grouplist'命令可以显示所有可用的或已安装的软件包,如果没有什么输出,则它会列出所有已知的软件包组。

# dnf grouplist

列出所有软件包组

21. 使用DNF安装一个软件包组

要安装一组由许多软件打包在一起的软件包组(例如,Educational Softaware),只需要执行:

# dnf groupinstall 'Educational Software'

安装一个软件包组

22. 更新一个软件包组

可以通过下面的命令来更新一个软件包组(例如,Educational Software):

# dnf groupupdate 'Educational Software'

更新软件包组

23. 移除一个软件包组

可以使用下面的命令来移除一个软件包组(例如,Educational Software):

# dnf groupremove 'Educational Software'

移除软件包组

24. 从某个特定的仓库安装一个软件包

DNF可以从任何特定的仓库(比如 epel)安装一个软件包(例如,phpmyadmin):

# dnf --enablerepo=epel install phpmyadmin

从特定的仓库安装软件

25. 将已安装的软件包同步到稳定发行版

'dnf distro-sync'将同步所有已安装的软件包到所有开启的仓库中最近的稳定版本。如果没有选择软件包,则会同步所有已安装的软件包。

# dnf distro-sync

将包同步至稳定版

26. 重新安装一个软件包

'dnf reinstall nano'命令将重新安装一个已经安装的软件包(例如,nano):

# dnf reinstall nano

重新安装软件包

27. 降级一个软件包

选项'downgrade'将会使一个软件包(例如,acpid)回退到低版本。

# dnf downgrade acpid

示例输出

Using metadata from Wed May 20 12:44:59 2015
No match for available package: acpid-2.0.19-5.el7.x86_64
Error: Nothing to do.

我观察到:dnf不会按预想的那样降级一个软件包。这已做为一个bug被提交。

结论

DNF是YUM管理器的优秀替代品。它试着自动做许多甚至不推荐有经验的Linux系统管理员做的工作。例如:

  • --skip-broken不被DNF识别,并且DNF中没有其替代命令。
  • 尽管您可能会运行dnf provides,但再也没有'resolvedep'命令了。
  • 没有'deplist'命令用来发现软件包依赖。
  • 您排除一个仓库意味着在所有操作上排除该仓库,而在yum中,排除一个仓库只在安装和升级等时刻排除他们。

许多Linux用户对于Linux生态系统的走向不甚满意。首先Systemd替换了init系统v,现在DNF将于不久后替换YUM,首先是Fedora 22,接下来是RHEL和CentOS。

您怎么看呢?是不是发行版和整个Linux生态系统并不注重用户并且在朝着与用户愿望相悖的方向前进呢?IT行业里有这样一句话 - “如果没有坏,为什么要修呢?”,System V和YUM都没有坏。

上面便是这篇文章的全部了。请在下方留言以让我了解您的宝贵想法。点赞和分享以帮助我们传播。谢谢!


via: http://www.tecmint.com/dnf-commands-for-fedora-rpm-package-management/

作者:Avishek Kumar 译者:wwy-hust 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

也许你会惊奇在新安装的 Fedroa 22中没有找到 yum 包,也不明白为何在调用 /usr/bin/yum 或使用各种 Yum 插件时会得到警告。嗯,你看到的没错,Yum 已经去了~。直白的说, DNF 现在是 Fedora 上默认是包管理器了。

DNF 由 Yum 中分支出来,采用了基于 SAT 的依赖解决算法,目标是在 Fedora 22中取代 Yum。随着 DNF 1.0 的发布,已经到了取而代之的时候了。Yum 无法适应倡导“默认即 Python 3”理念的 Fedora ,而 DNF 则可以同时支持 Python 2 和 Python 3。 DNF 按照相同的语义逻辑保留了命令行接口的一致。幸运的是,DNF 的 Python API 是完全不同于 Yum 的。这两个项目之间的所有已知的不兼容都已经记录在案了。在 Fedora Core 22 中只有 DNF,官方不会提供 Yum 了。当然,如果你愿意,可以自己下载它。这个包仍然可以如同以往一样调用, Python API 也没变化,只是 yum 程序的名称被改名为 yum-deprecated 了,而且从命令行调用 yum 会被重定向到 DNF。这样,你就可以在系统上同时维持 Yum 和 DNF 了。

启动 DNF 项目的原因是由于 Yum 的三大问题:API 缺乏文档、有问题的依赖解决算法,及无法重构内部函数。这里提到的最后一个问题,其实和文档的缺乏有关。Yum 插件使用的各种方法来源于 Yum 的代码,一旦改变有可能造成 Yum 的突然崩溃!DNF 致力于解决这些 Yum 的问题,从一开始,所有对外的 API 的要做好完备的文档。在绝大多数新提交中都包含了测试单元。不允许各种奇怪的、乱七八糟的补丁。该项目是通过敏捷开发进行的:对用户会有较大影响的需求会得到尽快的实现。

现在,DNF 团队正在移植各种流行的 Yum 插件到 DNF 上,并改进其用户体验。为了更加方便切换到 DNF,我们开发了一个 DNF 移植插件,来将 Yum 中已经安装的包、分组和事务数据导入到新的 Fedora 包管理器中。赶快转移到 DNF 吧,希望你喜欢!

Jan Silhan, by DNF team

问题:我想从Red Hat 的标准仓库中下载一个RPM包,我能使用yum命令来下载一个RPM包但是不进行安装吗?

yum是基于Red Hat的系统(如CentOS、Fedora、RHEl)上的默认包管理器。使用yum,你可以安装或者更新一个RPM包,并且他会自动解决包依赖关系。但是如果你只想将一个RPM包下载到你的系统上该怎么办呢? 例如,你可能想要获取一些RPM包在以后使用,或者将他们安装在另外的机器上。

这里说明了如何从yum仓库上下载一个RPM包。

方法一:yum

yum命令本身就可以用来下载一个RPM包,标准的yum命令提供了--downloadonly(只下载)的选项来达到这个目的。

$ sudo yum install --downloadonly <package-name>

默认情况下,一个下载的RPM包会保存在下面的目录中:

/var/cache/yum/x86_64/[centos/fedora-version]/[repository]/packages

以上的[repository]表示下载包的来源仓库的名称(例如:base、fedora、updates)

如果你想要将一个包下载到一个指定的目录(如/tmp):

$ sudo yum install --downloadonly --downloaddir=/tmp <package-name>

注意,如果下载的包包含了任何没有满足的依赖关系,yum将会把所有的依赖关系包下载,但是都不会被安装。

另外一个重要的事情是,在CentOS/RHEL 6或更早期的版本中,你需要安装一个单独yum插件(名称为 yum-plugin-downloadonly)才能使用--downloadonly命令选项:

$ sudo yum install yum-plugin-downloadonly

如果没有该插件,你会在使用yum时得到以下错误:

Command line error: no such option: --downloadonly

方法二: Yumdownloader

另外一个下载RPM包的方法就是通过一个专门的包下载工具--yumdownloader。 这个工具是yum工具包(包含了用来进行yum包管理的帮助工具套件)的子集。

$ sudo yum install yum-utils

下载一个RPM包:

$ sudo yumdownloader <package-name>

下载的包会被保存在当前目录中。你需要使用root权限,因为yumdownloader会在下载过程中更新包索引文件。与yum命令不同的是,任何依赖包不会被下载。


via: http://ask.xmodulo.com/yum-download-rpm-package.html

译者:theo-l 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出