아치 리눅스에서 pacman에 의해 설치된 오래된 패키지를 삭제하는 방법?


51

나는 최근에 아치 리눅스를 설치했고 비교적 많은 스토리지에서 빨리 먹는다는 것을 발견했다. 어떤 이유로 든 나는 이미 약 2 주 만에 17GB를 사용했습니다. 많은 소프트웨어가 설치되어 있지 않으므로 이전 패키지가 모두 어딘가에 유지된다고 믿게되었습니다.

이를 지원하기 위해 패키지를 설치 한 경우 해당 패키지를 제거한 다음 다시 설치하면 pacman이 소프트웨어를 다시 다운로드하지 않고도 포장을 풀고 다시 설치할 수 있습니다.

기본 시스템을 설치 한 후 추가 소프트웨어를 설치하기 전에 약 2GB 정도를 사용했습니다. 이후 Matlab, Skype, Wine 및 기타 작은 프로그램 만 설치했습니다. 물론 누락 된 라이브러리 등도 설치했지만 15GB 정도는 아닙니다.

여기서 완전히 잘못 되었습니까? 아니면 새 버전으로 다운로드 / 업그레이드 할 때 Arch가 이전 패키지를 삭제하지 않습니까?

그렇다면 사용하지 않은 패키지를 어떻게 삭제합니까?

또한 설치된 패키지를 제거 할 때 사용합니다 pacman -R ...


1
paccache를 일반 cron또는 systemd작업 으로 설정하는 것이 좋습니다 .
Sparhawk

답변:


59

아니요, pacman은 캐시 ( /var/cache/pacman/pkg) 에서 오래된 패키지를 제거하지 않으므로 시간이지나면서 채워질 수 있습니다.

캐시를 지우는 두 가지 방법을 사용할 수 있습니다 pacman -Sc.

-c, --clean
캐시에서 더 이상 설치되지 않은 패키지와 현재 사용하지 않는 동기화 데이터베이스를 제거하여 디스크 공간을 확보하십시오. pacman은 패키지를 다운로드 할 때 캐시 디렉토리에 저장합니다. 또한 데이터베이스는 다운로드 한 모든 동기화 DB에 대해 저장되며 구성 파일 pacman.conf (5)에서 제거 된 경우에도 삭제되지 않습니다. 더 이상 설치되지 않은 패키지 만 제거하려면 하나의 --clean 스위치를 사용하십시오. 캐시에서 모든 파일을 제거하려면 2를 사용하십시오. 두 경우 모두 패키지 및 / 또는 사용하지 않는 다운로드 된 데이터베이스를 제거하는 예 또는 아니오 옵션이 있습니다.

또는보다 미묘한 접근 방식을 위해 pacman-contrib과 함께 제공되는 유틸리티 중 하나를 사용할 수 있습니다 paccache.

paccache는 유연한 팩맨 캐시 클리닝 유틸리티로, 팩맨 패키지 타르볼이 포함 된 디렉토리에서 삭제되는 양과 내용을 제어 할 수있는 다양한 옵션이 있습니다.

기본적으로 paccache설치된 패키지의 마지막 세 가지 버전을 제외한 모든 버전이 제거되지만 -k, --keep스위치를 사용하여이 번호를 변경할 수 있습니다 . -d, --dryrun변경 사항을 미리 볼 수 있는 스위치 도 있습니다 . paccache --help모든 스위치를 참조하십시오 .

pacman-contrib 꾸러미에는 꾸러미 관리를 도와주는 많은 유틸리티가 있습니다. 꾸러미 관리에 도움이되는 여러 가지 유틸리티가 있습니다. 그것들을 모두 살펴보고 어떻게 작동하는지 이해하고 Arch를 훨씬 쉽게 실행할 수 있습니다. 당신은 전체 목록을 볼 수 있습니다 :

pacman -Ql pacman-contrib | awk -F"[/ ]" '/\/usr\/bin/ {print $NF}'

jasonwryan은 말했다 :) 또한 이중 --clean스위치를 조심하십시오 : 최신 버전에서 문제가 발생하는 경우 작업 패키지로 쉽게 되돌릴 수 없습니다 (예 : 새 패키지는 이전 lib 또는 Python 릴리스에 의존합니다. 하드웨어 및 최신 버전과 동일) 핵심). /훨씬 더 나은 솔루션이 아닌 다른 곳에서 pacman 캐시를 설정하는 것을 발견 했습니다 ( /etc/pacman.conf에 경로를 설정하십시오 ).
tuk0z

