MacPorty
Pierwsze wydanie | 2002 |
---|---|
Wersja stabilna | |
Magazyn | |
Napisane w | Tcl i C |
System operacyjny | macOS , Darwin |
Platforma | IA-32 , x86-64 , PowerPC , ARM |
Dostępne w | język angielski |
Typ | System zarządzania pakietami |
Licencja | BSD |
Strona internetowa |
|
MacPorts , dawniej DarwinPorts , to menedżer pakietów dla systemów macOS i Darwin . Jest to oprogramowania typu open source , którego celem jest uproszczenie instalacji innego oprogramowania typu open source. Działa podobnie do kolekcji portów Finka i BSD .
MacPorts umożliwia instalację wielu pakietów, wprowadzając polecenie sudo port install nazwa_pakietu
w Terminalu , który następnie pobierze, w razie potrzeby skompiluje i zainstaluje żądane oprogramowanie, jednocześnie automatycznie instalując wszelkie wymagane zależności. Zainstalowane pakiety można zaktualizować za pomocą polecenia Sudo port upgrade outdated
. MacPorts obsługuje uniwersalne pliki binarne dla PowerPC, opartych na procesorach Intel i Apple krzemowych wersjach systemu macOS , ale migracja z instalacji MacPorts na komputerze PowerPC do wersji na komputerze Mac z procesorem Intel wymaga ponownej instalacji wszystkich zainstalowanych portów.
Stosowanie
Aktualizacja oprogramowania
Istnieją trzy główne tryby korzystania z portu
, które pomagają w aktualizacji zainstalowanego oprogramowania:
-
sync
aktualizuje lokalne drzewo portów. Nie aktualizuje żadnych zainstalowanych pakietów, ale zamiast tego pobiera informacje o nowym i zaktualizowanym oprogramowaniu. Działa podobnie dobrew update
lubapt update
. -
selfupdate
ma taką samą funkcjonalność jaksync
, ale także aktualizuje system MacPorts. W większości przypadków należy tego używać zamiast samego uruchamianiasynchronizacji
i zaleca się uruchamianie tego za każdym razem przed użyciem MacPorts. -
upgrade
aktualizuje wszystkie zainstalowane porty i ich zależności do najnowszej wersji znalezionej w lokalnym drzewie portów. Działa podobnie doapt upgrade
.
Na przykład jednym z typowych zadań jest aktualizacja przestarzałych portów. Można to zrobić, uruchamiając następujące czynności:
samoaktualizacja portu sudo aktualizacja portu sudo jest nieaktualna
MacPorts obsługuje operatory logiczne , takie jak and , or and not, a także wzorce globu (domyślnie włączone) i wyrażenia regularne (włączone przez --regex
). Na przykład, aby zaktualizować przestarzałe porty z wyłączeniem wszystkich PHP , zmień powyższe polecenie na następujące:
Sudo port selfupdate Aktualizacja portu sudo jest nieaktualna, a nie php *
Instalowanie oprogramowania
Użytkownicy mogą wskazać jeden lub więcej pakietów, które chcą zainstalować w trybie instalacji
, a MacPorts będzie dążyć do zainstalowania ich i ich zależności. Na przykład zarówno LibreOffice , jak i Texmaker można zainstalować, uruchamiając następujące polecenie:
sudo port zainstaluj libreoffice texmaker
Należy pamiętać, że spowoduje to zainstalowanie najnowszej wersji wskazanej w lokalnym drzewie portów. Wcześniejsze uruchomienie autoaktualizacji
zapewni, że pobrany pakiet jest najnowszą wersją w MacPorts.
Warianty
Warianty zapewniają różne opcje, które można wywołać podczas instalowania portu. Typowe akcje obejmują dodawanie lub usuwanie zależności oraz zmianę argumentów kompilacji. Zapewniają dodatkowe funkcje, które niekoniecznie muszą być przydatne dla wszystkich użytkowników, ale mogą być przydatne dla innych.
Na przykład port youtube-dl udostępnia wariant ffmpeg , który jest domyślnie włączony. W zamian za dodanie dwóch dodatkowych zależności pozwala to na wyodrębnienie dźwięku. Warianty można dołączać lub usuwać za pomocą +
lub -
, więc wariant ffmpeg można wyłączyć, uruchamiając następujące czynności:
sudo port zainstaluj youtube-dl -ffmpeg
Wiele wariantów można wymienić jeden po drugim, oddzielając je spacją. Na przykład możliwe jest wyłączenie domyślnego prefork MPM w Apache2 na korzyść worker MPM:
sudo zainstaluj port apache2 -preforkmpm + workermpm
Warianty portu można określić, uruchamiając komendę nazwa_pakietu wariantów portów
lub wyszukując port na stronie internetowej MacPorts.
Początek końca
Strona internetowa
Witryna MacPorts Ports została wdrożona podczas Google Summer of Code 2019, a główne ulepszenia interfejsu użytkownika zostały wprowadzone w ramach tego samego programu w 2020 r. Wyświetla informacje o poszczególnych portach, takie jak statystyki instalacji i historia kompilacji. Statystyki te są również dostępne za pośrednictwem interfejsu API . Użytkownicy mogą opcjonalnie zalogować się, aby otrzymać powiadomienie o aktualizacji portu.
Istnieje również oddzielna strona główna MacPorts, która zawiera informacje o projekcie, a także instrukcje dotyczące jego instalacji.
Historia
MacPorts powstał w 2002 roku przy zaangażowaniu wielu pracowników Apple Inc. , w tym Landona Fullera, Kevina Van Vechtena i Jordana Hubbarda . Pierwotnie był znany jako DarwinPorts, a nazwa pochodzi od Darwin i FreeBSD Ports . Zaczęło się jako część OpenDarwin , którego celem jest pomoc użytkownikom macOS i Darwin w instalacji oprogramowania Unix .
OpenDarwin został zamknięty w 2006 roku. DarwinPorts był następnie hostowany w Mac OS Forge, usłudze hostingowej typu open source stworzonej i utrzymywanej przez Apple Inc. dla projektów innych firm, które nie są obsługiwane przez Apple. Aby podkreślić nacisk projektu na macOS, zmieniono jego nazwę na MacPorts.
Kiedy Apple zamknął Mac OS Forge w 2016 roku, projekt przeniósł się do GitHub. W ramach tej zmiany git został użyty jako nowy system kontroli wersji , chociaż Trac był nadal preferowany do zarządzania zgłoszeniami w przypadku problemów z GitHubem.
Wersja 1.0 została wydana 28 kwietnia 2005. W grudniu 2005 projekt osiągnął kamień milowy, przekraczając 3000 portów. W tamtym czasie instalacja pakietu wiązała się z pobieraniem i kompilacją kodu źródłowego na maszynie użytkownika końcowego. Wersja 2.0, wydana w 2011 roku, wprowadziła obsługę gotowych archiwów binarnych; domyślnie porty są instalowane przy użyciu gotowego archiwum binarnego, jeśli jest dostępne, aw przeciwnym razie są budowane ze źródeł. Od stycznia 2023 r. MacPorts ma ponad 30 900 portów, a społeczność zapewnia najlepsze wsparcie.
Realizacja
MacPorts instaluje oprogramowanie na systemie operacyjnym , dostarczając nowsze wersje wstępnie zainstalowanych pakietów lub oprogramowania, które nie jest zawarte w systemie macOS. Jest to w przeciwieństwie do innych systemów zarządzania pakietami, takich jak APT i DNF , które są częścią systemu operacyjnego. Z tego powodu MacPorts jest czasami nazywany dystrybucją nakładkową. Inne przykłady to Fink i Homebrew .
W przeciwieństwie do kolekcji portów FreeBSD, która instaluje swoje oprogramowanie w /usr/local , MacPorts
domyślnie przechowuje swoje dane w /opt/local , chociaż można to zmodyfikować podczas kompilacji MacPorts ze źródła.
Powodem tej zmiany jest to, że inne systemy pakowania mogą zastąpić to, co zainstalował MacPorts, lub odwrotnie. Dedykowany katalog pomaga przezwyciężyć ten problem. Fink stosuje podobne podejście, domyślnie instalując swoje dane w katalogu /sw .
Archiwa binarne
Buildboty są używane do budowania portów z wyprzedzeniem, aby użytkownicy nie musieli kompilować pakietu lokalnie. Wynik tego jest znany jako archiwum binarne i pomaga skrócić czas instalacji. Podobnie jak Homebrew, MacPorts przyjmuje podejście polegające na posiadaniu różnych konstruktorów dla różnych wersji systemów operacyjnych i architektur. Czasami jednak może być konieczne zbudowanie ze źródła lokalnego, jeśli pliki binarne nie zostaną zbudowane lub licencja portu nie zezwala na dystrybucję binarną. Gdyby nie można było zbudować pliku binarnego, zostałoby to odnotowane na stronie internetowej MacPorts dla tego indywidualnego portu, a opiekun zostałby ostrzeżony. Możliwe jest również przeglądanie ostatnich zdarzeń buildbota na dedykowanej stronie aktywności.
Archiwa binarne są tworzone lokalnie za każdym razem, gdy użytkownik buduje port ze źródła. Można je również utworzyć ręcznie, uruchamiając sudo port archive nazwa_pakietu
.
Pliki portowe
MacPorts przechowuje instrukcje wymagane do zbudowania portu w pliku opisu portu, zwanym inaczej plikiem portów. Jest to podobne do tego, jak AUR używa skryptów powłoki znanych jako PKGBUILD lub jak Homebrew używa skryptów ruby jako formuły. Portfile to kompletne programy TCL z dostępem do interpretera TCL . Wykorzystują proste klucz-wartość do definiowania atrybutów.
MacPorts używa rzeczywistego języka skryptowego, a mianowicie TCL, do tworzenia opisów portów. Daje to autorowi portu dużo większą elastyczność w radzeniu sobie z niektórymi bardziej złożonymi fragmentami oprogramowania, a całe pojęcie haków akcji (pobieranie przed/po, kompilacja, instalacja itp.) jest znacznie czystsze w MacPorts [w porównaniu z FreeBSD ]
Na przykład jest to plik portowy dla Hashcat :
# -*- kodowanie: utf-8; tryb: _tcl; szerokość tabulatora: 2; tryb wcięcia-tabulacji: zero; c-basic-offset: 2 -*- vim:fenc=utf-8:ft=tcl:et:sw=2:ts=2:sts=2 PortSystem 1.0 PortGroup github 1.0 PortGroup makefile 1.0 github.setup hashcat hashcat 6.2 . 3 v github.tarball_from archiwum kategorie licencja bezpieczeństwa platformy MIT opiekunowie darwin @gaming-hacker opis openmaintainer Świat
to najszybsze i najbardziej zaawansowane narzędzie do odzyskiwania hasła . long_description hashcat to najszybsze i najbardziej zaawansowane \ na świecie narzędzie do odzyskiwania haseł , obsługujące pięć unikalnych \ trybów \ ataków dla ponad 200 wysoce zoptymalizowanych algorytmów haszujących . \ hashcat
obecnie obsługuje procesory , procesory graficzne i inne akceleratory sprzętowe w systemach Linux , Windows i macOS , a także ma funkcje ułatwiające rozproszone łamanie haseł . _ _ _ _ _ _ _ _ _ _
\ sha256 c0be1c6693ee1f35c7bef1f79bf9e30a954f717ef42d00e37787aaeff3271e51 \ rozmiar 6222424
Każdy plik portowy ma predefiniowane etapy, które można ręcznie skonfigurować za pomocą pliku portowego. Należą do nich:
Aportować
Najpierw MacPorts pobiera i pobiera wszystkie istotne pliki dla portu z upstream . Są to tak zwane pliki dist. W przypadku hashcata pliki te są pobierane z GitHub . Są one usuwane wraz z tymczasowymi plikami kompilacji po zakończeniu instalacji.
Suma kontrolna
Sumy kontrolne są zawsze definiowane w pliku portów, ponieważ są różne dla różnych plików. Sumy kontrolne pobranych plików są porównywane z sumami w pliku portowym, aby sprawdzić, czy są zgodne.
Dla Hashcat pobierany jest tylko jeden skompresowany plik, więc w pliku portowym wymagana jest tylko jedna suma kontrolna.
Skrawek
Czasami kod może wymagać modyfikacji, aby można go było zainstalować przez MacPorts. Może to wynikać z różnych powodów, takich jak domyślna instalacja w niewłaściwym miejscu. poprawek mogą być używane do modyfikowania kodu źródłowego w czytelnym formacie.
W powyższym pliku portowym Hashcat nie wymaga żadnych zmian w kodzie, aby instalacja działała. Dlatego nie są wymagane żadne pliki poprawek. Gdy wymagane są łatki, plik łatki byłby przechowywany wraz z plikiem portowym i odnosiłby się do niego w następujący sposób (z wget ):
pliki poprawek przedrostek.patch
Skonfiguruj
Skrypt konfiguracyjny projektu jest uruchamiany w celu przygotowania do procesu kompilacji. Częściowo obejmuje to określenie, czy wymagane biblioteki są obecne. W przypadku portów, które nie mają skryptu konfiguracyjnego, ten etap (oraz inne w razie potrzeby) można wyłączyć.
Ponieważ plik Portfile nie zawiera odniesienia do etapu konfiguracji, hashcat używa domyślnej konfiguracji konfiguracji zdefiniowanej przez MacPorts. Obejmuje to uruchomienie skryptu konfiguracyjnego za pomocą ./configure
.
Zbudować
Instrukcje w pliku portów są następnie używane do budowania portu. Wykonywane polecenia mogą się różnić w zależności od języka .
Portfile dla hashcata pokazuje, że powinien być traktowany jako projekt Makefile . Dlatego zostanie zbudowany przez uruchomienie make
.
Test
Niektóre porty definiują test w celu sprawdzenia, czy kompilacja się powiodła. Jest to opcjonalna faza, która jest uruchamiana tylko wtedy, gdy użytkownik wykona test portu nazwa_pakietu
. Dlatego nie jest wykonywany podczas instalowania portu.
Ten port hashcat nie zdefiniował etapu testowego. Po zdefiniowaniu może wyglądać następująco (z ImageMagick ):
test.run tak test.target check test.env DYLD_LIBRARY_PATH =$ { workrcścieżka } / magick / .libs
zniszczyć
Etap destroot jest pierwszym krokiem w przeniesieniu zbudowanych plików do właściwej lokalizacji. MacPorts stosuje podejście polegające na umieszczeniu instalacji w lokalizacji pośredniej (destroot) przed umieszczeniem plików we właściwych pozycjach (instalacja). Jedną z zalet tego jest to, że ułatwia rejestrowanie, jakie pliki zostały utworzone, umożliwiając ich czyste odinstalowanie.
Na przykład plik, który normalnie zostałby zainstalowany w /opt/local/lib/libfoo.a
, może najpierw zostać zainstalowany w /tmp/stage/opt/local/lib/libfoo.a
podczas etapu destroot, zachowując katalog względny Struktura.
W przypadku hashcat odbywa się to poprzez uruchomienie make install
, gdzie jeden z argumentów ( DESTDIR
) określa miejsce tymczasowego przechowywania plików.
Należy pamiętać, że w większości scenariuszy na komputerze użytkownika występują tylko poniższe etapy. Dzieje się tak, ponieważ pliki binarne dla portów są wstępnie zbudowane, więc nie trzeba ich budować lokalnie ze źródła.
zainstalować
Zniszczone pliki są bezpiecznie archiwizowane. Ponieważ te pliki nie zostały jeszcze aktywowane, pozwala to na archiwizowanie wielu różnych wersji tego samego portu bez wzajemnego zakłócania się.
Aktywuj
Podczas aktywacji portu pliki w katalogu destroot są przenoszone do właściwej lokalizacji. Dzięki temu są dostępne dla użytkownika, kończąc proces instalacji.
Jeśli chcą wypróbować inną wersję portu, mogą dezaktywować swoją obecną wersję i aktywować nową. Nie powoduje to odinstalowania starego portu, ponieważ można go łatwo ponownie aktywować ze zarchiwizowanych plików.
Podczas aktualizacji portu MacPorts dezaktywuje, ale nie odinstalowuje bieżącej wersji ze względów bezpieczeństwa. Pozwala to użytkownikowi na łatwy powrót do starej wersji, jeśli aktualizacja spowoduje istotne zmiany.
Rozwój
Za pakiety odpowiadają poszczególni opiekunowie, którzy są wymienieni w pliku przeniesienia. Oczekuje się, że zaktualizują port i w razie potrzeby zastosują poprawki błędów. Każdy, kto chce zmodyfikować plik portowy, powinien powiadomić opiekuna przed zastosowaniem zmian, chociaż nie zawsze jest to wymagane w przypadku drobnych modyfikacji.
Każdy może wnieść wkład do MacPorts, zazwyczaj za pośrednictwem żądań ściągnięcia , a współtwórcy mogą ubiegać się o prawa do zatwierdzenia po dobrym doświadczeniu jako opiekun. Zespół członków MacPorts, zwanych kierownikami projektu, pomaga w prowadzeniu i koordynowaniu projektu.
Począwszy od 2016 roku spotkania odbywają się okazjonalnie raz w roku. Zwykle odbywają się w Słowenii i pozwalają członkom MacPorts pracować nad przyszłym rozwojem.
Zbieranie danych
Domyślnie MacPorts nie zbiera żadnych statystyk. Jednak użytkownicy mogą opcjonalnie przesyłać informacje, uruchamiając sudo port install mpstats
. Raz w tygodniu wysyła szczegółowe informacje o zainstalowanych portach, a także różne właściwości systemu. Informacje te są następnie wykorzystywane do określenia, który sprzęt ma być obsługiwany, oraz do zrozumienia, jak szybko nowe wersje MacPorts są przyjmowane.
Użytkownicy mogą przeglądać dane analityczne w witrynie MacPorts.