标签 仓库 下的文章

Artipie 是一个开源的自托管的仓库管理器,它不仅可以用于 Python。

在学生时代使用 Python 开发时,我发现我需要一些私人的集中存储。这样我就可以存储二进制和文本数据文件,以及 Python 软件包。我在 Artipie 中找到了答案,这是一个开源的自托管的软件仓库管理器。

在大学里,我和我的同事们对来自实验测量的大量数据进行研究。我使用 Python 来处理和可视化它们。当时我的大学同事是数学家,没有软件开发技术的经验。他们通常只是在闪存盘上或通过电子邮件传递数据和代码。我努力向他们介绍像 Git 这样的版本管理系统,但没有成功。

Python 仓库

Artipie 支持 PyPI 仓库,与 twinepip 兼容。这意味着你可以完全像在 PyPITestPyPI 仓库上安装或发布软件包那样使用 Artipie Python 仓库。

要创建你自己的 Python 仓库,你可以使用名为 Artipie Central 的 Artipie 托管实例。当你登录后,你会看到一个列出你的仓库的页面(开始时是空的),以及一个添加新仓库的表单。为你的新仓库选择一个名字(例如,mypython),选择 Python 作为仓库类型,然后点击 “ 添加 Add ” 按钮。

接下来,你会看到一个以 YAML 格式显示仓库设置的页面:

---
repo:
  type: pypi
  storage: default
  permissions:
    olenagerasimova:
      - upload
    "*":
      - download

配置中的 type 映射设置了仓库的类型。在这个例子中,Python 仓库被配置为默认的 Artipie Central 存储。

storage 映射定义了所有仓库包的存储位置。这可以是任何文件系统或 S3 存储兼容的位置。Artipie Central 有一个预先配置的 default 存储,可以使用它进行测试。

permissions 映射允许为用户 olenagerasimova 上传,并允许任何人下载任何软件包。

为了确保这个仓库的存在和工作,在你的浏览器中打开 索引页。显示的是软件包列表。如果你刚刚创建了一个新的版本库,但还没有上传软件包,那么仓库的索引页是空白的。

二进制仓库

你可以在 Artipie 中存储任何种类的文件。存储类型是 filebinary,我用这个作为实验数据的存储。我把它作为 Python 可视化的输入。在 Artipie Central 可以创建一个文件仓库,与 Python 仓库的方式相同。你给它一个名字,选择 binary 类型,然后点击 “ 添加 Add ” 按钮。

---
repo:
  type: file
  storage: default
  permissions:
    olenagerasimova:
      - upload
      - download
    "*":
      - download

这些设置基本上与 Python 相同。只有仓库的类型不同。在这个例子中,二进制仓库被称为 data。它包含三个带有一些数字的文本文件:

6
3.5
5
4
4.5
3
2.7
5
6
3
1.2
3.2
6

另外两个文件的形式相同(只是数字不同)。要想自己看这些文件,请在浏览器中打开链接 并下载文件,或者你可以用 httpie 执行 GET 请求:

httpie -a https://central.artipie.com/olenagerasimova/data/y1.dat > ./data/y1.da

这些文件是用 PUT 请求上传到 Artipie Central 的 data 存储库的:

httpie -a olenagerasimova:*** PUT 
https://central.artipie.com/olenagerasimova/data/y1.dat @data/y1.dat

httpie -a olenagerasimova:*** PUT 
https://central.artipie.com/olenagerasimova/data/y2.dat @data/y2.dat

httpie -a olenagerasimova:*** PUT 
https://central.artipie.com/olenagerasimova/data/y3.dat @data/y3.dat

由于这个二进制仓库的 API 非常简单(HTTP PUTGET 请求),用任何语言编写一段代码来上传和下载所需的文件都很容易。

Python 项目

可以从我的 GitHub 仓库中获得一个 Python 项目的示例源代码。这个示例的主要想法是,从 Artipie Central 下载三个数据文件,将数字读入数组,并使用这些数组来绘制一个图。使用 pip 来安装这个例子包并运行它:

$ python3 -m pip install --index-url \
  https://central.artipie.com/olenagerasimova/pypi/ \
  pypiexample
$ python3 -m pypiexample

通过设置 --index-url 到 Artipie Central 的 Python 仓库,pip 从它那里下载软件包,而不是通常默认的 PyPi 仓库。运行这些命令后,会显示一个带有三条曲线的极坐标图,这是数据文件的可视化。

要将软件包发布到 Artipie Central 仓库,请用 twine 构建并上传:

commandline
$ python setup.py sdist bdist_wheel

