2012-09-17 55 views
2

尋找一種在CentOS中自動啓用yum存儲庫的方法。默認配置文件是這樣的:在[remi]用於更新配置文件的Shell命令

[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 

通知enabled=0。這是需要翻轉的。問題是,我不能只搜索enable=0,因爲remi-test塊也有它,但我不想啓用測試回購。

謝謝。

回答

0
sed -i '0,/enabled=0/s//enabled=1/' /etc/yum.repos.d/remi.repo 
+0

這尤其使第一禁用回購,這就限制了它的普遍適用性。 – chepner

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 
> 
5

試試這個:

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

其中:/[remi]/,/^ *[/告訴sed僅查找文本塊從[remi]下一個repo條目,該條目從[開始。

+0

非常適合shell腳本,或與cloudinit,ansible一起使用。 –

+0

能夠將它用於特定於PHP56,PHP7和mysql.yum repos的安裝,並且mysql專門使用塊進行配置。 –

1
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發行版。

+0

這不適用於CentOS 6. @xdaxdb –

+0

它的工作原理(只是在CentOS 6.9中檢查過),這是最好的方法,也是嚮導解釋的內容:https://rpms.remirepo.net/wizard/ –

0

sed(1)不適當地編輯文件,它將編輯發送到它的輸出。要在原地進行編輯,您需要輸入-i(或--in-place)標誌。另外,你正在做的是編輯包含[remi].*enabled的行,你只是不會找到它。要限制替換的部分開始[remi],與下一個[結束:

sed -i -e '/\[remi\]/,/^\[/s/enabled=0/enabled=1/' /etc/yum.repos.d/remi.repo