Aktifkan repo epel melalui skrip?

2

Saya sedang menginstal repo Epel melalui skrip shell, repo datang secara default dinonaktifkan, saya ingin mengaktifkannya sehingga skrip dapat menginstal paket lebih lanjut.

Berikut ini instal repel Epel:

yum install -y epel-release

Ini akan membuat /etc/yum.repos.d/epel.repo, yang berisi:

[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

Sekarang, saya hanya ingin mengaktifkan repo pertama '[epel]. Saya mencoba dengan sed tetapi sejauh ini hanya berhasil mengaktifkan semuanya (saya adalah pemula):

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

Versi perintah ini tidak akan mengubah apa pun:

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

Apa regex yang akan bekerja untuk saya? Atau adakah cara yang lebih baik untuk melakukan ini?

Cleber Goncalves
sumber

Jawaban:

0

sed(1)tidak mengedit file di tempatnya, ia mengirimkan hasil edit ke outputnya. Untuk mengedit di tempat Anda harus memberikan -i(atau --in-place) bendera. Juga, apa yang Anda lakukan adalah mengedit baris yang berisi [epel].*enabled, yang tidak akan Anda temukan. Anda ingin membatasi penggantian ke bagian awal [epel], yang berakhir dengan yang berikutnya [:

sed -i -e '/\[epel\]/,/^\[/s/enabled=0/enabled=1/' ./epel.repo
vonbrand
sumber
Terima kasih. Saya benar-benar tahu itu bukan pengeditan di tempat, saya hanya menyalin hasil tes saya tetapi berencana untuk menggunakan redirect output di versi final. Bendera -i berguna. Butuh beberapa waktu untuk memahami apa yang dilakukan contoh Anda, bagi mereka yang mencoba hal yang sama di masa mendatang, halaman ini harus menjelaskan solusinya: grymoire.com/Unix/Sed.html#uh-29
Cleber Goncalves
1

Itu tidak terlihat seperti pertanyaan Anda mendefinisikan parameter spesifik apa pun di sekitar alat baris perintah, tetapi saya menemukan yum-config-managerperintah itu berguna:

yum-config-manager --enable epel

Contoh:

> 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
Caesar Kabalan
sumber