$ twine upload --repository-url \
  https://central.artipie.com/olenagerasimova/pypi
  -u olenagerasimova -p *** dist/*

在 Artipie Central 中设置 files 仓库,并创建一个 Python 示例项目是多么容易。不过,你不必使用 Artipie Central。Artipie 可以自托管,所以你可以在你自己的本地网络上运行一个仓库。

将 Artipie 作为一个容器运行

将 Artipie 作为一个容器运行,设置起来就像安装 Podman 或 Docker 一样容易。假设你已经安装了其中之一,打开终端:

$ podman run -it -p 8080:8080 -p 8086:8086 artipie/artipie:latest

这将启动一个运行最新 Artipie 版本的新容器。它还映射了两个端口。你的仓库在 8080 端口提供服务。Artipie 的 Rest API 和 Swagger 文档在 8086 端口提供。新的镜像会生成一个默认的配置,打印一个正在运行的仓库列表,测试证书,以及一个指向 Swagger 文档的链接到你的控制台。

你也可以使用 Artipie Rest API 来查看现有的仓库:

  • 进入 Swagger 文档页面 http://localhost:8086/api/index-org.html
  • 在 “ 选择一个定义 Select a definition ” 列表中,选择 “ 认证令牌 Auth token ”。
  • 生成并复制用户 artipie 的认证令牌,密码是 artipie
  • 切换到 “ 仓库 Repositories ” 定义,点击 “ 认证 Authorize ” 按钮,然后粘贴令牌。

Image of the Swagger documentation page,

/api/v1/repository/list 执行一个 GET 请求。在响应中,你会收到一个包含三个默认仓库的 JSON 列表:

[
  "artipie/my-bin",
  "artipie/my-docker",
  "artipie/my-maven"
]

默认配置中不包括 Python 仓库。你可以通过从 Swagger 接口向 /api/v1/repository/{user}/{repo} 执行 PUT 请求来纠正。在这种情况下,user 是默认用户的名字(artipie),repo 是新仓库的名字。你可以把你的新 Python 代码库称为 my-pypi。下面是一个请求体的例子,包含带仓库设置的 JSON 对象:

{ 
  "repo": {
    "type": "pypi",
    "storage": "default",
    "permissions": {
      "*": [
        "download"
      ],
      "artipie": [
        "upload"
      ]
    }
  }
}

所有的 JSON 字段都和你在仪表板上创建 YAML 格式的仓库时一样。我们版本库的类型是 pypi,使用默认存储,任何人都可以下载,但只有用户 artipie 可以上传。

再次向 /api/v1/repository/list 发出 GET 请求,确保你的仓库被创建。现在,你有四个仓库:

[
  "artipie/my-bin",
  "artipie/my-docker",
  "artipie/my-maven",
  "artipie/my-pypi"
]

你已经创建了你自己的 Artipie 安装,包含了几个仓库! Artipie 镜像既可以在个人电脑上运行,也可以在私人网络内的远程服务器上运行。你可以用它来在一个公司、团体或大学内交换软件包。这是一个建立你自己的软件服务的简单方法,而且它不仅仅适用于 Python。花些时间来探索 Artipie,看看它能为你带来什么。


via: https://opensource.com/article/22/12/python-package-index-repository-artipie

作者:Alena Gerasimova 选题:lkxed 译者:geekpi 校对:wxy

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

抵制在 Git 中添加一些会增加管理难度的东西的冲动;这里有替代方法。

 title=

有权访问源代码使对安全性的分析以及应用程序的安全成为可能。但是,如果没有人真正看过代码,问题就不会被发现,即使人们主动地看代码,通常也要看很多东西。幸运的是,GitHub 拥有一个活跃的安全团队,最近,他们 发现了已提交到多个 Git 仓库中的特洛伊木马病毒,甚至仓库的所有者也偷偷溜走了。尽管我们无法控制其他人如何管理自己的仓库,但我们可以从他们的错误中吸取教训。为此,本文回顾了将文件添加到自己的仓库中的一些最佳实践。

了解你的仓库

 title=

这对于安全的 Git 仓库来可以说是头号规则。作为项目维护者,无论是你自己创建的还是采用别人的,你的工作是了解自己仓库中的内容。你可能无法记住代码库中每一个文件,但是你需要了解你所管理的内容的基本组成部分。如果在几十个合并后出现一个游离的文件,你会很容易地发现它,因为你不知道它的用途,你需要检查它来刷新你的记忆。发生这种情况时,请查看该文件,并确保准确了解为什么它是必要的。

禁止二进制大文件

 title=

Git 是为文本而生的,无论是用纯文本编写的 C 或 Python 还是 Java 文本,亦或是 JSON、YAML、XML、Markdown、HTML 或类似的文本。Git 对于二进制文件不是很理想。

两者之间的区别是:

$ cat hello.txt
This is plain text.
It's readable by humans and machines alike.
Git knows how to version this.

$ git diff hello.txt
diff --git a/hello.txt b/hello.txt
index f227cc3..0d85b44 100644
--- a/hello.txt
+++ b/hello.txt
@@ -1,2 +1,3 @@
 This is plain text.
+It's readable by humans and machines alike.
 Git knows how to version this.

$ git diff pixel.png
diff --git a/pixel.png b/pixel.png
index 563235a..7aab7bc 100644
Binary files a/pixel.png and b/pixel.png differ

$ cat pixel.png
�PNG
▒
IHDR7n�$gAMA��
              �abKGD݊�tIME�

                          -2R��
IDA�c`�!�3%tEXtdate:create2020-06-11T11:45:04+12:00��r.%tEXtdate:modify2020-06-11T11:45:04+12:00��ʒIEND�B`�

二进制文件中的数据不能像纯文本一样被解析,因此,如果二进制文件发生任何更改,则必须重写整个内容。一个版本与另一个版本之间唯一的区别就是全部不同,这会快速增加仓库大小。

更糟糕的是,Git 仓库维护者无法合理地审计二进制数据。这违反了头号规则:应该对仓库的内容了如指掌。

除了常用的 POSIX 工具之外,你还可以使用 git diff 检测二进制文件。当你尝试使用 --numstat 选项来比较二进制文件时,Git 返回空结果:

$ git diff --numstat /dev/null pixel.png | tee
-     -   /dev/null => pixel.png
$ git diff --numstat /dev/null file.txt | tee
5788  0   /dev/null => list.txt

如果你正在考虑将二进制大文件(BLOB)提交到仓库,请停下来先思考一下。如果它是二进制文件,那它是由什么生成的。是否有充分的理由不在构建时生成它们,而是将它们提交到仓库?如果你认为提交二进制数据是有意义的,请确保在 README 文件或类似文件中指明二进制文件的位置、为什么是二进制文件的原因以及更新它们的协议是什么。必须谨慎对其更新,因为你每提交一个二进制大文件的变化,它的存储空间实际上都会加倍。

让第三方库留在第三方

第三方库也不例外。尽管它是开源的众多优点之一,你可以不受限制地重用和重新分发不是你编写的代码,但是有很多充分的理由不把第三方库存储在你自己的仓库中。首先,除非你自己检查了所有代码(以及将来的合并),否则你不能为第三方完全担保。其次,当你将第三方库复制到你的 Git 仓库中时,会将焦点从真正的上游源代码中分离出来。从技术上讲,对库有信心的人只对该库的主副本有把握,而不是对随机仓库的副本有把握。如果你需要锁定特定版本的库,请给开发者提供一个合理的项目所需的发布 URL,或者使用 Git 子模块

抵制盲目的 git add

 title=

如果你的项目已编译,请抵制住使用 git add . 的冲动(其中 . 是当前目录或特定文件夹的路径),因为这是一种添加任何新东西的简单方法。如果你不是手动编译项目,而是使用 IDE 为你管理项目,这一点尤其重要。用 IDE 管理项目时,跟踪添加到仓库中的内容会非常困难,因此仅添加你实际编写的内容非常重要,而不是添加项目文件夹中出现的任何新对象。

如果你使用了 git add .,请在推送之前检查暂存区里的内容。如果在运行 make clean 或等效命令后,执行 git status 时在项目文件夹中看到一个陌生的对象,请找出它的来源,以及为什么仍然在项目的目录中。这是一种罕见的构建工件,不会在编译期间重新生成,因此在提交前请三思。

使用 Git ignore

 title=

许多为程序员打造的便利也非常杂乱。任何项目的典型项目目录,无论是编程的,还是艺术的或其他的,到处都是隐藏的文件、元数据和遗留的工件。你可以尝试忽略这些对象,但是 git status 中的提示越多,你错过某件事的可能性就越大。

你可以通过维护一个良好的 gitignore 文件来为你过滤掉这种噪音。因为这是使用 Git 的用户的共同要求,所以有一些入门级的 gitignore 文件。Github.com/github/gitignore 提供了几个专门创建的 gitignore 文件,你可以下载这些文件并将其放置到自己的项目中,Gitlab.com 在几年前就将gitignore 模板集成到了仓库创建工作流程中。使用这些模板来帮助你为项目创建适合的 gitignore 策略并遵守它。

查看合并请求

 title=

当你通过电子邮件收到一个合并/拉取请求或补丁文件时,不要只是为了确保它能正常工作而进行测试。你的工作是阅读进入代码库的新代码,并了解其是如何产生结果的。如果你不同意这个实现,或者更糟的是,你不理解这个实现,请向提交该实现的人发送消息,并要求其进行说明。质疑那些希望成为版本库永久成员的代码并不是一种社交失误,但如果你不知道你把什么合并到用户使用的代码中,那就是违反了你和用户之间的社交契约。

Git 责任

社区致力于开源软件良好的安全性。不要鼓励你的仓库中不良的 Git 实践,也不要忽视你克隆的仓库中的安全威胁。Git 功能强大,但它仍然只是一个计算机程序,因此要以人为本,确保每个人的安全。


via: https://opensource.com/article/20/7/git-repos-best-practices

作者:Seth Kenlon 选题:lujun9972 译者:stevenzdg988 校对:wxy

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

这篇文章介绍 Pulp,一个开源仓库管理解决方案,它的使用范围和功能在不断增长。

Foreman 是一个强大的管理和自动化产品,它为 Linux 环境的管理员提供了企业级的解决方案,它适用于四个关键场景:供应管理、配置管理、补丁管理和内容管理。Foreman 中内容管理功能的一个主要组成部分是由 Pulp 项目提供的。虽然 Pulp 是这个产品的一个组成部分,但它也是一个独立的、自由开源的项目,自身也在取得巨大的进步。

让我们来看看 Pulp 项目,特别是最新版本 Pulp 3 的功能。

什么是 Pulp?

Pulp 是一个管理软件包仓库,并将其提供给大量的消费者的平台。你可以使用 Pulp 在不同环境中镜像、同步、上传和推广各种内容,如 RPM、Python 包、Ansible 集合、容器镜像等。如果你有几十个、几百个甚至上千个软件包,并需要更好的方式来管理它们,Pulp 可以帮助你。

最新的主要版本是 Pulp 3,它于 2019 年 12 月发布。Pulp 3 是多年来收集用户需求的结晶,并对现有的 Pulp 架构进行了全面的技术改造,以提高可靠性和灵活性。另外,它还包含了大量的新功能。

谁在使用 Pulp?

大多数情况下,在 Pulp 用户管理的企业软件环境中,内容的稳定性和可靠性是最重要的。Pulp 用户希望有一个平台来开发内容,而不用担心仓库可能会消失。他们希望以安全的方式在其生命周期环境的不同阶段推广内容,优化磁盘空间并扩展环境以满足新的需求。他们还需要灵活处理各种内容类型。Pulp 3 提供了这些以及更多功能。

在一处管理各类内容

安装 Pulp 后,你可以为你计划管理的内容类型添加内容插件,将内容镜像到本地,添加私人托管的内容,并根据你的需求混合内容。例如,如果你是 Ansible 用户,而你又不想在 Ansible Galaxy 上托管你的私有内容,你可以添加 Pulp Ansible 插件,镜像你所需要的公共 Ansible 内容,并将 Pulp 作为一个内部平台,在你的组织中管理和分发可扩展的公共和私有 Ansible 角色和集合的混合。你可以用任何内容类型执行此操作。有各种各样的内容插件可供选择,包括 RPM、Debian、Python、容器和 Ansible 等等。还有一个文件插件,你可以用它来管理 ISO 镜像等文件。

如果你没有找到你所需的内容类型插件,Pulp 3 引入了新的插件 API 和插件模板,你可以轻松创建一个属于自己的 Pulp 插件。你可以根据插件编写指南自动生成一个最小可用的插件,然后从那里开始构建。

高可用性

在 Pulp 3 中,从 MongoDB 到 PostgreSQL 的转变促进了性能和数据完整性的重大改进。Pulp 用户现在有了一个完全开源的技术栈,它可以提供高可用性(HA)和更好的扩展性。

仓库版本管理

使用 Pulp 3,你可以毫无风险地进行试验。每次你添加或删除内容时,Pulp 都会创建一个不可变的仓库版本,这样你就可以回滚到早期的版本,从而保证操作的安全性和稳定性。通过使用发布和分发,你可以公开一个仓库的多个版本,你可以将其作为回滚到早期版本的另一种方法。如要回滚,你可以简单地将你的分发指向一个旧的发布。

磁盘优化

任何软件开发环境的主要挑战之一是磁盘优化。如果你不断地下载包,例如,你今天需要但明天不再需要的仓库每日构建,那么磁盘空间将很快成为一个问题。Pulp 3 的设计已经考虑到了磁盘优化。当默认下载并保存所有的软件包,你也可以启用“按需”或“流式”选项。“按需”选项只下载和保存客户要求的内容,从而节省了磁盘空间。使用“流式”选项,它也会根据客户的要求进行下载,但它不会将内容保存在 Pulp 中。这对于同步内容是非常理想的,例如,从一个每日仓库同步,并让你在后期免于执行磁盘清理。

多种存储选项

即使进行了最好的磁盘优化,随着项目的发展,你可能需要一种方法来扩展你的部署以满足需求。除了本地文件存储,Pulp 还支持一系列的云存储选项,如 Amazon S3 和 Azure,以确保你可以扩展满足你的部署需求。

保护你的内容

Pulp 3 可以选择添加 Certguard 插件,该插件提供了一个支持 X.509 的 ContentGuard,它要求客户在收到 Pulp 的内容之前提交证明其对内容的权利的证书。

只要客户端的证书没有过期,且由证书颁发机构签署,并在创建时存储在 Certguard 上,任何客户端在请求时提供基于 X.509 或基于 Red Hat 订阅管理证书都将获得授权。客户端使用安全传输层(TLS)提供证书,这证明客户端不仅有证书,还有它的密钥。你可以放心地开发,知道你的内容正在受到保护。

Pulp 团队也在积极为整个 Pulp 部署一个基于角色的访问控制系统,这样管理员就可以确保正确的用户可以访问正确的环境。

在容器中试用 Pulp

如果你有兴趣亲自评估 Pulp 3,你可以使用 Docker 或 Podman 轻松在容器中安装 Pulp 3。Pulp 团队一直在努力简化安装过程。你也可以使用 Ansible 剧本 来自动完成 Pulp 3 的全部安装和配置。


via: https://opensource.com/article/20/8/manage-repositories-pulp

作者:Melanie Corr 选题:lujun9972 译者:geekpi 校对:wxy

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

有时候你可能想知道安装的软件包来自于哪个仓库。这将帮助你在遇到包冲突问题时进行故障排除。因为第三方仓库拥有最新版本的软件包,所以有时候当你试图安装一些包的时候会出现兼容性的问题。在 Linux 上一切都是可能的,因为你可以安装一个即使在你的发行版系统上不能使用的包。你也可以安装一个最新版本的包,即使你的发行版系统仓库还没有这个版本,怎么做到的呢?这就是为什么出现了第三方仓库。它们允许用户从库中安装所有可用的包。

几乎所有的发行版系统都允许第三方软件库。一些发行版还会官方推荐一些不会取代基础仓库的第三方仓库,例如 CentOS 官方推荐安装 EPEL 库

下面是常用的仓库列表和它们的详细信息。

  • CentOS: EPELELRepo 等是 Centos 社区认证仓库
  • Fedora: RPMfusion 仓库 是经常被很多 Fedora 用户使用的仓库。
  • ArchLinux: ArchLinux 社区仓库包含了来自于 Arch 用户仓库的可信用户审核通过的软件包。
  • openSUSE: Packman 仓库 为 openSUSE 提供了各种附加的软件包,特别是但不限于那些在 openSUSE Build Service 应用黑名单上的与多媒体相关的应用和库。它是 openSUSE 软件包的最大外部软件库。
  • Ubuntu:个人软件包归档(PPA)是一种软件仓库。开发者们可以创建这种仓库来分发他们的软件。你可以在 PPA 导航页面找到相关信息。同时,你也可以启用 Cananical 合作伙伴软件仓库。

仓库是什么?

软件仓库是存储特定的应用程序的软件包的集中场所。

所有的 Linux 发行版都在维护他们自己的仓库,并允许用户在他们的机器上获取和安装包。

每个厂商都提供了各自的包管理工具来管理它们的仓库,例如搜索、安装、更新、升级、删除等等。

除了 RHEL 和 SUSE 以外大部分 Linux 发行版都是自由软件。要访问付费的仓库,你需要购买其订阅服务。

为什么我们需要启用第三方仓库?

在 Linux 里,并不建议从源代码安装包,因为这样做可能会在升级软件和系统的时候产生很多问题,这也是为什么我们建议从库中安装包而不是从源代码安装。

在 RHEL/CentOS 系统上我们如何得知安装的软件包来自哪个仓库?

这可以通过很多方法实现。我们会给你所有可能的选择,你可以选择一个对你来说最合适的。

方法-1:使用 yum 命令

RHEL 和 CentOS 系统使用 RPM 包,因此我们能够使用 Yum 包管理器 来获得信息。

YUM 即 “Yellodog Updater, Modified” 是适用于基于 RPM 的系统例如 RHEL 和 CentOS 的一个开源命令行前端包管理工具。

yum 是从发行版仓库和其他第三方库中获取、安装、删除、查询和管理 RPM 包的一个主要工具。

# yum info apachetop
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * epel: epel.mirror.constant.com
Installed Packages
Name        : apachetop
Arch        : x86_64
Version     : 0.15.6
Release     : 1.el7
Size        : 65 k
Repo        : installed
From repo   : epel
Summary     : A top-like display of Apache logs
URL         : https://github.com/tessus/apachetop
License     : BSD
Description : ApacheTop watches a logfile generated by Apache (in standard common or
            : combined logformat, although it doesn't (yet) make use of any of the extra
            : fields in combined) and generates human-parsable output in realtime.

apachetop 包来自 EPEL 仓库。

方法-2:使用 yumdb 命令

yumdb info 提供了类似于 yum info 的信息但是它又提供了包校验和数据、类型、用户信息(谁安装的软件包)。从 yum 3.2.26 开始,yum 已经开始在 rpmdatabase 之外存储额外的信息(user 表示软件是用户安装的,dep 表示它是作为依赖项引入的)。

# yumdb info lighttpd
Loaded plugins: fastestmirror
lighttpd-1.4.50-1.el7.x86_64
     checksum_data = a24d18102ed40148cfcc965310a516050ed437d728eeeefb23709486783a4d37
     checksum_type = sha256
     command_line = --enablerepo=epel install lighttpd apachetop aria2 atop axel
     from_repo = epel
     from_repo_revision = 1540756729
     from_repo_timestamp = 1540757483
     installed_by = 0
     origin_url = https://epel.mirror.constant.com/7/x86_64/Packages/l/lighttpd-1.4.50-1.el7.x86_64.rpm
     reason = user
     releasever = 7
     var_contentdir = centos
     var_infra = stock
     var_uuid = ce328b07-9c0a-4765-b2ad-59d96a257dc8

lighttpd 包来自 EPEL 仓库。

方法-3:使用 rpm 命令

RPM 命令 即 “Red Hat Package Manager” 是一个适用于基于 Red Hat 的系统(例如 RHEL、CentOS、Fedora、openSUSE & Mageia)的强大的命令行包管理工具。

这个工具允许你在你的 Linux 系统/服务器上安装、更新、移除、查询和验证软件。RPM 文件具有 .rpm 后缀名。RPM 包是用必需的库和依赖关系构建的,不会与系统上安装的其他包冲突。

# rpm -qi apachetop
Name        : apachetop
Version     : 0.15.6
Release     : 1.el7
Architecture: x86_64
Install Date: Mon 29 Oct 2018 06:47:49 AM EDT
Group       : Applications/Internet
Size        : 67020
License     : BSD
Signature   : RSA/SHA256, Mon 22 Jun 2015 09:30:26 AM EDT, Key ID 6a2faea2352c64e5
Source RPM  : apachetop-0.15.6-1.el7.src.rpm
Build Date  : Sat 20 Jun 2015 09:02:37 PM EDT
Build Host  : buildvm-22.phx2.fedoraproject.org
Relocations : (not relocatable)
Packager    : Fedora Project
Vendor      : Fedora Project
URL         : https://github.com/tessus/apachetop
Summary     : A top-like display of Apache logs
Description :
ApacheTop watches a logfile generated by Apache (in standard common or
combined logformat, although it doesn't (yet) make use of any of the extra
fields in combined) and generates human-parsable output in realtime.

apachetop 包来自 EPEL 仓库。

方法-4:使用 repoquery 命令

repoquery 是一个从 YUM 库查询信息的程序,类似于 rpm 查询。

# repoquery -i httpd

Name        : httpd
Version     : 2.4.6
Release     : 80.el7.centos.1
Architecture: x86_64
Size        : 9817285
Packager    : CentOS BuildSystem 
Group       : System Environment/Daemons
URL         : http://httpd.apache.org/
Repository  : updates
Summary     : Apache HTTP Server
Source      : httpd-2.4.6-80.el7.centos.1.src.rpm
Description :
The Apache HTTP Server is a powerful, efficient, and extensible
web server.

httpd 包来自 CentOS updates 仓库。

在 Fedora 系统上我们如何得知安装的包来自哪个仓库?

DNF 是 “Dandified yum” 的缩写。DNF 是使用 hawkey/libsolv 库作为后端的下一代 yum 包管理器(yum 的分支)。从 Fedora 18 开始 Aleš Kozumplík 开始开发 DNF,并最终在 Fedora 22 上得以应用/启用。

dnf 命令 用于在 Fedora 22 以及之后的系统上安装、更新、搜索和删除包。它会自动解决依赖并使安装包的过程变得顺畅,不会出现任何问题。

$ dnf info tilix
Last metadata expiration check: 27 days, 10:00:23 ago on Wed 04 Oct 2017 06:43:27 AM IST.
Installed Packages
Name         : tilix
Version      : 1.6.4
Release      : 1.fc26
Arch         : x86_64
Size         : 3.6 M
Source       : tilix-1.6.4-1.fc26.src.rpm
Repo         : @System
From repo    : updates
Summary      : Tiling terminal emulator
URL          : https://github.com/gnunn1/tilix
License      : MPLv2.0 and GPLv3+ and CC-BY-SA
Description  : Tilix is a tiling terminal emulator with the following features:
             : 
             :  - Layout terminals in any fashion by splitting them horizontally or vertically
             :  - Terminals can be re-arranged using drag and drop both within and between
             :    windows
             :  - Terminals can be detached into a new window via drag and drop
             :  - Input can be synchronized between terminals so commands typed in one
             :    terminal are replicated to the others
             :  - The grouping of terminals can be saved and loaded from disk
             :  - Terminals support custom titles
             :  - Color schemes are stored in files and custom color schemes can be created by
             :    simply creating a new file
             :  - Transparent background
             :  - Supports notifications when processes are completed out of view
             : 
             : The application was written using GTK 3 and an effort was made to conform to
             : GNOME Human Interface Guidelines (HIG).

tilix 包来自 Fedora updates 仓库。

在 openSUSE 系统上我们如何得知安装的包来自哪个仓库?

Zypper 是一个使用 libzypp 的命令行包管理器。Zypper 命令 提供了存储库访问、依赖处理、包安装等功能。

$ zypper info nano

Loading repository data...
Reading installed packages...


Information for package nano:
-----------------------------
Repository     : Main Repository (OSS)             
Name           : nano                               
Version        : 2.4.2-5.3                          
Arch           : x86_64                             
Vendor         : openSUSE                           
Installed Size : 1017.8 KiB                         
Installed      : No                                 
Status         : not installed                      
Source package : nano-2.4.2-5.3.src                 
Summary        : Pico editor clone with enhancements
Description    :                                    
    GNU nano is a small and friendly text editor. It aims to emulate
    the Pico text editor while also offering a few enhancements.

nano 包来自于 openSUSE Main 仓库(OSS)。

在 ArchLinux 系统上我们如何得知安装的包来自哪个仓库?

Pacman 命令 即包管理器工具(package manager utility ),是一个简单的用来安装、构建、删除和管理 Arch Linux 软件包的命令行工具。Pacman 使用 libalpm 作为后端来执行所有的操作。

# pacman -Ss chromium
extra/chromium 48.0.2564.116-1
    The open-source project behind Google Chrome, an attempt at creating a safer, faster, and more stable browser
extra/qt5-webengine 5.5.1-9 (qt qt5)
    Provides support for web applications using the Chromium browser project
community/chromium-bsu 0.9.15.1-2
    A fast paced top scrolling shooter
community/chromium-chromevox latest-1
    Causes the Chromium web browser to automatically install and update the ChromeVox screen reader extention. Note: This
    package does not contain the extension code.
community/fcitx-mozc 2.17.2313.102-1
    Fcitx Module of A Japanese Input Method for Chromium OS, Windows, Mac and Linux (the Open Source Edition of Google Japanese
    Input)

chromium 包来自 ArchLinux extra 仓库。

或者,我们可以使用以下选项获得关于包的详细信息。

# pacman -Si chromium
Repository      : extra
Name            : chromium
Version         : 48.0.2564.116-1
Description     : The open-source project behind Google Chrome, an attempt at creating a safer, faster, and more stable browser
Architecture    : x86_64
URL             : http://www.chromium.org/
Licenses        : BSD
Groups          : None
Provides        : None
Depends On      : gtk2  nss  alsa-lib  xdg-utils  bzip2  libevent  libxss  icu  libexif  libgcrypt  ttf-font  systemd  dbus
                  flac  snappy  speech-dispatcher  pciutils  libpulse  harfbuzz  libsecret  libvpx  perl  perl-file-basedir
                  desktop-file-utils  hicolor-icon-theme
Optional Deps   : kdebase-kdialog: needed for file dialogs in KDE
                  gnome-keyring: for storing passwords in GNOME keyring
                  kwallet: for storing passwords in KWallet
Conflicts With  : None
Replaces        : None
Download Size   : 44.42 MiB
Installed Size  : 172.44 MiB
Packager        : Evangelos Foutras 
Build Date      : Fri 19 Feb 2016 04:17:12 AM IST
Validated By    : MD5 Sum  SHA-256 Sum  Signature

chromium 包来自 ArchLinux extra 仓库。

在基于 Debian 的系统上我们如何得知安装的包来自哪个仓库?

在基于 Debian 的系统例如 Ubuntu、LinuxMint 上可以使用两种方法实现。

方法-1:使用 apt-cache 命令

apt-cache 命令 可以显示存储在 APT 内部数据库的很多信息。这些信息是一种缓存,因为它们是从列在 source.list 文件里的不同的源中获得的。这个过程发生在 apt 更新操作期间。

$ apt-cache policy python3
python3:
  Installed: 3.6.3-0ubuntu2
  Candidate: 3.6.3-0ubuntu3
  Version table:
     3.6.3-0ubuntu3 500
        500 http://in.archive.ubuntu.com/ubuntu artful-updates/main amd64 Packages
 *** 3.6.3-0ubuntu2 500
        500 http://in.archive.ubuntu.com/ubuntu artful/main amd64 Packages
        100 /var/lib/dpkg/status

python3 包来自 Ubuntu updates 仓库。

方法-2:使用 apt 命令

APT 命令 即 “Advanced Packaging Tool”,是 apt-get 命令的替代品,就像 DNF 是如何取代 YUM 一样。它是具有丰富功能的命令行工具并将所有的功能例如 apt-cacheapt-searchdpkgapt-cdromapt-configapt-ket 等包含在一个命令(APT)中,并且还有几个独特的功能。例如我们可以通过 APT 轻松安装 .dpkg 包,但我们不能使用 apt-get 命令安装,更多类似的功能都被包含进了 APT 命令。apt-get 因缺失了很多未被解决的特性而被 apt 取代。

$ apt -a show notepadqq
Package: notepadqq
Version: 1.3.2-1~artful1
Priority: optional
Section: editors
Maintainer: Daniele Di Sarli 
Installed-Size: 1,352 kB
Depends: notepadqq-common (= 1.3.2-1~artful1), coreutils (>= 8.20), libqt5svg5 (>= 5.2.1), libc6 (>= 2.14), libgcc1 (>= 1:3.0), libqt5core5a (>= 5.9.0~beta), libqt5gui5 (>= 5.7.0), libqt5network5 (>= 5.2.1), libqt5printsupport5 (>= 5.2.1), libqt5webkit5 (>= 5.6.0~rc), libqt5widgets5 (>= 5.2.1), libstdc++6 (>= 5.2)
Download-Size: 356 kB
APT-Sources: http://ppa.launchpad.net/notepadqq-team/notepadqq/ubuntu artful/main amd64 Packages
Description: Notepad++-like editor for Linux
 Text editor with support for multiple programming
 languages, multiple encodings and plugin support.

Package: notepadqq
Version: 1.2.0-1~artful1
Status: install ok installed
Priority: optional
Section: editors
Maintainer: Daniele Di Sarli 
Installed-Size: 1,352 kB
Depends: notepadqq-common (= 1.2.0-1~artful1), coreutils (>= 8.20), libqt5svg5 (>= 5.2.1), libc6 (>= 2.14), libgcc1 (>= 1:3.0), libqt5core5a (>= 5.9.0~beta), libqt5gui5 (>= 5.7.0), libqt5network5 (>= 5.2.1), libqt5printsupport5 (>= 5.2.1), libqt5webkit5 (>= 5.6.0~rc), libqt5widgets5 (>= 5.2.1), libstdc++6 (>= 5.2)
Homepage: http://notepadqq.altervista.org
Download-Size: unknown
APT-Manual-Installed: yes
APT-Sources: /var/lib/dpkg/status
Description: Notepad++-like editor for Linux
 Text editor with support for multiple programming
 languages, multiple encodings and plugin support.

notepadqq 包来自 Launchpad PPA。


via: https://www.2daygeek.com/how-do-we-find-out-the-installed-packages-came-from-which-repository/

作者:Prakash Subramanian 选题:lujun9972 译者:zianglei 校对:wxy

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

在基于 RPM 的系统上,例如 RHEL、CentOS 等,我们中的许多人使用 yum 包管理器来管理软件的安装、删除、更新、搜索等。

Linux 发行版的大部分软件都来自发行版官方仓库。官方仓库包含大量免费和开源的应用和软件。它很容易安装和使用。

由于一些限制和专有问题,基于 RPM 的发行版在其官方仓库中没有提供某些包。另外,出于稳定性考虑,它不会提供最新版本的核心包。

为了克服这种情况,我们需要安装或启用需要的第三方仓库。对于基于 RPM 的系统,有许多第三方仓库可用,但所建议使用的仓库很少,因为这些不会替换大量的基础包。

建议阅读:

这可以在基于 RPM 的系统上完成,比如 RHEL, CentOS, OEL, Fedora 等。

  • Fedora 系统使用 dnf config-manager [options] [section …]
  • 其它基于 RPM 的系统使用 yum-config-manager [options] [section …]

如何列出启用的仓库

只需运行以下命令即可检查系统上启用的仓库列表。

对于 CentOS/RHEL/OLE 系统:

# yum repolist
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
repo id                                                       repo name                                                                 status
base                                                          CentOS-6 - Base                                                           6,706
extras                                                        CentOS-6 - Extras                                                            53
updates                                                       CentOS-6 - Updates                                                        1,255
repolist: 8,014

对于 Fedora 系统:

# dnf repolist

如何在系统中添加一个新仓库

每个仓库通常都提供自己的 .repo 文件。要将此类仓库添加到系统中,使用 root 用户运行以下命令。在我们的例子中将添加 EPEL 仓库 和 IUS 社区仓库,见下文。

但是没有 .repo 文件可用于这些仓库。因此,我们使用以下方法进行安装。

对于 EPEL 仓库,因为它可以从 CentOS 额外仓库获得,所以运行以下命令来安装它。

# yum install epel-release -y

对于 IUS 社区仓库,运行以下 bash 脚本来安装。

# curl 'https://setup.ius.io/' -o setup-ius.sh
# sh setup-ius.sh

如果你有 .repo 文件,在 RHEL/CentOS/OEL 中,只需运行以下命令来添加一个仓库。

# yum-config-manager --add-repo http://www.example.com/example.repo

Loaded plugins: product-id, refresh-packagekit, subscription-manager
adding repo from: http://www.example.com/example.repo
grabbing file http://www.example.com/example.repo to /etc/yum.repos.d/example.repo
example.repo                                             |  413 B     00:00
repo saved to /etc/yum.repos.d/example.repo

对于 Fedora 系统,运行以下命令来添加一个仓库:

# dnf config-manager --add-repo http://www.example.com/example.repo
adding repo from: http://www.example.com/example.repo

如果在添加这些仓库之后运行 yum repolist 命令,你就可以看到新添加的仓库了。Yes,我看到了。

注意:每当运行 yum repolist 命令时,该命令会自动从相应的仓库获取更新,并将缓存保存在本地系统中。

# yum repolist

Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
epel/metalink                                                                                                          | 6.1 kB     00:00
* epel: epel.mirror.constant.com
* ius: ius.mirror.constant.com
ius                                                                                                                    | 2.3 kB     00:00
repo id                                     repo name                                                                                   status
base                                        CentOS-6 - Base                                                                              6,706
epel                                        Extra Packages for Enterprise Linux 6 - x86_64                                              12,505
extras                                      CentOS-6 - Extras                                                                               53
ius                                         IUS Community Packages for Enterprise Linux 6 - x86_64                                         390
updates                                     CentOS-6 - Updates                                                                           1,255
repolist: 20,909

每个仓库都有多个渠道,比如测试(Testing)、开发(Dev)和存档(Archive)等。通过导航到仓库文件位置,你可以更好地理解这一点。

# ls -lh /etc/yum.repos.d
total 64K
-rw-r--r-- 1 root root 2.0K Apr 12 02:44 CentOS-Base.repo
-rw-r--r-- 1 root root 647 Apr 12 02:44 CentOS-Debuginfo.repo
-rw-r--r-- 1 root root 289 Apr 12 02:44 CentOS-fasttrack.repo
-rw-r--r-- 1 root root 630 Apr 12 02:44 CentOS-Media.repo
-rw-r--r-- 1 root root 916 May 18 11:07 CentOS-SCLo-scl.repo
-rw-r--r-- 1 root root 892 May 18 10:36 CentOS-SCLo-scl-rh.repo
-rw-r--r-- 1 root root 6.2K Apr 12 02:44 CentOS-Vault.repo
-rw-r--r-- 1 root root 7.9K Apr 12 02:44 CentOS-Vault.repo.rpmnew
-rw-r--r-- 1 root root 957 May 18 10:41 epel.repo
-rw-r--r-- 1 root root 1.1K Nov 4 2012 epel-testing.repo
-rw-r--r-- 1 root root 1.2K Feb 23 2017 ius-archive.repo
-rw-r--r-- 1 root root 1.2K Feb 23 2017 ius-dev.repo
-rw-r--r-- 1 root root 1.1K May 18 10:41 ius.repo
-rw-r--r-- 1 root root 1.2K Feb 23 2017 ius-testing.repo

如何在系统中启用一个仓库

当你在默认情况下添加一个新仓库时,它将启用它们的稳定仓库,这就是为什么我们在运行 yum repolist 命令时获取了仓库信息。在某些情况下,如果你希望启用它们的测试、开发或存档仓库,使用以下命令。另外,我们还可以使用此命令启用任何禁用的仓库。

为了验证这一点,我们将启用 epel-testing.repo,运行下面的命令:

# yum-config-manager --enable epel-testing

Loaded plugins: fastestmirror
==================================================================================== repo: epel-testing =====================================================================================
[epel-testing]
bandwidth = 0
base_persistdir = /var/lib/yum/repos/x86_64/6
baseurl =
cache = 0
cachedir = /var/cache/yum/x86_64/6/epel-testing
cost = 1000
enabled = 1
enablegroups = True
exclude =
failovermethod = priority
ftp_disable_epsv = False
gpgcadir = /var/lib/yum/repos/x86_64/6/epel-testing/gpgcadir
gpgcakey =
gpgcheck = True
gpgdir = /var/lib/yum/repos/x86_64/6/epel-testing/gpgdir
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
hdrdir = /var/cache/yum/x86_64/6/epel-testing/headers
http_caching = all
includepkgs =
keepalive = True
mdpolicy = group:primary
mediaid =
metadata_expire = 21600
metalink =
mirrorlist = https://mirrors.fedoraproject.org/metalink?repo=testing-epel6&arch=x86_64
mirrorlist_expire = 86400
name = Extra Packages for Enterprise Linux 6 - Testing - x86_64
old_base_cache_dir =
password =
persistdir = /var/lib/yum/repos/x86_64/6/epel-testing
pkgdir = /var/cache/yum/x86_64/6/epel-testing/packages
proxy = False
proxy_dict =
proxy_password =
proxy_username =
repo_gpgcheck = False
retries = 10
skip_if_unavailable = False
ssl_check_cert_permissions = True
sslcacert =
sslclientcert =
sslclientkey =
sslverify = True
throttle = 0
timeout = 30.0
username =

运行 yum repolist 命令来检查是否启用了 “epel-testing”。它被启用了,我可以从列表中看到它。

# yum repolist
Loaded plugins: fastestmirror, security
Determining fastest mirrors
epel/metalink                                                                                                                                                         |  18 kB     00:00
epel-testing/metalink                                                                                                                                                 |  17 kB     00:00
 * epel: mirror.us.leaseweb.net
 * epel-testing: mirror.us.leaseweb.net
 * ius: mirror.team-cymru.com
base                                                                                                                                                                  | 3.7 kB     00:00
centos-sclo-sclo                                                                                                                                                      | 2.9 kB     00:00
epel                                                                                                                                                                  | 4.7 kB     00:00
epel/primary_db                                                                                                                                                       | 6.0 MB     00:00
epel-testing                                                                                                                                                          | 4.7 kB     00:00
epel-testing/primary_db                                                                                                                                               | 368 kB     00:00
extras                                                                                                                                                                | 3.4 kB     00:00
ius                                                                                                                                                                   | 2.3 kB     00:00
ius/primary_db                                                                                                                                                        | 216 kB     00:00
updates                                                                                                                                                               | 3.4 kB     00:00
updates/primary_db                                                                                                                                                    | 8.1 MB     00:00 ...
repo id                                                                repo name                                                                                                       status
base                                                                   CentOS-6 - Base                                                                                                  6,706
centos-sclo-sclo                                                       CentOS-6 - SCLo sclo                                                                                               495
epel                                                                   Extra Packages for Enterprise Linux 6 - x86_64                                                                  12,509
epel-testing                                                           Extra Packages for Enterprise Linux 6 - Testing - x86_64                                                           809
extras                                                                 CentOS-6 - Extras                                                                                                   53
ius                                                                    IUS Community Packages for Enterprise Linux 6 - x86_64                                                             390
updates                                                                CentOS-6 - Updates                                                                                               1,288
repolist: 22,250

如果你想同时启用多个仓库,使用以下格式。这个命令将启用 epel、epel-testing 和 ius 仓库:

# yum-config-manager --enable epel epel-testing ius

对于 Fedora 系统,运行下面的命令来启用仓库:

# dnf config-manager --set-enabled epel-testing

如何在系统中禁用一个仓库

无论何时你在默认情况下添加一个新的仓库,它都会启用它们的稳定仓库,这就是为什么我们在运行 yum repolist 命令时获取了仓库信息。如果你不想使用仓库,那么可以通过下面的命令来禁用它。

为了验证这点,我们将要禁用 epel-testing.repoius.repo,运行以下命令:

# yum-config-manager --disable epel-testing ius

Loaded plugins: fastestmirror
==================================================================================== repo: epel-testing =====================================================================================
[epel-testing]
bandwidth = 0
base_persistdir = /var/lib/yum/repos/x86_64/6
baseurl =
cache = 0
cachedir = /var/cache/yum/x86_64/6/epel-testing
cost = 1000
enabled = 0
enablegroups = True
exclude =
failovermethod = priority
ftp_disable_epsv = False
gpgcadir = /var/lib/yum/repos/x86_64/6/epel-testing/gpgcadir
gpgcakey =
gpgcheck = True
gpgdir = /var/lib/yum/repos/x86_64/6/epel-testing/gpgdir
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
hdrdir = /var/cache/yum/x86_64/6/epel-testing/headers
http_caching = all
includepkgs =
keepalive = True
mdpolicy = group:primary
mediaid =
metadata_expire = 21600
metalink =
mirrorlist = https://mirrors.fedoraproject.org/metalink?repo=testing-epel6&arch=x86_64
mirrorlist_expire = 86400
name = Extra Packages for Enterprise Linux 6 - Testing - x86_64
old_base_cache_dir =
password =
persistdir = /var/lib/yum/repos/x86_64/6/epel-testing
pkgdir = /var/cache/yum/x86_64/6/epel-testing/packages
proxy = False
proxy_dict =
proxy_password =
proxy_username =
repo_gpgcheck = False
retries = 10
skip_if_unavailable = False
ssl_check_cert_permissions = True
sslcacert =
sslclientcert =
sslclientkey =
sslverify = True
throttle = 0
timeout = 30.0
username =

========================================================================================= repo: ius =========================================================================================
[ius]
bandwidth = 0
base_persistdir = /var/lib/yum/repos/x86_64/6
baseurl =
cache = 0
cachedir = /var/cache/yum/x86_64/6/ius
cost = 1000
enabled = 0
enablegroups = True
exclude =
failovermethod = priority
ftp_disable_epsv = False
gpgcadir = /var/lib/yum/repos/x86_64/6/ius/gpgcadir
gpgcakey =
gpgcheck = True
gpgdir = /var/lib/yum/repos/x86_64/6/ius/gpgdir
gpgkey = file:///etc/pki/rpm-gpg/IUS-COMMUNITY-GPG-KEY
hdrdir = /var/cache/yum/x86_64/6/ius/headers
http_caching = all
includepkgs =
keepalive = True
mdpolicy = group:primary
mediaid =
metadata_expire = 21600
metalink =
mirrorlist = https://mirrors.iuscommunity.org/mirrorlist?repo=ius-centos6&arch=x86_64&protocol=http
mirrorlist_expire = 86400
name = IUS Community Packages for Enterprise Linux 6 - x86_64
old_base_cache_dir =
password =
persistdir = /var/lib/yum/repos/x86_64/6/ius
pkgdir = /var/cache/yum/x86_64/6/ius/packages
proxy = False
proxy_dict =
proxy_password =
proxy_username =
repo_gpgcheck = False
retries = 10
skip_if_unavailable = False
ssl_check_cert_permissions = True
sslcacert =
sslclientcert =
sslclientkey =
sslverify = True
throttle = 0
timeout = 30.0
username =

运行 yum repolist 命令检查 “epel-testing” 和 “ius” 仓库是否被禁用。它被禁用了,我不能看到那些仓库,除了 “epel”。

# yum repolist
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
 * epel: mirror.us.leaseweb.net
repo id                                                                     repo name                                                                                                  status
base                                                                        CentOS-6 - Base                                                                                             6,706
centos-sclo-sclo                                                            CentOS-6 - SCLo sclo                                                                                          495
epel                                        Extra Packages for Enterprise Linux 6 - x86_64                                              12,505
extras                                                                      CentOS-6 - Extras                                                                                              53
updates                                                                     CentOS-6 - Updates                                                                                          1,288
repolist: 21,051

或者,我们可以运行以下命令查看详细信息:

# yum repolist all | grep "epel*\|ius*"
 * epel: mirror.steadfast.net
epel                       Extra Packages for Enterprise Linux 6 enabled: 12,509
epel-debuginfo             Extra Packages for Enterprise Linux 6 disabled
epel-source                Extra Packages for Enterprise Linux 6 disabled
epel-testing               Extra Packages for Enterprise Linux 6 disabled
epel-testing-debuginfo     Extra Packages for Enterprise Linux 6 disabled
epel-testing-source        Extra Packages for Enterprise Linux 6 disabled
ius                        IUS Community Packages for Enterprise disabled
ius-archive                IUS Community Packages for Enterprise disabled
ius-archive-debuginfo      IUS Community Packages for Enterprise disabled
ius-archive-source         IUS Community Packages for Enterprise disabled
ius-debuginfo              IUS Community Packages for Enterprise disabled
ius-dev                    IUS Community Packages for Enterprise disabled
ius-dev-debuginfo          IUS Community Packages for Enterprise disabled
ius-dev-source             IUS Community Packages for Enterprise disabled
ius-source                 IUS Community Packages for Enterprise disabled
ius-testing                IUS Community Packages for Enterprise disabled
ius-testing-debuginfo      IUS Community Packages for Enterprise disabled
ius-testing-source         IUS Community Packages for Enterprise disabled

对于 Fedora 系统,运行以下命令来启用一个仓库:

# dnf config-manager --set-disabled epel-testing

或者,可以通过手动编辑适当的 repo 文件来完成。为此,打开相应的 repo 文件并将值从 enabled=0 改为 enabled=1(启用仓库)或从 enabled=1 变为 enabled=0(禁用仓库)。

即从:

[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

改为:

[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

via: https://www.2daygeek.com/how-to-add-enable-disable-a-repository-dnf-yum-config-manager-on-linux/

作者:Prakash Subramanian 选题:lujun9972 译者:MjSeven 校对:wxy

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

有很多方法可以列出在 Linux 已启用的仓库。我们将在下面展示给你列出已激活仓库的简便方法。这有助于你知晓你的系统上都启用了哪些仓库。一旦你掌握了这些信息,你就可以添加任何之前还没有准备启用的仓库了。

举个例子,如果你想启用 epel 仓库,你需要先检查它是否已经启用了。这篇教程将会帮助你做这件事情。

什么是仓库?

存储特定程序软件包的中枢位置就是一个软件仓库。

所有的 Linux 发行版都在维护自己的仓库,而且允许用户下载并安装这些软件包到他们的机器上。

每个仓库提供者都提供了一套包管理工具,用以管理他们的仓库,比如搜索、安装、更新、升级、移除等等。

大多数 Linux 发行版都作为免费软件,除了 RHEL 和 SUSE,要访问他们的仓库你需要先购买订阅。

建议阅读:

在 RHEL/CentOS 上列出已启用的库

RHEL 和 CentOS 系统使用的是 RPM 包管理,所以我们可以使用 Yum 包管理器查看这些信息。

YUM 意即 “Yellowdog Updater,Modified”,它是一个开源的包管理器的命令行前端,用于基于 RPM 的系统上,例如 RHEL 和 CentOS。

YUM 是获取、安装、删除、查询和管理来自发行版仓库和其他第三方库的 RPM 包的主要工具。

建议阅读: 在 RHEL/CentOS 系统上用 YUM 命令管理包

基于 RHEL 的系统主要提供以下三个主要的仓库。这些仓库是默认启用的。

  • base:它包含了所有的核心包和基础包。
  • extras:它向 CentOS 提供了不破坏上游兼容性或更新基本组件的额外功能。这是一个上游仓库,还有额外的 CentOS 包。
  • updates:它提供了 bug 修复包、安全包和增强包。
# yum repolist
或者
# yum repolist enabled
Loaded plugins: fastestmirror
Determining fastest mirrors
 * epel: ewr.edge.kernel.org
repo id                                                                      repo name                                                                                                 status
!base/7/x86_64                                                               CentOS-7 - Base                                                                                            9,911
!epel/x86_64                                                                 Extra Packages for Enterprise Linux 7 - x86_64                                                            12,687
!extras/7/x86_64                                                             CentOS-7 - Extras                                                                                            403
!updates/7/x86_64                                                            CentOS-7 - Updates                                                                                         1,348
repolist: 24,349

如何列出 Fedora 上已启用的包

DNF 意即 “Dandified yum”。我们可以说 DNF 是下一代的 yum 包管理器,使用了 hawkey/libsolv 作为后端。自从 Fedroa 18 开始,Aleš Kozumplík 就开始开发 DNF,最终在 Fedora 22 上实现/发布。

Fedora 22 及之后的系统上都使用 DNF 安装、升级、搜索和移除包。它可以自动解决依赖问题,并使包的安装过程平顺没有任何麻烦。

因为 Yum 许多长时间未解决的问题,现在 Yum 已经被 DNF 所替代。你问为什么他没有给 Yum 打补丁。Aleš Kozumplík 解释说修补在技术上太困难了,而 YUM 团队无法立即承受这些变更,还有其他的问题,YUM 是 56k 行代码,而 DNF 是 29k 行代码。因此,除了分叉之外,别无选择。

建议阅读: 在 Fedora 上使用 DNF 管理软件

Fedora 主要提供下面两个主仓库。这些库将被默认启用。

  • fedora:它包括所有的核心包和基础包。
  • updates:它提供了来自稳定发行版的 bug 修复包、安全包和增强包。
# dnf repolist
或者
# dnf repolist enabled
Last metadata expiration check: 0:02:56 ago on Wed 10 Oct 2018 06:12:22 PM IST.
repo id                                         repo name                                                        status
docker-ce-stable                                Docker CE Stable - x86_64                                             6
*fedora                                         Fedora 26 - x86_64                                               53,912
home_mhogomchungu                               mhogomchungu's Home Project (Fedora_25)                              19
home_moritzmolch_gencfsm                        Gnome Encfs Manager (Fedora_25)                                       5
mystro256-gnome-redshift                        Copr repo for gnome-redshift owned by mystro256                       6
nodesource                                      Node.js Packages for Fedora Linux 26 - x86_64                        83
rabiny-albert                                   Copr repo for albert owned by rabiny                                  3
*rpmfusion-free                                 RPM Fusion for Fedora 26 - Free                                     536
*rpmfusion-free-updates                         RPM Fusion for Fedora 26 - Free - Updates                           278
*rpmfusion-nonfree                              RPM Fusion for Fedora 26 - Nonfree                                  202
*rpmfusion-nonfree-updates                      RPM Fusion for Fedora 26 - Nonfree - Updates                         95
*updates                                        Fedora 26 - x86_64 - Updates   

如何列出 Debian/Ubuntu 上已启用的仓库

基于 Debian 的系统使用的是 APT/APT-GET 包管理,因此我们可以使用 APT/APT-GET 包管理器去获取该信息。

APT 意即 “Advanced Packaging Tool”,它取代了 apt-get,就像 DNF 取代 Yum 一样。 它具有丰富的命令行工具,在一个命令(apt)中包含了所有功能,如 apt-cacheapt-searchdpkgapt-cdromapt-configapt-key 等,还有其他几个独特的功能。 例如,我们可以通过 APT 轻松安装 .dpkg 软件包,而我们无法通过 APT-GET 获得和包含在 APT 命令中类似的功能。 由于 APT-GET 中未能解决的问题,APT 取代了 APT-GET。

apt-get 是一个强大的命令行工具,它用以自动下载和安装新的软件包、升级已存在的软件包、更新包索引列表、还有升级整个基于 Debian 的系统。

# apt-cache policy
Package files:
 100 /var/lib/dpkg/status
     release a=now
 500 http://ppa.launchpad.net/peek-developers/stable/ubuntu artful/main amd64 Packages
     release v=17.10,o=LP-PPA-peek-developers-stable,a=artful,n=artful,l=Peek stable releases,c=main,b=amd64
     origin ppa.launchpad.net
 500 http://ppa.launchpad.net/notepadqq-team/notepadqq/ubuntu artful/main amd64 Packages
     release v=17.10,o=LP-PPA-notepadqq-team-notepadqq,a=artful,n=artful,l=Notepadqq,c=main,b=amd64
     origin ppa.launchpad.net
 500 http://dl.google.com/linux/chrome/deb stable/main amd64 Packages
     release v=1.0,o=Google, Inc.,a=stable,n=stable,l=Google,c=main,b=amd64
     origin dl.google.com
 500 https://download.docker.com/linux/ubuntu artful/stable amd64 Packages
     release o=Docker,a=artful,l=Docker CE,c=stable,b=amd64
     origin download.docker.com
 500 http://security.ubuntu.com/ubuntu artful-security/multiverse amd64 Packages
     release v=17.10,o=Ubuntu,a=artful-security,n=artful,l=Ubuntu,c=multiverse,b=amd64
     origin security.ubuntu.com
 500 http://security.ubuntu.com/ubuntu artful-security/universe amd64 Packages
     release v=17.10,o=Ubuntu,a=artful-security,n=artful,l=Ubuntu,c=universe,b=amd64
     origin security.ubuntu.com
 500 http://security.ubuntu.com/ubuntu artful-security/restricted i386 Packages
     release v=17.10,o=Ubuntu,a=artful-security,n=artful,l=Ubuntu,c=restricted,b=i386
     origin security.ubuntu.com
.
.
     origin in.archive.ubuntu.com
 500 http://in.archive.ubuntu.com/ubuntu artful/restricted amd64 Packages
     release v=17.10,o=Ubuntu,a=artful,n=artful,l=Ubuntu,c=restricted,b=amd64
     origin in.archive.ubuntu.com
 500 http://in.archive.ubuntu.com/ubuntu artful/main i386 Packages
     release v=17.10,o=Ubuntu,a=artful,n=artful,l=Ubuntu,c=main,b=i386
     origin in.archive.ubuntu.com
 500 http://in.archive.ubuntu.com/ubuntu artful/main amd64 Packages
     release v=17.10,o=Ubuntu,a=artful,n=artful,l=Ubuntu,c=main,b=amd64
     origin in.archive.ubuntu.com
Pinned packages:

如何在 openSUSE 上列出已启用的仓库

openSUSE 使用 zypper 包管理,因此我们可以使用 zypper 包管理获得更多信息。

Zypper 是 suse 和 openSUSE 发行版的命令行包管理。它用于安装、更新、搜索、移除包和管理仓库,执行各种查询等。Zypper 以 ZYpp 系统管理库(libzypp)作为后端。

建议阅读: 在 openSUSE 和 suse 系统上使用 Zypper 命令管理包

# zypper repos

# | Alias                 | Name                                                | Enabled | GPG Check | Refresh
--+-----------------------+-----------------------------------------------------+---------+-----------+--------
1 | packman-repository    | packman-repository                                  | Yes     | (r ) Yes  | Yes    
2 | google-chrome         | google-chrome                                       | Yes     | (r ) Yes  | Yes  
3 | home_lazka0_ql-stable | Stable Quod Libet / Ex Falso Builds (openSUSE_42.1) | Yes     | (r ) Yes  | No      
4 | repo-non-oss          | openSUSE-leap/42.1-Non-Oss                          | Yes     | (r ) Yes  | Yes    
5 | repo-oss              | openSUSE-leap/42.1-Oss                              | Yes     | (r ) Yes  | Yes    
6 | repo-update           | openSUSE-42.1-Update                                | Yes     | (r ) Yes  | Yes    
7 | repo-update-non-oss   | openSUSE-42.1-Update-Non-Oss                        | Yes     | (r ) Yes  | Yes

列出仓库及 URI。

# zypper lr -u

# | Alias                 | Name                                                | Enabled | GPG Check | Refresh | URI                                                                             
--+-----------------------+-----------------------------------------------------+---------+-----------+---------+---------------------------------------------------------------------------------
1 | packman-repository    | packman-repository                                  | Yes     | (r ) Yes  | Yes     | http://ftp.gwdg.de/pub/linux/packman/suse/openSUSE_Leap_42.1/                   
2 | google-chrome         | google-chrome                                       | Yes     | (r ) Yes  | Yes     | http://dl.google.com/linux/chrome/rpm/stable/x86_64                             
3 | home_lazka0_ql-stable | Stable Quod Libet / Ex Falso Builds (openSUSE_42.1) | Yes     | (r ) Yes  | No      | http://download.opensuse.org/repositories/home:/lazka0:/ql-stable/openSUSE_42.1/
4 | repo-non-oss          | openSUSE-leap/42.1-Non-Oss                          | Yes     | (r ) Yes  | Yes     | http://download.opensuse.org/distribution/leap/42.1/repo/non-oss/               
5 | repo-oss              | openSUSE-leap/42.1-Oss                              | Yes     | (r ) Yes  | Yes     | http://download.opensuse.org/distribution/leap/42.1/repo/oss/                   
6 | repo-update           | openSUSE-42.1-Update                                | Yes     | (r ) Yes  | Yes     | http://download.opensuse.org/update/leap/42.1/oss/                              
7 | repo-update-non-oss   | openSUSE-42.1-Update-Non-Oss                        | Yes     | (r ) Yes  | Yes     | http://download.opensuse.org/update/leap/42.1/non-oss/

通过优先级列出仓库。

# zypper lr -p

# | Alias                 | Name                                                | Enabled | GPG Check | Refresh | Priority
--+-----------------------+-----------------------------------------------------+---------+-----------+---------+---------
1 | packman-repository    | packman-repository                                  | Yes     | (r ) Yes  | Yes     |   99    
2 | google-chrome         | google-chrome                                       | Yes     | (r ) Yes  | Yes     |   99    
3 | home_lazka0_ql-stable | Stable Quod Libet / Ex Falso Builds (openSUSE_42.1) | Yes     | (r ) Yes  | No      |   99    
4 | repo-non-oss          | openSUSE-leap/42.1-Non-Oss                          | Yes     | (r ) Yes  | Yes     |   99    
5 | repo-oss              | openSUSE-leap/42.1-Oss                              | Yes     | (r ) Yes  | Yes     |   99    
6 | repo-update           | openSUSE-42.1-Update                                | Yes     | (r ) Yes  | Yes     |   99    
7 | repo-update-non-oss   | openSUSE-42.1-Update-Non-Oss                        | Yes     | (r ) Yes  | Yes     |   99 

如何列出 Arch Linux 上已启用的仓库

基于 Arch Linux 的系统使用 pacman 包管理,因此我们可以使用 pacman 包管理获取这些信息。

pacman 意即 “package manager utility”。pacman 是一个命令行实用程序,用以安装、构建、移除和管理 Arch Linux 包。pacman 使用 libalpm (Arch Linux 包管理库)作为后端去进行这些操作。

建议阅读: 在基于 Arch Linux的系统上使用 Pacman命令管理包

# pacman -Syy
:: Synchronizing package databases...
 core                                               132.6 KiB  1524K/s 00:00 [############################################] 100%
 extra                                             1859.0 KiB   750K/s 00:02 [############################################] 100%
 community                                            3.5 MiB   149K/s 00:24 [############################################] 100%
 multilib                                           182.7 KiB  1363K/s 00:00 [############################################] 100%

如何使用 INXI Utility 列出 Linux 上已启用的仓库

inix 是 Linux 上检查硬件信息非常有用的工具,还提供很多的选项去获取 Linux 上的所有硬件信息,我从未在 Linux 上发现其他有如此效用的程序。它由 locsmif 分叉自古老而古怪的 infobash。

inix 是一个可以快速显示硬件信息、CPU、硬盘、Xorg、桌面、内核、GCC 版本、进程、内存使用和很多其他有用信息的程序,还使用于论坛技术支持和调试工具上。

这个实用程序将会显示所有发行版仓库的数据信息,例如 RHEL、CentOS、Fedora、Debain、Ubuntu、LinuxMint、ArchLinux、openSUSE、Manjaro等。

建议阅读: inxi – 一个在 Linux 上检查硬件信息的好工具

# inxi -r
Repos:     Active apt sources in file: /etc/apt/sources.list
           deb http://in.archive.ubuntu.com/ubuntu/ yakkety main restricted
           deb http://in.archive.ubuntu.com/ubuntu/ yakkety-updates main restricted
           deb http://in.archive.ubuntu.com/ubuntu/ yakkety universe
           deb http://in.archive.ubuntu.com/ubuntu/ yakkety-updates universe
           deb http://in.archive.ubuntu.com/ubuntu/ yakkety multiverse
           deb http://in.archive.ubuntu.com/ubuntu/ yakkety-updates multiverse
           deb http://in.archive.ubuntu.com/ubuntu/ yakkety-backports main restricted universe multiverse
           deb http://security.ubuntu.com/ubuntu yakkety-security main restricted
           deb http://security.ubuntu.com/ubuntu yakkety-security universe
           deb http://security.ubuntu.com/ubuntu yakkety-security multiverse
           Active apt sources in file: /etc/apt/sources.list.d/arc-theme.list
           deb http://download.opensuse.org/repositories/home:/Horst3180/xUbuntu_16.04/ /
           Active apt sources in file: /etc/apt/sources.list.d/snwh-ubuntu-pulp-yakkety.list
           deb http://ppa.launchpad.net/snwh/pulp/ubuntu yakkety main

via: https://www.2daygeek.com/how-to-list-the-enabled-active-repositories-in-linux/

作者:Prakash Subramanian 选题:lujun9972 译者:dianbanjiu 校对:wxy

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