답변:
실수로 잎을 자르지 않도록 요청한 경우 port_cutleaves패키지를 설치 한 다음 https://guide.macports.org/#using.common-tasks.keeplean 을 실행 해야합니다.sudo port_cutleaves
MacPorts 1.9.0이 추가sqlite portdbformat 되었고 MacPorts 2.0.0은 이전 flat형식을 삭제했습니다 . sqlite포트 DB 형식은 새로 설치의 기본이다; 1.9.x로 업그레이드 된 이전 설치는 계속 flat형식 1 을 사용합니다 . MacPorts 2.0으로 업그레이드하거나 값 을 변경 한 다음 포트 명령을 루트 (예 :)로 실행하여 1.9.x flat시스템을 sqlite포맷으로 변환 할 수 있습니다 .portdbformat/opt/local/etc/macports/macports.confsudo port installed
새로운 형식의 기능 중 하나는 "요청 된"포트와 "요청되지 않은"포트 설치를 추적한다는 것입니다. 요청되지 않은 포트는 다른 포트가 종속되어 있기 때문에 설치된 포트입니다. leaves의사 포트 이름은 다른 설치된 포트가 달려없는시 모든 요청하지 않은 포트로 확장됩니다. 이 포트를 사용하여 원래 포트를 제거하지 않아도 sudo port uninstall --follow-dependencies portname(필요한 작업을 수행하지만 무언가를 제거 할 때마다 사용하는 것을 기억하는 경우에만) 필요없는 포트를 "정리"할 수 있습니다 .
기존 잎을 제거하기 전에 기존 잎을 검사해야합니다.
port echo leaves
일반적인 잎 ( automake, gperf, libtool,은 pkgconfig) 빌드 타임 일반적인 포트의 종속성을, 당신은 "요청"그들 (할 수 있도록 있습니다 sudo port setrequested port1 port2 port3 …)을 제거 피하기 위해 단지 나중에 다시 설치해야 할 수 있습니다.
남은 나뭇잎을 아주 쉽게 제거 할 수 있습니다.
sudo port uninstall leaves
참고 : 잎을 정리하기 전에 더 이상 "활성화"되지 않은 이전 버전의 포트를 제거 할 수도 있습니다. 이 경우 몇 개의 잎이 더 표시 될 수 있습니다 (예 : 설치되어 있지만 비활성화 된 포트의 종속성 인 포트).
sudo port uninstall inactive
가 있습니다 여러 섹션 에서 MacPorts를 가이드 도 사용하는 과정에 대해 설명 leaves불필요한 포트를 제거하려면.
while sudo port uninstall leaves; do :; done자동화하는 것과 같은 것을 말할 수 있습니다.
sudo port uninstall --follow-dependents portname하므로 @ChrisJohnsen 이 올바르지 않습니다 --follow-dependents. 올바른 옵션 --follow-dependencies은 "지정된 포트가 의존하는 모든 포트를 재귀 적으로 설치 제거합니다. 요청 된 것으로 표시되거나 다른 종속 장치가있는 종속성은 설치 제거하지 않습니다."
문서에서 :
제거 작업은 설치된 포트를 제거합니다.
%% sudo port uninstall vile Note주어진 포트가 의존하는 포트를 재귀 적으로 설치 제거하려면
‑‑follow‑dependencies플래그를 사용하십시오 . 요청 된 것으로 표시되었거나 다른 부양 가족이있는 부양 가족은 제거되지 않습니다.포트 자체를 설치 제거하기 전에 주어진 포트에 종속 된 모든 포트를 재귀 적으로 설치 제거하려면을 사용하십시오
‑‑follow‑dependents flag.포트가 설치된 다른 포트의 종속성 인 경우 종속 포트를 먼저 제거하지 않으면 제거시 해당 포트가 제거되지 않습니다. 이 동작을 무시하려면 -f (force) 스위치를 사용하십시오. 이것은 분명히 부양 가족을 깨뜨릴 것입니다. 수행중인 작업을 모르면 강제로 제거 포트를 사용하지 마십시오.
%% sudo port -f uninstall vile
마지막 단락의 주요 경고에 유의하십시오. 종속성은 정확히 종속성 (종속성)이며 다른 앱은 동일한 종속성을 요구할 수 있습니다.
‑‑follow‑dependenciesvs ‑‑follow‑dependents.; 인용구는 두 가지를 모두 설명하지만 첫 번째 질문에만 해당됩니다
당신이 불필요한 종속성을 제거하기 위해 실행할 수있는 MacPorts를 'contrib 디렉토리라는 port_cutleaves에서 스크립트도 있습니다 : http://trac.macports.org/browser/contrib/ . 제거 할 각 포트를 요청하고 원하는 경우 일부를 유지할 수 있습니다.
포트 정리를 자동화하는 스크립트를 작성했습니다 : https://github.com/vasi/macports-tools
'macportsfoster'스크립트는 'port deactivate $ (macportsfoster)'가 한 번에 모든 포트를 제거하도록 요청 된 목록의 어떤 것도 필요하지 않은 모든 포트의 목록을 출력합니다.
다른 답변과 --follow-dependents깃발은 원하는 것을하지 않는다고 생각합니다. 설치 A하고 A필요 B하면 멋진 패키지 관리 시스템 덕분에 B설치됩니다. 당신은 제거 할 수 B있고 --follow-dependents깃발은 알고 제거 할 A것이다. 그러나 처음에 수동으로 설치 한 A것이기 때문에 를 제거하면 A어떻게됩니까? 이 경우 B뒤에 남습니다.
fink를 사용하는 경우 debfoster 패키지는 시스템을 정리하고 사용하지 않는 종속성을 제거하도록 설계되었습니다.
Debfoster는 필요한 프로그램을 제거하거나 종속성이없는 버전으로 업그레이드 할 때 패키지 (예 : 라이브러리)를 제거하는 데 도움이됩니다.
하지만 debfosterMacPorts를 작동하지 않습니다,의 포트로가 나타납니다 debfoster예를 들어, portsfoster이 중단 될 것으로 보인다 있지만, ...
아마도 현재 MacPorts에 대한 솔루션이 없을 것입니다.
apt데비안에서 사용 하는 시스템을 기반으로합니다 . 나는 MacPorts를 사용하지 않지만 나는 그것을 fink install debfoster했고 그것은 나에게 잘 작동했다.
apt시스템과 관련 이 없으며 deb파일을 사용하지 않습니다 . MacPorts의 아이디어는 FreeBSD 포트 또는 NetBSD pkgsrc와 관련이 있지만 구현 방식은 매우 다릅니다.