MacPorts
Initial release | 2002 |
---|---|
Stabil frisättning | |
Förvar | |
Skrivet i | Tcl och C |
Operativ system | macOS , Darwin |
Plattform | IA-32 , x86-64 , PowerPC , ARM |
Tillgänglig i | engelsk |
Typ | Pakethanteringssystem |
Licens | BSD |
Hemsida |
|
MacPorts , tidigare DarwinPorts , är en pakethanterare för macOS och Darwin . Det är ett mjukvaruprojekt med öppen källkod som syftar till att förenkla installationen av annan programvara med öppen källkod. Funktionen liknar Fink och BSD- portars samlingar .
MacPorts tillåter installation av ett antal paket genom att ange kommandot sudo port install packagename
i terminalen , som sedan laddar ner, kompilerar vid behov och installerar den efterfrågade programvaran, samtidigt som alla nödvändiga beroenden installeras automatiskt. Installerade paket kan uppdateras med kommandot sudo port upgrade outdated
. MacPorts stöder universella binärfiler för PowerPC-, Intel-baserade och Apple-kiselversioner av macOS , men migrering från en PowerPC-installation av MacPorts till en version på en Intel Mac kräver ominstallation av alla installerade portar.
Användande
Uppdatering av programvara
Det finns tre huvudsakliga användningslägen för port
som hjälper till att uppdatera installerad programvara:
-
sync
uppdaterar det lokala portträdet. Den uppgraderar inga installerade paket utan hämtar istället information om ny och uppdaterad programvara. Funktionen liknarbrygguppdatering
ellerapt update
. -
selfupdate
har samma funktionalitet somsync
men uppdaterar också MacPorts-systemet. I de flesta fall bör detta användas framför att bara körasynkronisering
av sig själv, och det rekommenderas att köra detta varje gång innan du använder MacPorts. -
uppgradering
uppgraderar alla installerade portar och dess beroenden till den senaste versionen som finns i det lokala portträdet. Funktionen liknarapt upgrade
.
Som ett exempel är en vanlig uppgift att uppdatera föråldrade portar. Detta kan göras genom att köra följande:
sudo port självuppdatering sudo port uppgradering föråldrad
MacPorts stöder logiska operatorer som och , eller och inte, såväl som globmönster (aktiverat som standard) och regex (aktiverat via --regex
). För att till exempel uppdatera föråldrade portar exklusive alla PHP- versioner, ändra kommandot ovan till följande:
sudo port självuppdatering sudo port uppgradering föråldrad och inte php*
Installerar programvara
Användare kan ange ett eller flera paket som de vill installera via installationsläget, och
MacPorts kommer att sträva efter att installera dem och dess beroenden. Till exempel kan både LibreOffice och Texmaker installeras genom att köra följande:
sudo port installera libreoffice texmaker
Observera att detta kommer att installera den senaste versionen enligt det lokala portträdet. Att köra självuppdatering
i förväg kommer att se till att det nedladdade paketet är den senaste versionen i MacPorts.
Varianter
Varianter ger olika alternativ som kan åberopas när du installerar en port. Vanliga åtgärder inkluderar att lägga till eller ta bort beroenden och ändra build-argument. De tillhandahåller ytterligare funktioner som kanske inte nödvändigtvis är användbara för alla användare, men som kan vara användbara för andra.
Till exempel tillhandahåller youtube-dl- porten en ffmpeg- variant som är aktiverad som standard. I gengäld för att lägga till två extra beroenden gör detta att ljud kan extraheras. Varianter kan inkluderas eller tas bort med hjälp av +
eller -
, så ffmpeg-varianten kan inaktiveras genom att köra följande:
sudo port installera youtube-dl -ffmpeg
Flera varianter kan listas efter varandra genom att separera dem med ett mellanslag. Som ett exempel är det möjligt att inaktivera standard prefork MPM i apache2 -porten till förmån för arbetar-MPM:
sudo port installera apache2 -preforkmpm +workermpm
Varianterna av en port kan bestämmas genom att köra portvarianter paketnamn
, eller genom att söka efter porten på MacPorts webbplats.
Frontends
Hemsida
Webbplatsen MacPorts Ports implementerades under Google Summer of Code 2019, med stora UI-förbättringar som gjordes inom samma program 2020. Den visar information om enskilda portar, såsom installationsstatistik och bygghistorik. Denna statistik är också tillgänglig via ett API . Användare kan valfritt logga in för att få ett meddelande när en port har uppdaterats.
Det finns också en separat MacPorts-hemsida, som ger information om projektet samt instruktioner om hur man installerar det.
Historia
MacPorts startades 2002 med inblandning av ett antal Apple Inc.- anställda, inklusive Landon Fuller, Kevin Van Vechten och Jordan Hubbard . Det var ursprungligen känt som DarwinPorts, med namnet från Darwin och FreeBSD Ports . Det började som en del av OpenDarwin -projektet, med syftet att hjälpa användare på macOS och Darwin att installera Unix -programvara.
OpenDarwin lades ner 2006. DarwinPorts var då värd på Mac OS Forge, en värdtjänst med öppen källkod skapad och underhållen av Apple Inc. för tredjepartsprojekt som inte stöds av Apple. För att indikera projektets tonvikt på macOS ändrades dess namn till MacPorts.
När Apple stängde Mac OS Forge 2016 flyttade projektet till GitHub. Som en del av denna förändring användes git som det nya versionskontrollsystemet , även om Trac fortfarande föredrogs för biljetthantering framför GitHub-problem.
Version 1.0 släpptes den 28 april 2005. I december 2005 nådde projektet en milstolpe och överträffade 3000 hamnar. Vid den tiden innebar paketinstallationen att källkoden laddades ner och kompilerades på slutanvändarens dator. Version 2.0, släppt 2011, introducerade stöd för förbyggda binära arkiv; som standard installeras portar med det förbyggda binära arkivet om det är tillgängligt, och byggs annars från källan. Från och med januari 2023 har MacPorts över 30 900 portar och det bästa stödet kan fås från communityn.
Genomförande
MacPorts installerar programvara ovanpå operativsystemet och tillhandahåller nyare versioner av förinstallerade paket eller programvara som inte ingår i macOS. Detta till skillnad från andra pakethanteringssystem, som APT och DNF , som är en del av operativsystemet. Av denna anledning är MacPorts ibland känd som en överlagringsdistribution. Andra exempel inkluderar Fink och Homebrew .
Till skillnad från FreeBSD Ports Collection, som installerar sin mjukvara i /usr/local
, lagrar MacPorts sina data i /opt/local
som standard, även om detta kan ändras när man kompilerar MacPorts från källan. Anledningen till denna förändring är att andra paketeringssystem kan skriva över det som MacPorts har installerat, eller vice versa. En dedikerad katalog hjälper till att övervinna detta problem. Fink följer ett liknande tillvägagångssätt och installerar sina data i /sw
som standard.
Binära arkiv
Buildbots används för att bygga portar i förväg så att användare inte behöver kompilera paketet lokalt. Resultatet av detta är känt som ett binärt arkiv, och det hjälper till att minska installationstiden. I likhet med Homebrew använder MacPorts metoden att ha olika byggare för olika operativsystemversioner och arkitekturer. Men ibland kan det vara nödvändigt att bygga från källkod lokalt om binärfilerna misslyckas med att bygga eller om portens licens inte tillåter binär distribution. Om en binär inte kunde byggas, skulle detta noteras på MacPorts webbplats för den enskilda porten och underhållaren skulle varnas. Det är också möjligt att se senaste buildbot-händelser på en dedikerad aktivitetssida.
Binära arkiv skapas lokalt när en användare bygger en port från källan. De kan också skapas manuellt genom att köra sudo port archive packagename
.
Portfiler
MacPorts lagrar instruktionerna som krävs för att bygga en port i en portbeskrivningsfil, även känd som en portfil. Detta liknar hur AUR använder skalskript som kallas PKGBUILD, eller hur Homebrew använder ruby -skript som formel. Portfilerna är kompletta TCL-program med tillgång till TCL- tolken . De använder sig av enkla nyckelvärdesparalternativ för att definiera attribut.
MacPorts använder ett faktiskt skriptspråk, nämligen TCL, för att skapa portbeskrivningar. Detta ger portskrivaren mycket mer flexibilitet när det gäller att hantera några av de mer komplexa mjukvarubitarna som finns och hela idén om actionhooks (för/efterhämtning, bygg, installation, etc) är mycket renare i MacPorts [jämfört med FreeBSD ]
Detta är till exempel portfilen för Hashcat :
# -*- kodning: utf-8; läge: _tcl; flikbredd: 2; indrag-tabs-läge: noll; 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 arkivkategorier säkerhetslicens MIT- plattformar darwin underhållare @ gaming - hacker openmaintainer beskrivning Världens snabbaste och mest avancerade verktyg för lösenordsåterställning . long_description hashcat är världens snabbaste och mest avancerade verktyg för återställning av lösenord , som stöder fem unika attacklägen för över 200 högoptimerade hashalgoritmer . _ _ _ \ hashcat stöder för närvarande processorer, GPU:er och andra hårdvaruacceleratorer på Linux , Windows och macOS, och har \ faciliteter för att möjliggöra distribuerad lösenordsknäckande hemsida https : // hashcat.net / hashcat / build.target { } checksums rmd160 8 bb501834a320aaac3de149c5ab39c2eb89ee968 \ sha256 c0be1c6693ee1f35c7bef1f79bf9e30a954f717ef42d00e37787aaeff324 storlek 6e52124 _
Varje portfil har fördefinierade steg som kan konfigureras manuellt via portfilen. Dessa inkluderar följande:
Hämta
Först hämtar och laddar MacPorts alla relevanta filer för porten från uppströms . Dessa är kända som distfiler. När det gäller hashcat, hämtas dessa filer från GitHub . De tas bort, tillsammans med temporära byggfiler, när installationen är klar.
Kontrollsumma
Kontrollsummor definieras alltid i portfilen, eftersom de är olika för olika filer. Kontrollsummorna för de nedladdade filerna jämförs med dem i portfilen för att se om de matchar.
Endast en komprimerad fil laddas ner för Hashcat, så endast en kontrollsumma krävs i portfilen.
Lappa
Ibland kan koden behöva modifieras för att den ska kunna installeras via MacPorts. Detta kan bero på en mängd olika anledningar, som att det installeras på fel plats som standard. Patchfiler kan användas för att modifiera källkoden i ett läsbart format.
I ovanstående portfil kräver Hashcat inga ändringar av koden för att installationen ska fungera. Därför krävs inga patchfiler. När korrigeringar krävs, lagras korrigeringsfilen med portfilen, och den hänvisas till som följande (från wget ):
patchfiles prefix.patch
Konfigurera
Projektets konfigureringsskript körs för att förbereda för byggprocessen. En del av detta innebär att avgöra om de nödvändiga biblioteken finns. För portar som inte har ett konfigureringsskript kan detta steg (liksom andra vid behov) inaktiveras.
Eftersom konfigurationssteget inte refereras till i portfilen, använder hashcat standardkonfigurationsinställningarna som definieras av MacPorts. Detta innebär att köra konfigureringsskriptet via ./configure
.
Bygga
Instruktionerna i portfilen används sedan för att bygga porten. De kommandon som körs kan variera för olika språk .
Portfilen för hashcat visar att den ska behandlas som ett Makefile- projekt. Den kommer därför att byggas genom att köra make
.
Testa
Vissa portar definierar ett test för att verifiera att bygget har lyckats. Detta porttestpaketnamn är
en valfri fas som endast körs om användaren kör . Den exekveras därför inte vid installation av en port.
Denna hashcat-port har inte definierat ett teststeg. När det är definierat kan det se ut så här (från ImageMagick ):
test.run ja test.target check test.env DYLD_LIBRARY_PATH =$ { workrcpath } / magick / .libs
Förstöra
Destroot-steget är det första steget i att flytta de inbyggda filerna till rätt plats. MacPorts tar tillvägagångssättet att först iscensätta installationen till en mellanliggande plats (förstöra) innan filerna placeras på rätt plats (installera). En fördel med detta är att det gör det enkelt att spela in vilka filer som skapades, vilket gör att de kan avinstalleras rent.
Som ett exempel kan en fil som normalt skulle installeras på /opt/local/lib/libfoo.a
först installeras på /tmp/stage/opt/local/lib/libfoo.a
under förstöringsstadiet, och bibehålla den relativa katalogen strukturera.
För hashcat görs detta genom att köra make install
, där ett av argumenten ( DESTDIR
) anger var filerna ska lagras tillfälligt.
Observera att i de flesta scenarier sker endast stegen nedan på användarens dator. Detta beror på att binärfiler för portarna är förbyggda så att de inte behöver byggas från källkod lokalt.
Installera
De förstörda filerna arkiveras säkert. Eftersom dessa filer inte har aktiverats ännu, tillåter detta att flera olika versioner av samma port kan arkiveras utan att störa varandra.
Aktivera
När du aktiverar en port flyttas filerna i destrootkatalogen till rätt plats. Detta gör dem tillgängliga för användaren och slutför installationsprocessen.
Om de vill prova en annan version av porten kan de inaktivera sin nuvarande version och aktivera den nya. Detta avinstallerar inte den gamla porten eftersom den enkelt kan aktiveras igen från de arkiverade filerna.
När du uppgraderar en port avaktiverar MacPorts men avinstallerar inte den aktuella versionen som en säkerhetsfunktion. Detta gör att användaren enkelt kan återgå till den gamla versionen om uppdateringen orsakar brytande ändringar.
Utveckling
Paketen är ansvariga för enskilda underhållare, som nämns i portfilen. De förväntas uppdatera porten och tillämpa buggfixar vid behov. Alla som vill modifiera en portfil bör varna underhållaren innan ändringarna tillämpas, även om detta inte alltid krävs för mindre ändringar.
Vem som helst kan bidra till MacPorts, vanligtvis via pull-förfrågningar , och bidragsgivare kan ansöka om commit-rättigheter efter goda resultat som underhållare. Ett team av MacPorts-medlemmar, kända som projektledare, hjälper till att leda och koordinera projektet.
Från och med 2016 har möten då och då hållits en gång per år. De äger normalt rum i Slovenien och gör det möjligt för MacPorts-medlemmar att arbeta med framtida utveckling.
Datainsamling
Som standard samlar inte MacPorts in någon statistik. Däremot kan användare valfritt skicka information genom att köra sudo port install mpstats
. Detta skickar information en gång i veckan om vilka portar som är installerade, samt olika systemegenskaper. Informationen används sedan för att bestämma vilken hårdvara som ska stödjas och för att förstå hur snabbt nya MacPort-versioner tas i bruk.
Användare kan se analysdata på MacPorts webbplats.