Kullanılmayan MacPorts paketleri nasıl kaldırılır?


91

Ne zaman bir programı MacPorts aracılığıyla kurarsam, çok fazla bağımlılık alır ve kurar. Adı geçen programı kaldırdığımda, MacPorts'un kullanılmayan tüm bağımlılıkları tekrarlı olarak kaldırmasını nasıl sağlayabilirim?

Yanıtlar:


102

İstediğiniz şeyler olabilecek yaprakların yanlışlıkla kesilmesini önlemek port_cutleaves paket sonra çalıştırın sudo port_cutleaves https://guide.macports.org/#using.common-tasks.keeplean


MacPorts 1.9.0 ekledi sqlite portdbformat ve MacPorts 2.0.0 eskisi gibi düştü flat biçim . sqlite port DB formatı yeni kurulumlar için varsayılandır; 1.9.x'e yükseltilen eski kurulumları kullanmaya devam edecek flat biçim 1 . 1.9.x dönüştürebilirsiniz flat sisteme sqlite MacPorts 2.0'a yükselterek veya portdbformat değeri /opt/local/etc/macports/macports.conf ve sonra bir Liman root olarak komut (ör. sudo port installed ).

Yeni formatın özelliklerinden biri, “talep edilmeyen” port kurulumlarına karşı “istenen” i izlemektir. İstenmeyen bir bağlantı noktası yalnızca yüklü olan bağlantı noktasıdır, çünkü başka bir bağlantı noktası buna bağlıdır. leaves sözde port ismi, başka kurulu portun dayanmadığı tüm talep edilmeyen portlara genişler. Bunları, başlangıçta kaldırmadıysanız bile, gereksiz bağlantı noktalarını “temizlemek” için kullanabilirsiniz. sudo port uninstall --follow-dependencies portname (istediğini yapacaksın, ama sadece bir şeyi her kaldırdığında kullanmayı hatırlıyorsan).


Herhangi birini kaldırmadan önce mevcut yapraklarınızı incelemelisiniz.

port echo leaves

Bazı ortak yapraklar ( automake, gperf, libtool, pkgconfig ) ortak bağlantı noktalarının yapılı-zaman bağımlılıkları olduğundan, onları “talep etmek” isteyebilirsiniz ( sudo port setrequested port1 port2 port3 … ) onları daha sonra yeniden yüklemek zorunda kaldırarak kaldırmak için.

Kalan yaprakları kolayca kaldırabilirsiniz:

sudo port uninstall leaves

Not: Yapraklarınızı budanmadan önce, artık “aktif” olmayan bağlantı noktalarının eski sürümlerini de kaldırmak isteyebilirsiniz. Bu, birkaç yaprak daha ortaya çıkarabilir (yani, yüklü ancak etkin olmayan bağlantı noktalarına bağlı olan bağlantı noktaları):

sudo port uninstall inactive

Var birkaç bölüm içinde MacPorts Kılavuzu Bu da kullanma sürecini açıklar leaves Gereksiz bağlantı noktalarını kaldırmak için.


11
Teşekkürler. Bu oldukça yardımcı olur. Tüm yaprakların temizlendiğinden emin olmak için eko yapraklarını çalıştırmanız ve yaprakları birkaç kez arka arkaya kaldırmanız gerekebilir. Yankı yaprakları boş sonuç vermeden önce her iki komutu da en az 4 kez çalıştırdım
Antony

6
Gibi bir şey söyleyebilirsin while sudo port uninstall leaves; do :; done Bunu otomatikleştirmek için.
Tom Anderson

2
@ChrisJohnsen sudo port uninstall --follow-dependents portname yanlış, çünkü --follow-dependents "belirtilen porta bağlı olan bütün portları tekrar tekrar kaldır". Burada doğru seçenek --follow-dependencies"Belirtilen bağlantı noktasının bağlı olduğu tüm bağlantı noktalarını art arda kaldırır. Bu, istenen olarak işaretlenen veya başka bağımlılıkları olan bağımlılıkları kaldırmaz."
TachyonVortex

8

Dokümanlardan :

Kaldırma işlemi bir   yüklü bağlantı noktası

%% sudo port uninstall vile Note

Ayrıca yinelemeli olarak kaldırmak için   Verilen limanın bağlı olduğu limanlar,   kullan ‑‑follow‑dependencies bayrağı.   Bu bağımlılıkları kaldırmaz   istendiği gibi işaretlenmiş veya   başka bağımlıları var.

