특정 패턴과 일치하는 모든 패키지를 어떻게 삭제합니까?


26

libreoffice를 제거하고 싶습니다. 이 프로그램은 약 30 개의 모듈로 구성됩니다. 이상적으로는 다음을 사용하여 제거 할 수 있습니다.

aptitude remove libreoffice3.6* libreoffice-debian-menus libobasis3.6-*

그러나 그것은 실패

Couldn't find any package whose name or description matched "libreoffice3.6*"

기타

패턴별로 패키지 세트를 삭제하려면 어떻게합니까?

PS : 나는 사용과 대답에 대한 행복 해요 dpkg또는 apt


LibreOffice 구성 요소를 제거하여 특정 패턴 에 대한 답을 알고 싶습니까?
Anwar

1
LibreOffice를 제거하는 방법의 가능한 중복 ? 대답은 장황합니다 : 이것은 3.6에서만 작동하며 3.6을 사용하지 않습니다 :-)
Rinzwind

libreoffice에는 많은 부분이 포함되어 있기 때문에 예제로 사용하고 있습니다. 하지만 커널과 같은 문제 (이전 버전 정리)
Aaron Digulla

답변:


26
  1. 사용 apt-get하지 말고 aptitude정규식을 사용하십시오 .

  2. 정규식에서 .모든 문자를 *의미하며 0 회 이상을 의미합니다. 따라서 표현식 libreoffice.*은 문자열을 포함하는 모든 패키지 이름과 임의 libreoffice의 문자 수 와 일치합니다 .

  3. 쉘이 별표를 해석하지 않도록하려면 정규식을 작은 따옴표로 묶으십시오. (라는 이름의 파일이 있다면 libreoffice.example현재 디렉토리에 예를 들어, 쉘은 대체 할 libreoffice.*함께 libreoffice.example이 동작을 중지 작은 따옴표를 사용할 필요가 있으므로.)

결과:

sudo apt-get remove 'libreoffice.*'

고마워, 이것은 작동합니다. 흥미롭게도, 그것은 패턴 libreoffice*(예 : glob 스타일 패턴)
과도

3
이것을 테스트하려는 사람들을 위해 옵션 --dry-run을 사용 하여 시스템을 변경하지 않고 무엇이 삭제 될지 확인하십시오.
Aaron Digulla

@AaronDigulla 아직 --dry-run에 대해 몰랐습니다. 편리 할 것입니다! 감사!
Glutanimate

apt-get은 역시 정규 표현식을 처리하는 아주 나쁜 인에 두 솔루션을 비교할 이 답변 .
Braiam

명확하게하기 위해 aptPOSIX 정규 표현식을 사용하십시오. From man apt-get(Debian Jessie) : "주어진 표현식과 일치하는 패키지가없고 표현식에 '.', '?'중 하나가 포함되어있는 경우 또는 '*'그러면 POSIX 정규식으로 간주됩니다 ... "
x-yuri

6

대안은 다음과 같습니다.

dpkg -l | grep libreoffice | awk '{print $2}' | xargs -n1 echo

일치하는 모든 패키지가 나열됩니다 libreoffice. 제거하려는 모든 것이 확인되면 다음 명령 을주의해서 실행하십시오 .

dpkg -l | grep libreoffice | awk '{print $2}' | xargs -n1 sudo apt-get purge -y

아이디어:

  1. 시스템에 설치된 모든 패키지를 나열하십시오.
  2. 일치하는 항목 만 표시하도록 필터링 libreoffice
  3. 패키지 이름을 가진 열만 표시하도록 필터링
  4. 해당 패키지 각각에서 purge 명령을 실행하십시오.

1
어쩌면 당신은 -p옵션을 추가하여 제안 된 xargs각 명령을 실행하기 전에 확인을 요구하거나 또는 echo대신에 먼저 확인 하도록 제안 할 수 있습니다.sudo apt-get purge
Zanna

1
@Zanna -p가 도움이 될 것이지만 원샷 명령은 아닙니다. 나는 echos를 사용하여 명령을 실행하기 전에 얻고있는 것을 테스트 했으므로 권장 할 가치가 있습니다.
aalaap

2
나는 당신에게 +1을 줄 수 있습니다. 이제 더 안전 해졌습니다 :)
Zanna

나는 생각 -n1에 좋다 echo그러나 당신은 제거에서 제거해야합니다; 그렇지 않으면 종속성 순서 (a는 b에 의존하고 b를 먼저 삭제하려고 시도)가 제거를 중단 할 수 있습니다.
Aaron Digulla

귀하의 솔루션은 지금까지 내가 찾은 최고입니다. 감사합니다.
João Pedro

5

적성은 전역 패턴을 지원하며 다음과 같은 또 다른 멋진 일치 항목을 지원합니다.

aptitude remove '?and(?name(libreoffice), name(3.6), ~i)' libreoffice-debian-menus

이것은 이름 libreoffice과 패키지가 3.6설치된 모든 패키지와 일치합니다 (즉, 그 ~i의미입니다).

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