寻找一种在 CentOS 中自动启用 yum 存储库的方法。默认情况下,配置文件如下所示:
[remi]
name=Les RPM de remi pour Enterprise Linux $releasever - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/$releasever/remi/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/remi/mirror
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
failovermethod=priority
[remi-test]
name=Les RPM de remi en test pour Enterprise Linux $releasever - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/$releasever/test/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/test/mirror
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
请注意[remi]
块中的enabled=0
。这就是需要翻转的。问题是我不能只搜索enable=0
,因为remi-test
块也有它,但我不想启用测试存储库。
谢谢。
试试这个:
sed -i '/[remi]/,/^ *[/ s/enabled=0/enabled=1/' your_repo_file
其中:/[remi]/,/^ *[/
告诉sed
只查找从[remi]
到下一个repo
条目的文本块,该条目以[
开头。
sed -i '0,/enabled=0/s//enabled=1/' /etc/yum.repos.d/remi.repo
yum-config-manager [--enable|--disable] rhel-6-server-rpms
这在 RHEL 中有效,你应该能够在 CentOS 中做同样的事情。从以下位置获取存储库名称:
yum repolist [all|enabled|disabled]
该命令将显示已启用/未启用的内容,但在系统上的/etc/yum.repos.d/.repo 文件中配置的内容。
yum-config-manager 是 RHEL6 上的 yum-utils 包的一部分,可能是 EL 发行版的一部分。
sed(1)
不会就地编辑文件,而是将编辑内容发送到其输出。要就地编辑,您需要提供-i
(或--in-place
)标志。另外,您正在做的是编辑包含 [remi].*enabled
的行,您只是找不到。您希望将替换限制为以 [remi]
开头的部分,该部分以下一个[
结尾:
sed -i -e '/[remi]/,/^[/s/enabled=0/enabled=1/' /etc/yum.repos.d/remi.repo
awk 'BEGIN{prev=1;}{if($0~/remi-test/)prev=0;else if($0~/[remi]/)prev=1;if(prev &&$0~/enabled/)print "enabled=1";else print}' your_file
测试如下:
> cat temp
[remi]
name=Les RPM de remi pour Enterprise Linux $releasever - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/$releasever/remi/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/remi/mirror
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
failovermethod=priority
[remi-test]
name=Les RPM de remi en test pour Enterprise Linux $releasever - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/$releasever/test/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/test/mirror
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
[remi-test]
name=Les RPM de remi en test pour Enterprise Linux $releasever - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/$releasever/test/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/test/mirror
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
> awk 'BEGIN{prev=1;}{if($0~/remi-test/)prev=0;else if($0~/[remi]/)prev=1;if(prev &&$0~/enabled/)print "enabled=1";else print}' temp
[remi]
name=Les RPM de remi pour Enterprise Linux $releasever - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/$releasever/remi/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/remi/mirror
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
failovermethod=priority
[remi-test]
name=Les RPM de remi en test pour Enterprise Linux $releasever - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/$releasever/test/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/test/mirror
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
[remi-test]
name=Les RPM de remi en test pour Enterprise Linux $releasever - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/$releasever/test/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/test/mirror
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
>