Tüm bağlantı noktalarını yinelemeli olarak kaldırmak için   daha önce verilen limana bağlı   portu kaldırarak, ‑‑follow‑dependents flag.

Bir liman başka bir bağımlılıksa   yüklü port, kaldırma olmaz   kaldırmadıkça kaldırın   ilk önce bağımlı portlar. Geçersiz kılmak   Bu davranış, -f (zorla) kullanın.   geçin. Bu açıkça belli ki   bakmakla yükümlü. Kaldırma işlemini zorlama   ne olduğunuzu bilmiyorsanız portlar   yapıyor.

%% sudo port -f uninstall vile

Son paragraftaki ana uyarıya dikkat edin. Bağımlılıklar tam olarak - bağımlılıklar - ve farklı uygulamalar aynı bağımlılıkları gerektirebilir (ister).


Bunun soruyu cevapladığını sanmıyorum. OP, bir programı ve onun gerektirdiği şeyleri kaldırmak istiyor, bir programı ve onu gerektiren şeyleri kaldırmak değil

2
@mankoff: ‑‑follow‑dependencies vs. ‑‑follow‑dependents; Alıntılanan bölüm her ikisini de tarif eder, ancak yalnızca birincisi soru için geçerlidir.
Chris Johnsen

3
Şahsen, ben Philip'in her iki parametreyi de açıklamasının harika olduğunu düşünüyorum, bu yüzden parametreleri ve bu komutu vermedeki etkilerinin tamamen farkındayız.
Antony


3

MacPorts'un katkı dizininde gereksiz bağımlılıkları kaldırmak için çalıştırabileceğiniz port_cutleaves adlı bir komut dosyası da var: http://trac.macports.org/browser/contrib/ . Sizden kaldırılacak her bir bağlantı noktası isteyecektir ve isterseniz bazılarını korumanıza izin verir.


1

Bence diğer cevaplar ve --follow-dependents bayrak, ne istersen yapma. Yüklerseniz A, ve A gerektirir B, ardından harika paket yönetim sistemleri sayesinde, B sizin için kurulacak. Kaldırabilirsiniz B ve --follow-dependents bayrak farkında olacak ve silecektir A. Ama ya kaldırırsan A, daha muhtemeldir, çünkü A ilk etapta el ile yüklediğiniz şey nedir? Bu durumda, B geride kaldı.

Eğer fink kullanıyorsanız, debfoster Paket, sisteminizi temizlemek ve kullanılmayan bağımlılıkları kaldırmak için tasarlanmıştır.

Debfoster kurtulmanıza yardımcı olacak   paketler (örneğin kütüphaneler) get   ne zaman sisteminizde geride kaldı   onu gerektiren program kaldırıldı   veya olmayan bir sürüme yükseltildi   bağımlılığı var.

Süre debfoster MacPorts için çalışmayacak, bağlantı noktaları gibi görünüyor debfoster, Örneğin, portsfoster, kesilmiş gibi görünmesine rağmen ...

MacPorts için şu anda bir çözüm mevcut değil.


Ancak Debian tabanlı sistemdeki deb dosyaları için debfoster değil mi? Mac OS X'teki MacPorts bağlantı noktaları için nasıl kullanırım?
hpy

OS X ve MacPorts'a taşınıyor ve fink apt Debian tarafından kullanılan sistem. MacPorts kullanmıyorum ama bir fink install debfoster ve benim için gayet iyi çalıştı.

MacPorts ile ilgili değildir apt sistem ve kullanmaz deb Dosyalar. MacPorts'un fikri FreeBSD portları veya NetBSD pkgsrc ile ilgilidir, ancak uygulama çok farklıdır.
Chris Johnsen

1
TAMAM. Düzeltme için teşekkürler. Ne olursa olsun, borçluların iyi çalışması için kabul edildi fink. Daha fazla arama gösterir ki değil MacPorts ile çalışmak, ancak eski için, bkz klonlar portsfoster

1

Bağlantı noktası temizliğini otomatikleştirmek için bazı komut dosyaları yazdım: https://github.com/vasi/macports-tools

'Macportsfoster' betiği, istenen listedeki herhangi bir şey için gerekmeyen tüm portların bir listesini çıkartacak, 'port $' ı (macportsfoster) deaktive et '' komutunun hepsini bir kerede kaldıracak şekilde sıralanacak.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.