2
당신이없는 경우 패키지 paccache를 설치하여 얻을 수 있습니다 pacman-contrib.
pfrenssen 2016 년

+1이지만 $ pacman -Ql pacman-contrib | awk -F"[/ ]" '/\/usr\/bin\/./ {print $NF}'결과에 빈 줄을 피하는 것이 좋습니다 . ;-)
Cbhihe

웰프, rm -rf /var/cache/pacman/pkg잘못했다
Post Self


13

패키지 캐시는에 /var/cache/pacman/pkg/있습니다.

참고 : pacman 패키지는 2018 년에 업데이트되었으며 아래 설명 pacman-contribpaccache같이 스크립트 / 도구를 사용 하려면 추가로 설치 해야 합니다.

하다:

paccache -d

을 수행하려면 -dryrun당신이 다음에 할 때 유틸리티의 실행을 제거 할 수 무엇을 참조하십시오

paccache -r

캐시 된 패키지를 제거합니다. 17gb는 가파르게 들립니다. 런 어웨이 로그가 없는지 확인하십시오. 하다:

du -h /var/log

아니면 그냥 :

du -h /var

무슨 일이 일어나고 있는지에 대한 더 일반적인 아이디어.


7

pacman -Scc당신이 요구하는 것을하지만 권장하지 않습니다. 로부터 위키

pacman -Scc로 캐시 폴더를 완전히 비울 수도 있지만, 위와 더불어 필요할 때 캐시 폴더에서 직접 패키지를 다시 설치하지 못하게하므로 강제 실행은 좋지 않습니다. 다시 다운로드하십시오. 더 많은 디스크 공간이 절실히 필요하지 않으면 절대 사용하지 마십시오.

pacman -Rnsc또한 패키지를 제거 할 때 패키지 종속성뿐만 아니라 패키지 종속성도 제거하므로 패키지를 제거 하는 것이 좋습니다 . 언제나처럼 시스템을 사용할 수없는 상태로 쉽게 둘 수 있으므로 제거 할 패키지를주의해서 읽으십시오.


멋지다 – 그래서 그것은 동등하다 rm /var/cache/pacman/pkg/*? 또는-적어도 기본적으로는 추측합니다. /tmp오래 전에 pkg 캐시를 대부분의 컴퓨터로 옮기고 squid라우터에서 단일 중앙 캐시를 처리하도록했습니다. 별로 쉽지는 pacman -Scc않습니다.
mikeserv

@mikeserv 라우터의 중앙 Pacman 패키지 캐시? 아치 데스크탑과 랩톱을 모두 가지고 있기 때문에 어떻게 설정 했습니까?
심화

6

paccache대신을 사용하는 것이 좋습니다 pacman -Sc. 제거 된 패키지 버전을 선택 적으로 제거하기위한 매우 효과적인 플래그도 있습니다 -u. paccache내가 추천 하는 플래그 는 (paccache v5.0.2의 일부로) :

  • -d, --dryrun: 후보 패키지 만 찾기, 건식 실행
  • -r, --remove: 후보 패키지 제거
  • -u, --uninstalled: 제거 된 패키지 만 대상
  • -k, --keep <num>: 캐시에 각 패키지의 "숫자"를 유지합니다 (기본값 : 3)

예 : 제거 된 패키지의 나머지 캐시 버전 확인

paccache -dvuk0

1
옵션을 인쇄하는 것 외에 기존 답변에 어떻게 추가합니까?
jasonwryan

사용하지 않는 큰 패키지를 많이 제거한 경우 pacman의 캐시에서 제거하려고합니다. 이 플래그 -u로 가능합니다 paccache. 큰 패키지의 예로는 Gnome, KDE 또는 Texlive 등이 있습니다.
strpeter

1
예, 플래그에 익숙합니다. 내 요점은 대답에 플래그를 더 추가해도 이미 존재하는 것을 복제한다는 사실을 바꾸지 않습니다.
jasonwryan

-k플래그는 나에게 새로운 것이었고 도움말 대화 상자에서 잘 설명되지 않았으므로 여기에서의 사용법이 유용했습니다.
hLk
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.