MacPorts

MacPorts
Initial release 2002 ( 2002 )
Stabil frisättning
Edit this on Wikidata 2.8.1 / 31 januari 2023 ; 31 dagar sedan ( 31 januari 2023 )
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 www .macports .org  Edit this on Wikidata

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 liknar brygguppdatering eller apt update .
  • selfupdate har samma funktionalitet som sync men uppdaterar också MacPorts-systemet. I de flesta fall bör detta användas framför att bara köra synkronisering 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 liknar apt 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

Hemsidan för MacPorts Ports webbplats.

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

Jordan Hubbard, en av de främsta skaparna av MacPorts medan han ledde Apples UNIX-team.

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:

Utdata från hashcat för portinfo. Detta ger information om en port från dess portfil.

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 .

Information om hashcat-porten från MacPorts Ports webbplats. Med undantag för statistik, hämtas denna information från portfilen.

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

MacPorts Meeting 2018 märken.
MacPorts-utvecklare vid mötet 2019 i Scout Center Bohinj , Slovenien.

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.

Se även

externa länkar