Câu trả lời:
Để tránh việc vô tình cắt lá có thể là những thứ bạn yêu cầu, bạn nên cài đặt port_cutleaves
gói sau đó chạy sudo port_cutleaves
https://guide.macports.org/#USE.common-t task.keeplean
MacPorts 1.9.0 đã thêmsqlite
portdbformat
và MacPorts 2.0.0 bỏ flat
định dạng cũ . Các sqlite
định dạng cổng DB là mặc định cho việc cài đặt mới; cài đặt cũ được nâng cấp lên 1.9.x sẽ tiếp tục sử dụng flat
định dạng 1 . Bạn có thể chuyển đổi flat
hệ thống 1.9.x sang sqlite
định dạng bằng cách nâng cấp lên MacPorts 2.0 hoặc bằng cách thay đổi portdbformat
giá trị trong /opt/local/etc/macports/macports.conf
và sau đó ban hành lệnh cổng dưới dạng root (ví dụ sudo port installed
).
Một trong những tính năng của định dạng mới là nó theo dõi các cài đặt cổng được yêu cầu của Wap so với không được yêu cầu. Một cổng không được yêu cầu là một cổng chỉ được cài đặt vì một số cổng khác phụ thuộc vào nó. Tên leaves
giả danh mở rộng đến tất cả các cổng chưa được yêu cầu mà không có cổng cài đặt nào khác phụ thuộc. Bạn có thể sử dụng điều này để dọn dẹp các cổng không cần thiết, ngay cả khi ban đầu bạn không gỡ cài đặt chúng sudo port uninstall --follow-dependencies portname
(điều này sẽ làm những gì bạn muốn, nhưng chỉ khi bạn nhớ sử dụng nó mỗi khi bạn gỡ cài đặt thứ gì đó).
Bạn nên kiểm tra các lá hiện có của bạn trước khi gỡ cài đặt bất kỳ trong số chúng.
port echo leaves
Một số lá thông thường ( automake
, gperf
, libtool
, pkgconfig
) là xây dựng thời gian phụ thuộc của các cổng thông thường, vì vậy bạn có thể muốn “yêu cầu” họ ( sudo port setrequested port1 port2 port3 …
) để tránh gỡ bỏ cài đặt chúng chỉ phải cài đặt lại chúng sau này.
Bạn có thể gỡ cài đặt bất kỳ lá còn lại khá dễ dàng:
sudo port uninstall leaves
Lưu ý: Trước khi cắt tỉa lá của bạn, bạn cũng có thể muốn gỡ cài đặt các phiên bản cổng cũ không còn hoạt động. Điều này có thể tiết lộ thêm một vài lá (tức là các cổng là phụ thuộc của các cổng được cài đặt, nhưng không hoạt động):
sudo port uninstall inactive
Có một số phần trong Hướng dẫn MacPorts cũng mô tả quá trình sử dụng leaves
để gỡ cài đặt các cổng không cần thiết.
while sudo port uninstall leaves; do :; done
để tự động hóa điều đó.
sudo port uninstall --follow-dependents portname
không chính xác, vì --follow-dependents
sẽ "gỡ cài đặt đệ quy tất cả các cổng phụ thuộc vào cổng được chỉ định". Tùy chọn chính xác ở đây là --follow-dependencies
, sẽ "gỡ cài đặt đệ quy tất cả các cổng mà cổng được chỉ định phụ thuộc vào. Điều này sẽ không gỡ cài đặt các phụ thuộc được đánh dấu là yêu cầu hoặc có các phụ thuộc khác."
Hành động gỡ cài đặt sẽ gỡ cài đặt một cổng đã cài đặt.
%% sudo port uninstall vile Note
Để cũng gỡ cài đặt đệ quy các cổng mà cổng đã cho phụ thuộc vào, hãy sử dụng
‑‑follow‑dependencies
cờ. Điều này sẽ không gỡ cài đặt các phụ thuộc được đánh dấu là yêu cầu hoặc có các phụ thuộc khác.Để gỡ cài đặt đệ quy tất cả các cổng phụ thuộc vào cổng đã cho trước khi gỡ cài đặt chính cổng đó, hãy sử dụng
‑‑follow‑dependents flag
.Nếu một cổng là một phụ thuộc của một cổng được cài đặt khác, việc gỡ cài đặt sẽ không xóa nó trừ khi bạn loại bỏ (các) cổng phụ thuộc trước. Để ghi đè hành vi này, sử dụng công tắc -f (lực). Điều này rõ ràng sẽ phá vỡ những người phụ thuộc. Đừng buộc gỡ cài đặt cổng trừ khi bạn biết bạn đang làm gì.
%% sudo port -f uninstall vile
Lưu ý cảnh báo chính trong đoạn cuối. Các phụ thuộc chính xác là các phụ thuộc của Haiti, các ứng dụng khác nhau có thể (sẽ) yêu cầu các phụ thuộc giống nhau.
‑‑follow‑dependencies
so với ‑‑follow‑dependents
; đoạn trích dẫn mô tả cả hai, nhưng chỉ đoạn đầu tiên áp dụng cho câu hỏi
Lệnh xóa một cổng và các phụ thuộc của nó là:
sudo port uninstall foo --follow-dependents
Tuy nhiên, nếu cổng bạn đang gỡ cài đặt có người phụ thuộc thì cổng sẽ không gỡ cài đặt mà không có -f
cờ (bắt buộc).
Tất nhiên, bạn nên bắt đầu bằng cách đọc qua Hướng dẫn MacPorts đặc biệt xem phần hướng dẫn Gỡ cài đặt.
Ngoài ra còn có một tập lệnh trong thư mục contrib của MacPorts có tên là port_cutleaves mà bạn có thể chạy để loại bỏ các phụ thuộc không cần thiết: http://trac.macports.org/browser/contrib/ . Nó sẽ yêu cầu bạn cho mỗi cổng được gỡ cài đặt và cho phép giữ một số, nếu bạn muốn.
Tôi đã viết một số tập lệnh để tự động dọn dẹp cổng: https://github.com/vasi/macports-tools
Tập lệnh 'macportsfoster' sẽ đưa ra danh sách tất cả các cổng không được yêu cầu bởi bất kỳ thứ gì trong danh sách được yêu cầu, được yêu cầu sao cho 'cổng hủy kích hoạt $ (macportsfoster)' sẽ xóa tất cả các cổng đó trong một lần.
Tôi nghĩ rằng các câu trả lời khác, và --follow-dependents
cờ, không làm những gì bạn muốn. Nếu bạn cài đặt A
và A
yêu cầu B
, thì nhờ các hệ thống quản lý gói tuyệt vời, B
sẽ được cài đặt cho bạn. Bạn có thể gỡ cài đặt B
và --follow-dependents
cờ sẽ được biết và xóa A
. Nhưng điều gì sẽ xảy ra nếu bạn gỡ cài đặt A
, nhiều khả năng, bởi vì đó A
là những gì bạn đã cài đặt thủ công ở nơi đầu tiên? Trong trường hợp này, B
bị bỏ lại phía sau.
Nếu bạn sử dụng fink, gói debfoster được thiết kế để dọn sạch hệ thống của bạn và loại bỏ các phụ thuộc không sử dụng.
Debfoster sẽ giúp bạn thoát khỏi các gói (ví dụ thư viện) bị bỏ lại trên hệ thống của bạn khi chương trình yêu cầu nó bị xóa hoặc nâng cấp lên phiên bản không có phụ thuộc.
Mặc dù debfoster
sẽ không hoạt động đối với MacPorts, debfoster
ví dụ, portsfoster
dường như có các cổng của , mặc dù nó dường như bị ngừng ...
Có lẽ hiện tại không có giải pháp nào tồn tại cho MacPorts.
apt
hệ thống được Debian sử dụng. Tôi không sử dụng MacPorts, nhưng tôi đã làm fink install debfoster
và nó hoạt động tốt với tôi.
apt
hệ thống và không sử dụng deb
tệp. Ý tưởng về MacPorts có liên quan đến các cổng FreeBSD hoặc NetkgD pkgsrc, nhưng cách thực hiện rất khác nhau.