在基于 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 系统:
1 2 3 4 5 6 7 8 Loaded plugins: fastestmirror, securityLoading mirror speeds from cached hostfilerepo id repo name statusbase CentOS-6 - Base 6 ,706 extras CentOS-6 - Extras 53 updates CentOS-6 - Updates 1 ,255 repolist : 8 ,014
对于 Fedora 系统:
如何在系统中添加一个新仓库 每个仓库通常都提供自己的 .repo
文件。要将此类仓库添加到系统中,使用 root 用户运行以下命令。在我们的例子中将添加 EPEL 仓库 和 IUS 社区仓库,见下文。
但是没有 .repo
文件可用于这些仓库。因此,我们使用以下方法进行安装。
对于 EPEL 仓库,因为它可以从 CentOS 额外仓库获得,所以运行以下命令来安装它。
对于 IUS 社区仓库,运行以下 bash 脚本来安装。
1 2 # curl 'https://setup.ius.io/' -o setup-ius.sh # sh setup-ius.sh
如果你有 .repo
文件,在 RHEL/CentOS/OEL 中,只需运行以下命令来添加一个仓库。
1 2 3 4 5 6 7 # 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 .repoexample .repo | 413 B 00 :00 repo saved to /etc/yum.repos.d/example .repo
对于 Fedora 系统,运行以下命令来添加一个仓库:
1 2 # dnf config-manager --add-repo http: adding repo from : http:
如果在添加这些仓库之后运行 yum repolist
命令,你就可以看到新添加的仓库了。Yes,我看到了。
注意:每当运行 yum repolist
命令时,该命令会自动从相应的仓库获取更新,并将缓存保存在本地系统中。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 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)等。通过导航到仓库文件位置,你可以更好地理解这一点。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 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
,运行下面的命令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 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”。它被启用了,我可以从列表中看到它。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 # 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 仓库:
对于 Fedora 系统,运行下面的命令来启用仓库:
1 # dnf config-manager --set -enabled
如何在系统中禁用一个仓库 无论何时你在默认情况下添加一个新的仓库,它都会启用它们的稳定仓库,这就是为什么我们在运行 yum repolist
命令时获取了仓库信息。如果你不想使用仓库,那么可以通过下面的命令来禁用它。
为了验证这点,我们将要禁用 epel-testing.repo
和 ius.repo
,运行以下命令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 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”。
1 2 3 4 5 6 7 8 9 10 11 Loaded plugins: fastestmirror, security Loading mirror speeds from cached hostfile * epel: mirror.us.leaseweb.net repo id repo name statusbase 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
或者,我们可以运行以下命令查看详细信息:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 * 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 系统,运行以下命令来启用一个仓库:
1 # dnf config-manager --set -disabled
或者,可以通过手动编辑适当的 repo 文件来完成。为此,打开相应的 repo 文件并将值从 enabled=0
改为 enabled=1
(启用仓库)或从 enabled=1
变为 enabled=0
(禁用仓库)。
即从:
1 2 3 4 5 6 7 8 [epel] name =Extra Packages for Enterprise Linux 6 - $basearch mirrorlist =https://mirrors.fedoraproject.org/metalink?repo=epel-6 &arch=$basearch failovermethod =priorityenabled =0 gpgcheck =1 gpgkey =file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
改为:
1 2 3 4 5 6 7 8 [epel] name =Extra Packages for Enterprise Linux 6 - $basearch mirrorlist =https://mirrors.fedoraproject.org/metalink?repo=epel-6 &arch=$basearch failovermethod =priorityenabled =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中国 荣誉推出