PPA가 bash 스크립트의 적절한 소스 목록에 이미 추가되어 있는지 확인하는 방법


11

add-apt-repository명령을 추가하기 전에 PPA가 이미 시스템에 추가되었는지 확인하는 방법을 누군가에게 알려주십시오 shell script.

매우 도움이 될 것입니다.

감사합니다.

답변:


11

다음과 같이 할 수 있습니다 :

the_ppa=...  # e.g. the_ppa="ondrej/apache2"

if ! grep -q "^deb .*$the_ppa" /etc/apt/sources.list /etc/apt/sources.list.d/*; then
    # commands to add the ppa ...
fi

노트:

  • grep 일치하는 것을 찾으면 성공으로 종료
  • 이를 !무효화하므로 일치하는 항목이 없으면 명령이 실행됩니다.
  • -q플래그는 수 grep 조용 가 일치하는 라인을 인쇄하지 않도록. 그냥 잡음 일 것입니다. 종료 코드가 완벽한 지 여부 만 알면됩니다.
  • ^deb .*접두사는 반드시 일치하는 라인을 시작하는 것입니다 deb, 주석 처리되어 라인을 제외

결과적으로 주석 처리 된 ppas를 찾을 수 있지만 주석 처리되지 않은 PPA를 찾고 싶습니다. @ Ten-Coins가 대답합니다.
Taytay

2

터미널을 열고이 명령을 입력하십시오

grep ^ /etc/apt/sources.list /etc/apt/sources.list.d/* | grep fogger

fogger를 PPA 이름으로 바꿉니다.

여기에 이미지 설명을 입력하십시오


1
frogger가 여전히 살아 있다는 것을 알게되어 반갑습니다. grep이 쉘 스크립트 내의 if 문에 대한 올바른 해결책이 아니라고 생각합니다.
Josh

awk로 필드를 검색 할 수도 있습니다. 꽤 빠릅니다.
rɑːdʒɑ

나는 awk에 익숙하지 않지만 해결책이 있다면 주저하지 말고 ansawre를 게시하고 반복하십시오. 추신. 나는 라이너 하나를 아주 좋아합니다
Josh

휴가 중이므로 제대로 테스트하지 않으면 게시 할 수 없습니다. 그 downvote는 무엇입니까?
rɑːdʒɑ

나는 그날 늦게 if 문으로 이것을 테스트 할 것입니다. 공감이 유감입니다. 나는 늦은 밤에 그런 게시물을 읽지 않기를 소망했습니다. 나는 이것이 작동해야한다고 생각하며 명령을 테스트하면 나중에 응답 할 것입니다.
Josh

0

list.save 파일, 소스를 제거하면 deb 줄만 확인하고 "fogger"ppa로 계산하십시오.

ppa_added=`grep ^ /etc/apt/sources.list /etc/apt/sources.list.d/* | grep -v list.save | grep -v deb-src | grep deb | grep fogger | wc -l`

echo $ppa_added

또한 deb주석이 달린 행을 찾고로 시작하며 # deb파일의 행은 foo-ppa.list.distUpgrade의도 한 것입니까?
Volker Siegel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.