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!
uratowałeś mi 400MB, dzięki ;)
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/>
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.
@riddle http://news.ycombinator.com/item?id=840428 czytales to co mi wkleiles? :)
Bo wg tego tekstu to ja widzę wiele więcej powodów, by używać MacPorts z ich włąsnymi zależnościami od pakietów niż to co oferuje Apple.