내가 가장 좋아하는 배포판을 Gentoo로 전환한 이후로 나는 다음과 같은 패키지 설치 및 제거 패턴에 매우 익숙합니다.
- 거의 동일한 기능을 수행하는 여러 앱을 설치하여 사용해 보세요
emerge <package>
. 이 명령은 패키지를 설치하고 해당 패키지를 명시적으로 설치된 것으로 표시합니다. - 시도해 보시고 마음에 들지 않는 것은 삭제해 주세요. (그리고 내 필요에 맞는 한두 개는 유지하시기 바랍니다.)
emerge --deselect <package>
:. 이 명령은 명시적으로 설치된 애플리케이션 목록에서 패키지를 제거하지만 패키지를 제거하지는 않습니다. - 마지막으로 시스템에서 필요하지 않은 모든 항목을 삭제했습니다
emerge --depclean
. 이 명령은 (1) 비시스템 패키지, (2) 명시적으로 설치되지 않은 패키지, (3) 어느 패키지에도 종속되지 않은 모든 패키지를 제거합니다. - 선택적으로 모든 패키지 종속성이 정상인지 확인합니다
revdep-rebuild
. 이 명령은 모든 종속성을 확인하고 손상된 패키지를 다시 설치합니다.
때때로 나는 /var/lib/portage/world
(명시적으로 설치된 패키지 목록)의 항목을 보고최상위 수준앱을 사용하고 2, 3, 4단계의 명령을 사용하여 더 이상 사용하지 않는 앱을 삭제합니다.
이제 아치를 배우려고 하는데 팩맨에서도 같은 전략을 사용할 수 있을지 궁금합니다. 아니면 내 시스템을 유지할 또 다른 전략깨끗한사용하지 않은 패키지?
메모:팩맨 로제타사물을 빠르게 이해하는 데는 많은 도움이 되지만 Arch에 해당하는 파일을 찾을 수 없습니다 /var/lib/portage/world
. pacman -Qe
아마도 이 작업은 수행될 수 있지만 명시적으로 설치하지 않았다고 맹세하는 내용이 포함되어 있습니다... 어쨌든 전략 관점에서 질문에 답해 주십시오(물론 명령 예제를 사용하여 :)
답변1
pacman -Qe
설치한 것을 기억하지 못하는 패키지가 표시되는 가장 가능성 있는 이유는 패키지가 base-devel
설치한 "그룹"(예: 등)의 일부이기 때문입니다.
참고 사항: 저는 개인적으로 패키지를 다시 설치하거나 명시적으로 설치한 패키지를 요구하지 않고도 패키지를 "명시적"에서 "암시적"으로(또는 그 반대로) 전환하는 방법을 한동안 찾고 있었습니다. 작동하여 해당 패키지의 종속성으로 전환했습니다(다시 설치할 필요가 없음).
답변2
다윈 생존자들에게 감사드립니다답변저는 Arch에서 패키지 관리가 어떻게 작동하는지 더 잘 이해할 수 있었습니다. 이제 Gentoo와 동일한 전략을 적용할 수 있습니다(약간의 수정 포함). 질문에 있는 명령의 "동등한"은 다음과 같습니다.
pacman -S <package>
pacman -D --asdeps <package>
pacman -Rs $(pacman -Qqtd)
- 사용할 수 없음/필요하지 않음
젠투에서 가장 가까운 것은 /var/lib/portage/world
명령의 결과입니다 pacman -Qe
. 차이점:
- 아치에는패키지 그룹, 기본적으로 하나의 이름으로 "그룹화된" 여러 패키지입니다. 그룹이 설치되면 그룹의 모든 항목은 명시적으로 설치된 것으로 간주됩니다.
- Arch에는 "시스템 패키지"가 없으므로 결과에서 프로젝트를 줄이면
pacman -Qe
실제로 중요한 패키지가 제거됩니다.
답변3
내 기억이 맞다면
pacman -S package
패키지를 설치하다
pacman -Rs package
패키지와 해당 종속성을 모두 제거합니다. 단, 다른 패키지와 명시적으로 설치하지 않은 패키지를 손상시키지 않는 패키지만 제거하세요.
팩맨 매뉴얼 페이지를 확인하십시오.
안타깝게도 손상된 패키지를 검사하는 방법을 모르겠습니다.
답변4
명시적으로 설치된 패키지를 추적하기 위해 패키지 관리자에 의존하는 대신 시스템에서 Ansible과 같은 구성 관리 도구를 사용할 수 있습니다. 나는 그것을 내 자신의 여러 컴퓨터에 사용하고 있으며, 단 두 개의 명령만으로 항상 내 호스트와 같은 컴퓨터를 설정할 수 있습니다.