스크립트를 통해 epel repo를 사용 하시겠습니까?


2

쉘 스크립트를 통해 Epel 저장소를 설치하고 있습니다. 저장소는 기본적으로 비활성화되어 있습니다. 스크립트를 추가 패키지를 설치할 수 있도록 활성화하고 싶습니다.

다음은 Epel 저장소를 설치합니다.

yum install -y epel-release

이것은 다음을 포함하는 /etc/yum.repos.d/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=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

이제 첫 번째 리포지토리 만 활성화하고 싶습니다. 나는 sed로 시도했지만 지금까지는 모든 것을 가능하게했습니다 (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

이 버전의 명령은 아무것도 변경하지 않습니다.

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

나를 위해 작동하는 정규식은 무엇입니까? 아니면 더 좋은 방법이 있습니까?

답변:


0

sed(1)파일을 제자리에서 편집하지 않고 편집 내용을 출력으로 보냅니다. 내부 편집을하려면 -i(또는 --in-place) 플래그 를 지정해야합니다 . 또한 당신이하고있는 일은 [epel].*enabled찾을 수없는 을 포함 하는 줄을 편집 하는 것입니다. [epel]다음으로 끝나는 섹션으로 대체를 제한하려고합니다 [.

sed -i -e '/\[epel\]/,/^\[/s/enabled=0/enabled=1/' ./epel.repo

감사. 실제로 편집하지 않았다는 것을 알았습니다. 테스트를 복사하여 붙여 넣었지만 최종 버전에서 출력 리디렉션을 사용할 계획이었습니다. -i 플래그가 편리합니다. 귀하의 사례가 무엇을하고 있는지 이해하는 데 약간의 시간이 걸렸습니다. 장래에 같은 것을 시도하는 사람들을 위해이 페이지에서 해결책을 분명히해야합니다. grymoire.com/Unix/Sed.html#uh-29
Cleber Goncalves

1

귀하의 질문에 명령 줄 도구와 관련된 특정 매개 변수가 정의되어 있지 않지만 yum-config-manager명령이 유용하다는 것을 알았습니다 .

yum-config-manager --enable epel

예:

> 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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.