Ativar um repo epel via script?

2

Estou instalando o repositório Epel através de um script de shell, o repo vem desativado por padrão, gostaria de ativá-lo para que o script possa instalar outros pacotes.

A seguir, instale o repositório da Epel:

yum install -y epel-release

Isso criará o /etc/yum.repos.d/epel.repo, que contém:

[epel]
name=Extra Packages for Enterprise Linux 5 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/5/$basearch
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5&arch=$basearch
failovermethod=priority
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL

[epel-debuginfo]
name=Extra Packages for Enterprise Linux 5 - $basearch - Debug
#baseurl=http://download.fedoraproject.org/pub/epel/5/$basearch/debug
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-debug-5&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL
gpgcheck=1

[epel-source]
name=Extra Packages for Enterprise Linux 5 - $basearch - Source
#baseurl=http://download.fedoraproject.org/pub/epel/5/SRPMS
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-source-5&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL
gpgcheck=1

Agora, desejo ativar somente o primeiro repo '[epel]. Eu tentei com sed mas até agora só conseguiu habilitar todos eles (eu sou um novato sed):

sh-3.2$ sed 's,enabled=0,enabled=1,g;' ./epel.repo
[epel]
name=Extra Packages for Enterprise Linux 5 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/5/$basearch
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL

[epel-debuginfo]
name=Extra Packages for Enterprise Linux 5 - $basearch - Debug
#baseurl=http://download.fedoraproject.org/pub/epel/5/$basearch/debug
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-debug-5&arch=$basearch
failovermethod=priority
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL
gpgcheck=1

[epel-source]
name=Extra Packages for Enterprise Linux 5 - $basearch - Source
#baseurl=http://download.fedoraproject.org/pub/epel/5/SRPMS
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-source-5&arch=$basearch
failovermethod=priority
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL
gpgcheck=1

Esta versão do comando não irá alterar nada:

sed 's,\(\[epel\].*\)enabled=0,enabled=1,;' ./epel.repo

Qual é o regex que funcionará para mim? Ou existe uma maneira melhor de fazer isso?

    
por Cleber Goncalves 08.04.2013 / 12:39

2 respostas

0

sed(1) não edita o arquivo no lugar, ele envia as edições para sua saída. Para editar no local, você precisa fornecer o sinalizador -i (ou --in-place ). Além disso, o que você está fazendo é editar linhas que contenham [epel].*enabled , que você simplesmente não encontrará. Você deseja limitar a substituição à seção que começa com [epel] , que termina com o próximo [ :

sed -i -e '/\[epel\]/,/^\[/s/enabled=0/enabled=1/' ./epel.repo
    
por 08.04.2013 / 13:09
1

Não parece que a sua pergunta defina parâmetros específicos em torno das ferramentas de linha de comando, mas acho útil o comando yum-config-manager :

yum-config-manager --enable epel

Exemplo:

> cat /etc/yum.repos.d/epel.repo | grep '\[.*\]\|enabled.*'
[epel]
enabled=0
[epel-debuginfo]
enabled=0
[epel-source]
enabled=0
> yum-config-manager --enable epel
[ ... REMOVE LONG OUTPUT ... ]
> cat /etc/yum.repos.d/epel.repo | grep '\[.*\]\|enabled.*'
[epel]
enabled=1
[epel-debuginfo]
enabled=0
[epel-source]
enabled=0
> yum-config-manager --disable epel
[ ... REMOVE LONG OUTPUT ... ]
> cat /etc/yum.repos.d/epel.repo | grep '\[.*\]\|enabled.*'
[epel]
enabled=0
[epel-debuginfo]
enabled=0
[epel-source]
enabled=0
    
por 08.03.2017 / 23:48

Tags