사용하지 않는 MacPorts 패키지를 제거하는 방법?


94

MacPorts를 통해 프로그램을 설치할 때마다 많은 의존성을 얻고 설치합니다. 해당 프로그램을 제거 할 때 MacPorts에서 사용하지 않는 모든 종속성을 재귀 적으로 제거하려면 어떻게해야합니까?

답변:


105

실수로 잎을 자르지 않도록 요청한 경우 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불필요한 포트를 제거하려면.


11
감사. 이것은 매우 도움이됩니다. 모든 나뭇잎을 청소하려면 에코 나뭇잎을 실행하고 나뭇잎을 연속해서 여러 번 제거해야 할 수도 있습니다. 반향이 빈 결과를 반환하기 전에 두 명령을 4 번 이상 실행했습니다.
Antony

6
while sudo port uninstall leaves; do :; done자동화하는 것과 같은 것을 말할 수 있습니다.
Tom Anderson

2
"지정된 포트에 종속 된 모든 포트를 재귀 적으로 설치 제거" sudo port uninstall --follow-dependents portname하므로 @ChrisJohnsen 이 올바르지 않습니다 --follow-dependents. 올바른 옵션 --follow-dependencies은 "지정된 포트가 의존하는 모든 포트를 재귀 적으로 설치 제거합니다. 요청 된 것으로 표시되거나 다른 종속 장치가있는 종속성은 설치 제거하지 않습니다."
TachyonVortex

8

문서에서 :

제거 작업은 설치된 포트를 제거합니다.

%% sudo port uninstall vile Note

주어진 포트가 의존하는 포트를 재귀 적으로 설치 제거하려면 ‑‑follow‑dependencies플래그를 사용하십시오 . 요청 된 것으로 표시되었거나 다른 부양 가족이있는 부양 가족은 제거되지 않습니다.

포트 자체를 설치 제거하기 전에 주어진 포트에 종속 된 모든 포트를 재귀 적으로 설치 제거하려면을 사용하십시오 ‑‑follow‑dependents flag.

포트가 설치된 다른 포트의 종속성 인 경우 종속 포트를 먼저 제거하지 않으면 제거시 해당 포트가 제거되지 않습니다. 이 동작을 무시하려면 -f (force) 스위치를 사용하십시오. 이것은 분명히 부양 가족을 깨뜨릴 것입니다. 수행중인 작업을 모르면 강제로 제거 포트를 사용하지 마십시오.

%% sudo port -f uninstall vile

마지막 단락의 주요 경고에 유의하십시오. 종속성은 정확히 종속성 (종속성)이며 다른 앱은 동일한 종속성을 요구할 수 있습니다.


나는 이것이 질문에 대답하지 않는다고 생각한다. OP는 프로그램과 필요한 것을 제거하지 않고 프로그램과 필요한 것을 제거하려고합니다.

2
@mankoff : ‑‑follow‑dependenciesvs ‑‑follow‑dependents.; 인용구는 두 가지를 모두 설명하지만 첫 번째 질문에만 해당됩니다
Chris Johnsen

3
필자는 개인적으로 필립이 두 가지 매개 변수를 모두 설명한다고 생각합니다. 따라서 이러한 명령
Antony

3

포트 및 종속 항목을 제거하는 명령은 다음과 같습니다.

sudo port uninstall foo --follow-dependents

그러나 설치 제거중인 포트에 종속 된 포트가 있으면 -f(force) 플래그 가 없으면 설치 제거되지 않습니다 .

물론 제거 가이드 섹션자세히 살펴 보는 MacPorts 안내서 를 읽으면서 시작해야합니다 .


3

당신이 불필요한 종속성을 제거하기 위해 실행할 수있는 MacPorts를 'contrib 디렉토리라는 port_cutleaves에서 스크립트도 있습니다 : http://trac.macports.org/browser/contrib/ . 제거 할 각 포트를 요청하고 원하는 경우 일부를 유지할 수 있습니다.


2

포트 정리를 자동화하는 스크립트를 작성했습니다 : https://github.com/vasi/macports-tools

'macportsfoster'스크립트는 'port deactivate $ (macportsfoster)'가 한 번에 모든 포트를 제거하도록 요청 된 목록의 어떤 것도 필요하지 않은 모든 포트의 목록을 출력합니다.


1

다른 답변과 --follow-dependents깃발은 원하는 것을하지 않는다고 생각합니다. 설치 A하고 A필요 B하면 멋진 패키지 관리 시스템 덕분에 B설치됩니다. 당신은 제거 할 수 B있고 --follow-dependents깃발은 알고 제거 할 A것이다. 그러나 처음에 수동으로 설치 한 A것이기 때문에 를 제거하면 A어떻게됩니까? 이 경우 B뒤에 남습니다.

fink를 사용하는 경우 debfoster 패키지는 시스템을 정리하고 사용하지 않는 종속성을 제거하도록 설계되었습니다.

Debfoster는 필요한 프로그램을 제거하거나 종속성이없는 버전으로 업그레이드 할 때 패키지 (예 : 라이브러리)를 제거하는 데 도움이됩니다.

하지만 debfosterMacPorts를 작동하지 않습니다,의 포트로가 나타납니다 debfoster예를 들어, portsfoster이 중단 될 것으로 보인다 있지만, ...

아마도 현재 MacPorts에 대한 솔루션이 없을 것입니다.


그러나 데비안 기반 시스템의 deb 파일에 대한 debfoster가 아닙니까? Mac OS X에서 MacPorts 포트에 어떻게 사용합니까?
hpy

OS X 및 MacPorts로 포팅되었으며 핀은 apt데비안에서 사용 하는 시스템을 기반으로합니다 . 나는 MacPorts를 사용하지 않지만 나는 그것을 fink install debfoster했고 그것은 나에게 잘 작동했다.

MacPorts는 apt시스템과 관련 이 없으며 deb파일을 사용하지 않습니다 . MacPorts의 아이디어는 FreeBSD 포트 또는 NetBSD pkgsrc와 관련이 있지만 구현 방식은 매우 다릅니다.
크리스 존슨

1
승인. 수정 해 주셔서 감사합니다. 에 관계없이, debfoster을 통해 잘 작동하는 포팅되었다 fink. 추가 검색에 따르면 MacPorts에서는 작동 하지 않지만 복제본이 있습니다. 예를 들어portsfoster
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.