用于更新配置文件的命令行管理程序命令



寻找一种在 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
> 

最新更新