Upgrade MacPorts i czyszczenie śmieci

U

Od dawna używam MacPorts, bo cenię sobie takie command-line programy jak wget czy lftp. Nie znam lepszego sposobu pod Makiem, jak sobie je skompilować właśnie używając MacPorts. Problem jedynie w tym, że robiąc upgrady, MacPorts nie usuwa starych wersji, ani nawet plików tymczasowych. Po dłuższym czasie może się okazać że /opt zajmuje już sporą część dysku. U mnie sprawa wyglądała tak:

macbookpro:~ root# du -sh /opt/
772M	/opt/

Sporo, szczególnie, że naprawdę nie używam wiele więcej z MacPorts niż te wyżej wymienione programy. Taki stan miałem po wykonaniu:

port upgrade outdated

kiedy to się zorientowałem, że kiedy stary pakiet przechodzi w stan deactivated nie jest usuwany. Bummer! Na szczęście port umożliwia ręczne czyszczenie takich “śmieci”. Oto krótki sposób jak to zrobić.

Na początek sprawdźmy co się stanie jeśli usuniemy wszystkie pliki tymczasowe z buildroota pakietów:

port clean --all installed

Po tej operacji zwolniło się u mnie trochę ponad 200MB.

macbookpro:~ root# du -sh /opt/
532M	/opt/

Teraz możemy usunąć nieaktywne porty:

port -f uninstall inactive

Kolejne 200MB mniej na dysku:

macbookpro:~ root# du -sh /opt/
332M	/opt/

Należałoby zatem zapamiętać sobie te komendy i wykonać za każdym razem kiedy robimy upgrade pakietów.

Na koniec jeszcze parę przydatnych komend:

port -f activate pakiet@wersja - aktywuje konkretny pakiet
port installed - listuje wszystkie zainstalowane pakiety
port installed inactive - listuje zainstalowane lecz nieaktywne pakiety
port installed active - i vice-versa
port selfupdate - autouaktualnienie samego programu port i jego bazy portów

Bijcie!

About the author

Bartosz

iOS and OS X software engineer. Currently working in Berlin, Germany.

6 comments

  • Widzę, że nadal muszę krzewić wiedzę na temat Homebrew będącego 100x lepszą alternatywą MacPorts. Nie robi burdelu w plikach (czemu poświęcony jest praktycznie ten wpis), nie wymaga sudo oraz o wiele lepiej sobie radzi z zależnościami niż ta kobyła. MacPorts przy Homebrew to jak Firefox przy Chrome. <http://mxcl.github.com/homebrew/&gt;

  • Takich rzeczy jest mnóstwo i każde ma swoje plusy i minusy. Port jest z BSD, nie powiesz mi chyba, że BSD ssie bo robi sie burdel? Nie robi, jeśli zna się komendy czyszczące. Tak samo rpm, tak samo deb, już nie wspomnę o solarisie i jego csw. Założę się, że homebrew ma także swoje słabe strony.

  • Homebrew został zadesignowany z myślą o porządku. Na początku wpisu określasz, że z narzędzi używasz głównie wget i lftp. Nie wiem po co tachać dla nich MacPorts, skoro lekkie i sprawdzone Homebrew zrobi Ci to samo. Widzisz, MacPort powstało bo było zapotrzebowanie na cokolwiek. Homebrew powstało, bo niektórzy developerzy mają wyższe standardy i nie chcą mieć bałaganu w filesystemie i dziesiątek zależności oraz sterty śmieci. To co przytoczyłeś we wpisie znakomicie podsumowuje MacPorts – chcesz mieć porządek, musisz się czegoś nauczyć. Homebrew nie ma takich problemów. :P

    A „takich rzeczy” nie jest wcale mnóstwo. http://news.ycombinator.com/item?id=840428

  • Jestem developerem PLD, znam się na śmieciach :)
    Szczerze mówiąc, nie przeszkadza mi MacPorts – jest znane i często używane. Nie przeszkadza mi napisać sobie posta jak się czyści te śmieci i potem sobie od czasu do czasu do przeczytać. Tak samo jak nie przeszkadza mi skakać między Qt4, a Objective-C 2.0 i jakimś śmiesznym KDevelop, a XCode.

By Bartosz