답변:
실수로 잎을 자르지 않도록 요청한 경우 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.conf
sudo 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‑dependencies
vs ‑‑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는 필요한 프로그램을 제거하거나 종속성이없는 버전으로 업그레이드 할 때 패키지 (예 : 라이브러리)를 제거하는 데 도움이됩니다.
하지만 debfoster
MacPorts를 작동하지 않습니다,의 포트로가 나타납니다 debfoster
예를 들어, portsfoster
이 중단 될 것으로 보인다 있지만, ...
아마도 현재 MacPorts에 대한 솔루션이 없을 것입니다.
apt
데비안에서 사용 하는 시스템을 기반으로합니다 . 나는 MacPorts를 사용하지 않지만 나는 그것을 fink install debfoster
했고 그것은 나에게 잘 작동했다.
apt
시스템과 관련 이 없으며 deb
파일을 사용하지 않습니다 . MacPorts의 아이디어는 FreeBSD 포트 또는 NetBSD pkgsrc와 관련이 있지만 구현 방식은 매우 다릅니다.