2

Looking for a way to automate enabling a yum repository in CentOS. The configuration file by default looks like:

[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

Notice enabled=0 in the [remi] block. That is what needs to be flipped on. The problem is that I can't just search for enable=0 since the remi-test block also has it, but I don't want to enable the test repo.

Thanks.

4

5 に答える 5

7

これを試して:

sed -i '/\[remi\]/,/^ *\[/ s/enabled=0/enabled=1/' your_repo_file

ここで、:で始まる次のエントリまでのテキストのブロックのみを検索するように/[remi]/,/^ *[/指示します。sed[remi]repo[

于 2012-09-17T09:42:45.030 に答える
2
sed -i '0,/enabled=0/s//enabled=1/' /etc/yum.repos.d/remi.repo
于 2012-09-17T03:41:16.867 に答える
2
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 およびおそらく EL ディストリビューションの yum-utils パッケージの一部です。

于 2014-07-21T05:24:52.033 に答える
0
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
> 
于 2012-09-17T06:46:16.827 に答える