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

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

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

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

하지만 그건 실패

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

등.

패턴별로 패키지 세트를 삭제하려면 어떻게 해야 하나요?

dpkg추신: use 또는 에 대한 답변 apt도 만족스럽습니다 .

답변1

  1. apt-get또는 apt(아님 ) 을 사용 aptitude하고 고정된 정규식을 사용하십시오.

  2. 정규식에서 .모든 문자를 의미하며 *0회 이상을 의미합니다. 따라서 표현식은 libreoffice.*문자열 libreoffice과 그 뒤에 임의 개수의 문자가 오는 모든 패키지 이름과 일치합니다. ^(문자열의 시작과 일치) 또는 $(문자열의 끝과 일치) 또는 둘 다를 사용하여 정규식을 고정해야 합니다 . 그렇지 않으면 정규식은 APT에서 인식되지 않습니다.

  3. 쉘이 별표를 해석하는 것을 방지하려면 정규식을 작은따옴표로 묶으십시오.

예:

이름이 로 시작하는 모든 패키지를 제거하려면 libreoffice다음을 실행하십시오.

sudo apt remove '^libreoffice.*$'

답변2

대안은 다음과 같습니다.

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. 해당 패키지 각각에 대해 제거 명령을 실행하십시오.

답변3

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

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

이는 이름에 있고 설치된 모든 패키지와 일치합니다 libreoffice( 3.6이것이 ~i의 약자입니다.

답변4

동일한 접두어를 가진 많은 파일을 제거해야 할 때 중괄호 확장이 매우 편리하다고 생각합니다.

sudo apt remove libreoffice-l10n-{bg,ca,cs,da,de,en-za,es,fr,hu,id,ja,ko,nb,nl,pl,pt,ru,sv,th,tr,uk,vi,zh-cn,zh-tw}

나는 이 명령을 사용하여 전혀 사용하지 않는 모든 언어 팩을 제거했습니다. 예, 정규식을 사용하면 어느 것을 유지하고 나머지는 삭제할지 알 수 있습니다. 어쨌든 나는 기억하기 쉽고 많은 bash 명령에서도 작동하기 때문에 이것을 좋아합니다.

관련 정보