2

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

注意enabled=0[remi]块中。这就是需要翻转的东西。问题是我不能只搜索,enable=0因为该remi-test块也有它,但我不想启用测试 repo。

谢谢。

4

5 回答 5

7

尝试这个:

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

where:/[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 中执行相同的操作。从以下位置获取 repo 名称:

yum repolist [all|enabled|disabled]

该命令将向您显示已启用/未启用的内容,但在系统上的 /etc/yum.repos.d/.repo 文件中进行了配置。

yum-config-manager 是 RHEL6 上的 yum-utils 软件包的一部分,可能是 EL 发行版。

于 2014-07-21T05:24:52.033 回答
1

sed(1)不会就地编辑文件,而是将编辑内容发送到其输出。要就地编辑,您需要提供-i(or --in-place) 标志。此外,您正在做的是编辑包含 的行[remi].*enabled,而您只是找不到这些行。您希望将替换限制在以[remi]next 结尾的部分开头[

sed -i -e '/\[remi\]/,/^\[/s/enabled=0/enabled=1/' /etc/yum.repos.d/remi.repo
于 2018-01-05T09:27:08.603 回答
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 回答