Porty Mac — MacPorts
Pierwsze wydanie | 2002 |
---|---|
Wersja stabilna | |
Magazyn | |
Napisane w | Tcl i C |
System operacyjny | macOS , Darwin |
Platforma | IA-32 , x86-64 , PowerPC , ramię |
Dostępne w | język angielski |
Rodzaj | System zarządzania pakietami |
Licencja | BSD |
Strona internetowa |
www |
MacPorts , dawniej nazywany DarwinPorts , to system zarządzania pakietami, który upraszcza instalację oprogramowania w systemach operacyjnych macOS i Darwin . Jest to projekt oprogramowania typu open source, którego celem jest uproszczenie instalacji innego oprogramowania typu open source. Jest podobny w działaniu do kolekcji portów Fink i BSD .
MacPorts umożliwia instalację wielu pakietów, wprowadzając polecenie w Terminalu , które następnie pobierze, skompiluje i zainstaluje żądane oprogramowanie, a także automatycznie zainstaluje wymagane zależności. Zainstalowane pakiety można zaktualizować za pomocą polecenia .
sudo port install packagename
sudo port upgrade outdated
MacPorts obsługuje uniwersalne pliki binarne dla PowerPC, Intel i Apple Silicon wersji macOS , ale migracja z instalacji MacPorts PowerPC do wersji na Intel Mac wymaga ponownej instalacji wszystkich zainstalowanych portów.
Stosowanie
Aktualizacja oprogramowania
Istnieją trzy główne tryby użytkowania, port
które pomagają w aktualizacji zainstalowanego oprogramowania:
-
sync
aktualizuje drzewo portów lokalnych. 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ść jak,sync
ale także aktualizuje system MacPorts. W większości przypadków powinno to być używane zamiast samodzielnego uruchamianiasync
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 drzewie portów lokalnych. Działa podobnie doapt upgrade
.
Na przykład jednym z typowych zadań jest aktualizacja przestarzałych portów. Można to zrobić, uruchamiając:
sudo port selfupdate
sudo port upgrade outdated
MacPorts obsługuje operatory logiczne, takie jak i , lub i nie, a także wzorce glob (domyślnie włączone) i wyrażenie regularne (włączone przez --regex
). Na przykład, aby zaktualizować przestarzałe porty z wyłączeniem wszystkich wersji PHP , zmień powyższe polecenie na następujące:
sudo port selfupdate
sudo port upgrade outdated and not php*
Instalowanie oprogramowania
Użytkownicy mogą wskazać jeden lub więcej pakietów, które chcą zainstalować w install
trybie, 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:
sudo port install libreoffice texmaker
Zauważ, że spowoduje to zainstalowanie najnowszej wersji wskazanej przez drzewo portów lokalnych. Uruchomiony selfupdate
wcześniej będzie upewnić się, że pakiet Pobrano to najnowsza wersja w DarwinPorts.
Warianty
Warianty zapewniają różne opcje, które można wywołać podczas instalowania portu. Typowe akcje obejmują dodawanie lub usuwanie zależności i zmianę argumentów kompilacji. Zapewniają dodatkową funkcjonalność, która niekoniecznie jest przydatna dla wszystkich użytkowników, ale może być przydatna dla innych.
Na przykład port youtube-dl zapewnia wariant ffmpeg, który jest domyślnie włączony. W zamian za dodanie dwóch dodatkowych zależności umożliwia to wyodrębnienie dźwięku. Warianty można dołączać lub usuwać za pomocą symboli +
lub -
, więc wariant ffmpeg można wyłączyć, uruchamiając następujące polecenie:
sudo port install youtube-dl -ffmpeg
Wiele wariantów można wymienić jeden po drugim, oddzielając je spacją. Jako przykład, możliwe jest wyłączenie domyślnego MPM prefork w apache2 portu na rzecz pracownika MPM:
sudo port install apache2 -preforkmpm +workermpm
Warianty portu można określić, uruchamiając lub wyszukując port w witrynie MacPorts.
port variants packagename
Początek końca
Strona internetowa
Witryna MacPorts Ports została wdrożona podczas Google Summer of Code 2019, z dużymi ulepszeniami interfejsu użytkownika wprowadzonymi w tym samym programie w 2020 roku. 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 otrzymywać powiadomienia o aktualizacji portu.
Istnieje również osobna strona główna MacPorts, która zawiera informacje o projekcie, a także instrukcje dotyczące jego instalacji.
Aplikacje GUI
Duży postęp w oficjalnej aplikacji GUI o nazwie Pallet został dokonany w ramach Google Summer of Code. Jednak klient jest obecnie uszkodzony, chociaż poczyniono pewne postępy w próbach naprawienia tego.
Dostępne są również alternatywy innych firm.
Historia
MacPorts został uruchomiony 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ęść projektu OpenDarwin , którego celem jest pomoc użytkownikom systemów macOS i Darwin w instalacji oprogramowania uniksowego .
OpenDarwin został zamknięty w 2006 roku. DarwinPorts był następnie hostowany na Mac OS Forge, usłudze hostingowej typu open source stworzonej i utrzymywanej przez Apple Inc. dla projektów stron trzecich nieobsługiwanych przez Apple. Aby wskazać na nacisk projektu na macOS, jego nazwę zmieniono na MacPorts.
Kiedy Apple zamknął Mac OS Forge w 2016 roku, projekt został przeniesiony na GitHub. Jako część tej zmiany, git był używany jako nowy system kontroli wersji , chociaż Trac był nadal preferowany do zarządzania biletami niż problemy z GitHub.
Wersja 1.0 została wydana 28 kwietnia 2005 r. W grudniu 2005 r. projekt osiągnął kamień milowy, przekraczając 3000 portów. W tym czasie instalacja pakietu obejmowała pobieranie i kompilację kodu źródłowego na maszynie użytkownika końcowego. Wersja 2.0, wydana w 2011 roku, wprowadziła wsparcie dla 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ł. Według stanu na sierpień 2021 r. MacPorts ma ponad 26 600 portów, a wsparcie w trybie best-effort może być pozyskiwane od społeczności.
Realizacja
MacPorts instaluje oprogramowanie na systemie operacyjnym , udostępniając nowsze wersje wstępnie zainstalowanych pakietów lub oprogramowania, którego nie ma 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ładek. Inne przykłady to Fink i Homebrew .
W przeciwieństwie do kolekcji portów FreeBSD, która instaluje swoje oprogramowanie w /usr/local
, MacPorts /opt/local
domyślnie przechowuje swoje dane , chociaż można to zmienić podczas kompilacji MacPorts ze źródeł. Powodem tej zmiany jest to, że inne systemy pakowania mogą nadpisać to, co zainstalował MacPorts, lub odwrotnie. Dedykowany katalog pomaga rozwiązać ten problem. Fink stosuje podobne podejście, /sw
domyślnie instalując swoje dane .
Archiwa binarne
Buildboty służą do wcześniejszego budowania portów, dzięki czemu użytkownicy nie muszą kompilować pakietu lokalnie. Rezultatem tego jest archiwum binarne, które pomaga skrócić czas instalacji. Podobnie jak Homebrew, MacPorts stosuje podejście polegające na posiadaniu różnych konstruktorów dla różnych wersji i architektur systemu operacyjnego. Jednak czasami może być konieczne budowanie ze źródeł lokalnie, jeśli binaria nie skompilują się lub licencja portu nie zezwala na dystrybucję binariów. Jeśli nie można zbudować pliku binarnego, zostanie to odnotowane na stronie MacPorts dla tego indywidualnego portu, a opiekun zostanie ostrzeżony. Możliwe jest również przeglądanie ostatnich wydarzeń dotyczących buildbotów 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ż tworzyć ręcznie, uruchamiając .
sudo port archive packagename
Pliki portowe
MacPorts przechowuje instrukcje wymagane do zbudowania portu w pliku opisu portu, zwanym inaczej plikiem portu. 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. Pliki portów to kompletne programy TCL z dostępem do interpretera TCL . Używają prostych opcji pary 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 portów o wiele większą elastyczność w radzeniu sobie z niektórymi bardziej złożonymi częściami oprogramowania, a całe pojęcie zaczepów akcji (pobieranie przed/po, kompilacja, instalacja itp.) jest znacznie czystsze w MacPorts [w porównaniu z FreeBSD ]
Na przykład jest to plik portu dla Hashcat :
# -*- coding: utf-8; mode: _tcl; tab-width: 2; indent-tabs-mode: nil; 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 archive
categories security
license MIT
platforms darwin
maintainers @gaming-hacker openmaintainer
description World's fastest and most advanced password recovery utility.
long_description hashcat is the world's fastest and most advanced \
password recovery utility, supporting five unique modes \
of attack for over 200 highly-optimized hashing algorithms. \
hashcat currently supports CPUs, GPUs, and other hardware \
accelerators on Linux, Windows, and macOS, and has \
facilities to help enable distributed password cracking
homepage https://hashcat.net/hashcat/
build.target {}
checksums rmd160 8bb501834a320aaac3de149c5ab39c2eb89ee968 \
sha256 c0be1c6693ee1f35c7bef1f79bf9e30a954f717ef42d00e37787aaeff3271e51 \
size 6222424
Każdy plik portu ma wstępnie zdefiniowane etapy, które można ręcznie skonfigurować za pomocą pliku portu. Należą do nich:
Aportować
Najpierw MacPorts pobiera i pobiera wszystkie odpowiednie pliki dla portu z upstream . Są one znane jako pliki dystrybucyjne. W przypadku hashcat pliki te są pobierane z GitHub . Są one usuwane wraz z tymczasowymi plikami kompilacji po zakończeniu instalacji.
Suma kontrolna
Sumy kontrolne są zawsze zdefiniowane w pliku portu, ponieważ są różne dla różnych plików. Sumy kontrolne pobranych plików są porównywane z tymi w pliku portu, aby sprawdzić, czy są zgodne.
Dla Hashcata pobierany jest tylko jeden skompresowany plik, więc w pliku portu wymagana jest tylko jedna suma kontrolna.
Łata
Czasami kod może wymagać modyfikacji, aby można go było zainstalować za pośrednictwem MacPorts. Może to być spowodowane różnymi przyczynami, na przykład domyślną instalacją w złym miejscu. Pliki poprawek można wykorzystać do modyfikacji kodu źródłowego w czytelnym formacie.
W powyższym pliku portu Hashcat nie wymaga żadnych zmian w kodzie, aby instalacja działała. W związku z tym nie są wymagane żadne pliki poprawek. Gdy wymagane są łatki, plik łaty byłby przechowywany z plikiem portu i miałby odwołanie w następujący sposób (z wget ):
patchfiles prefix.patch
Konfiguruj
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 (a także inne, gdy jest to wymagane) można wyłączyć.
Ponieważ etap konfiguracji nie jest wymieniony w pliku Portfile, hashcat używa domyślnej konfiguracji konfiguracji zdefiniowanej przez MacPorts. Wiąże się to z uruchomieniem skryptu konfiguracyjnego poprzez ./configure
.
Budować
Instrukcje w pliku portu są następnie używane do zbudowania portu. Wykonywane polecenia mogą różnić się w zależności od języka .
Plik portu dla hashcat pokazuje, że powinien być traktowany jako projekt Makefile . Będzie więc budowany przez bieganie make
.
Test
Niektóre porty definiują test, aby sprawdzić, czy kompilacja się powiodła. Jest to faza opcjonalna, która jest uruchamiana tylko wtedy, gdy użytkownik wykonuje . Dlatego nie jest wykonywany podczas instalacji portu.
port test packagename
Ten port hashcat nie zdefiniował etapu testowego. Po zdefiniowaniu może wyglądać następująco (z ImageMagick ):
test.run yes
test.target check
test.env DYLD_LIBRARY_PATH=${worksrcpath}/magick/.libs
Zniszcz
Etap destroot to pierwszy krok do przeniesienia 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 jest to, że ułatwia rejestrowanie utworzonych plików, co pozwala na ich czystą deinstalację.
Na przykład plik, który normalnie byłby zainstalowany, /opt/local/lib/libfoo.a
może być najpierw zainstalowany na /tmp/stage/opt/local/lib/libfoo.a
etapie destroot, zachowując względną strukturę katalogów.
W przypadku hashcat odbywa się to poprzez uruchomienie make install
, gdzie jeden z argumentów ( DESTDIR
) określa, gdzie tymczasowo przechowywać pliki.
Zwróć uwagę, ż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ódeł.
zainstalować
Zniszczone pliki są bezpiecznie archiwizowane. Ponieważ te pliki nie zostały jeszcze aktywowane, pozwala to na archiwizację 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ą one dostępne dla użytkownika, kończąc proces instalacji.
Jeśli chcą wypróbować inną wersję portu, mogą dezaktywować aktualną wersję i aktywować nową. Nie powoduje to odinstalowania starego portu, ponieważ można go łatwo ponownie aktywować z zarchiwizowanych plików.
Podczas uaktualniania portu MacPorts dezaktywuje się, ale nie odinstalowuje bieżącej wersji jako funkcja bezpieczeństwa. Dzięki temu użytkownik może łatwo powrócić do starej wersji, jeśli aktualizacja spowoduje poważne zmiany.
Rozwój
Za pakiety odpowiadają poszczególni opiekunowie, którzy są wymienieni w pliku portfile. Oczekuje się, że zaktualizują port i zastosują poprawki błędów tam, gdzie jest to wymagane. Każdy, kto chce zmodyfikować portfile, powinien powiadomić opiekuna przed zastosowaniem zmian, chociaż nie zawsze jest to wymagane w przypadku drobnych modyfikacji.
Każdy może wnieść swój wkład w MacPorts, zazwyczaj za pośrednictwem pull requestów , a współtwórcy mogą ubiegać się o prawa do zatwierdzenia po dobrej historii jako opiekun. Zespół członków MacPorts, znanych jako kierownicy projektów, pomaga prowadzić i koordynować projekt.
Od 2016 roku spotkania odbywają się sporadycznie 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
. Dzięki temu raz w tygodniu wysyłane są 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 należy obsługiwać, oraz do zrozumienia, jak szybko wdrażane są nowe wersje MacPorts.
Użytkownicy mogą przeglądać dane analityczne na stronie MacPorts.