Arch User Repository

Arch User Repository (AUR) är ett gemenskapsdrivet arkiv för Arch-användare. Det innehåller paketbeskrivningar (PKGBUILDs) som gör att du kan kompilera ett paket från källan med makepkg och sedan installera det via pacman. AUR skapades för att organisera och dela med sig av nya paket från gemenskapen och för att hjälpa till att påskynda införandet av populära paket i gemenskapens arkiv. Det här dokumentet förklarar hur användare kan få tillgång till och använda AUR.

En stor del av de nya paket som kommer in i de officiella repositorierna börjar i AUR. I AUR kan användarna bidra med sina egna paketbyggen (PKGBUILDoch relaterade filer). AUR-gemenskapen har möjlighet att rösta på paket i AUR. Om ett paket blir tillräckligt populärt – förutsatt att det har en kompatibel licens och bra paketeringsteknik – kan det läggas in i gemenskapens arkiv (direkt tillgängligt med pacman eller abs).

Varning: AUR-paket är användarproducerat innehåll. Dessa PKGBUILDs är helt inofficiella och har inte granskats noggrant. All användning av de tillhandahållna filerna sker på egen risk.

Kom igång

Användare kan söka och hämta PKGBUILDs från AUR:s webbgränssnitt. Dessa PKGBUILDs kan byggas till installerbara paket med makepkg och sedan installeras med pacman.

  • Säkerställ att paketgruppen base-devel är fullt installerad (pacman -S --needed base-devel).
  • Bläddra över #FAQ för att få svar på de vanligaste frågorna.
  • Du kanske vill justera /etc/makepkg.conf för att optimera byggprocessen för ditt system innan du bygger paket från AUR. En betydande förbättring av paketbyggnadstiderna kan uppnås på system med processorer med flera kärnor genom att justera variabeln MAKEFLAGS, genom att använda flera kärnor för komprimering eller genom att använda en annan komprimeringsalgoritm. Användare kan också aktivera hårdvaruspecifika kompileroptimeringar via variabeln CFLAGS. Se makepkg#Tips and tricks för mer information.

Det är också möjligt att interagera med AUR via SSH: skriv ssh [email protected] help för att få en lista över tillgängliga kommandon.

Historia

I början fanns ftp://ftp.archlinux.org/incoming, och folk bidrog genom att helt enkelt ladda upp PKGBUILD, de nödvändiga kompletterande filerna och själva det byggda paketet till servern. Paketet och tillhörande filer förblev där tills en Package Maintainer såg programmet och antog det.

Då föddes Trusted User Repositories. Vissa personer i samhället fick tillåtelse att vara värd för sina egna repositories som alla kunde använda. AUR utökades på denna grund, med målet att göra det både mer flexibelt och mer användbart. Faktum är att AUR-underhållarna fortfarande kallas TUs (Trusted Users).

Mellan 2015-06-08 och 2015-08-08 övergick AUR från version 3.5.1 till 4.0.0, vilket innebar att man införde användandet av Git-repositories för att publicera PKGBUILDs. Befintliga paket släpptes om de inte manuellt migrerades till den nya infrastrukturen av deras underhållare.

Git-arkiv för AUR3-paket

AUR-arkivet på GitHub har ett arkiv för varje paket som fanns i AUR 3 vid tidpunkten för migreringen. alternativt finns aur3-mirror-arkivet som ger samma sak.

Installation och uppgradering av paket

Installation av paket från AUR är en relativt enkel process. I huvudsak:

  1. Förvärva byggfilerna, inklusive PKGBUILD och eventuellt andra nödvändiga filer, som systemd-enheter och patchar (ofta inte den egentliga koden).
  2. Verifiera att PKGBUILD och medföljande filer inte är skadliga eller opålitliga.
  3. Kör makepkg -si i katalogen där filerna är sparade. Detta kommer att hämta koden, lösa beroendena med pacman, kompilera den, paketera den och installera paketet.
Notera: AUR har inget stöd, så alla paket du installerar är ditt ansvar att uppdatera, inte pacmans. Om paket i de officiella förråden uppdateras måste du bygga om alla AUR-paket som är beroende av dessa bibliotek.

Förutsättningar

Säkerställ först att de nödvändiga verktygen är installerade genom att installera gruppen base-devel i sin helhet, som innehåller make och andra verktyg som behövs för att kompilera från källkod.

Tips: Använd flaggan --needed när du installerar base-devel-gruppen för att hoppa över paket som du redan har i stället för att installera om dem.
Notera: Paketen i AUR förutsätter att base-devel-gruppen är installerad, dvs. de listar inte gruppens medlemmar som byggberoenden explicit.

Välj sedan en lämplig byggkatalog. En byggkatalog är helt enkelt en katalog där paketet kommer att tillverkas eller ”byggas” och kan vara vilken katalog som helst. Exemplen i följande avsnitt kommer att använda ~/builds som byggkatalog.

Acquire build files

Lokalisera paketet i AUR. Detta görs med hjälp av sökfältet högst upp på AUR:s startsida. Om du klickar på programmets namn i söklistan visas en informationssida om paketet. Läs igenom beskrivningen för att bekräfta att det är det önskade paketet, notera när paketet senast uppdaterades och läs eventuella kommentarer.

Det finns flera metoder för att skaffa byggfilerna för ett paket:

  • Klona dess git-repositorium, märkt ”Git Clone URL” i ”Package Details” på dess AUR-sida. Detta är den föredragna metoden, vars fördel är att du enkelt kan få uppdateringar av paketet via git pull.

$ git clone https://aur.archlinux.org/package_name.git
  • Hämta en ögonblicksbild, antingen genom att klicka på länken ”Download snapshot” (hämta ögonblicksbild) under ”Package Actions” (åtgärder för paketet) till höger på dess AUR-sida, eller i en terminal:
$ curl -L -O https://aur.archlinux.org/cgit/aur.git/snapshot/package_name.tar.gz
Observera: ögonblicksbildsfilen är komprimerad och måste extraheras (helst i en katalog avsatt för AUR-byggen): tar -xvf package_name.tar.gz

Förvärva en offentlig PGP-nyckel om det behövs

Kontrollera om en signaturfil i form av .sig eller .asc är en del av PKGBUILD-källmatrisen, om så är fallet ska du förvärva en av de offentliga nycklar som finns i matrisen PKGBUILD validpgpkeys. Se makepkg#Signaturkontroll för mer information.

Bygg och installera paketet

Byt kataloger till den katalog som innehåller paketets PKGBUILD.

$ cd package_name
Varning: Kontrollera noggrant PKGBUILD, alla .install-filer och alla andra filer i paketets git-förråd för skadliga eller farliga kommandon. Om du är tveksam, bygg inte paketet och sök råd i forumet eller på sändlistan. Skadlig kod har tidigare hittats i paket.

Se innehållet i alla tillhandahållna filer. Om du till exempel vill använda sökaren less för att visa PKGBUILD gör du:

$ less PKGBUILD
Tips: Om du uppdaterar ett paket kanske du vill titta på ändringarna sedan den senaste överföringen.

  • För att visa ändringarna sedan den senaste git-överföringen kan du använda git show.
  • För att visa ändringarna sedan den senaste överföringen med hjälp av vimdiff, gör git difftool @~..@ vimdiff. Fördelen med vimdiff är att du ser hela innehållet i varje fil tillsammans med indikatorer på vad som har ändrats.

Makar paketet. Efter att manuellt ha bekräftat innehållet i filerna kör du makepkg som en vanlig användare:

$ makepkg -si
  • -s/--syncdeps löser och installerar automatiskt eventuella beroenden med pacman innan du bygger. Om paketet är beroende av andra AUR-paket måste du installera dem manuellt först.
  • -i/--install installerar paketet om det byggs framgångsrikt. Alternativt kan det byggda paketet installeras med pacman -U package_name.pkg.tar.zst.

Andra användbara flaggor är

  • -r/--rmdeps tar bort byggtidsberoenden efter byggningen, eftersom de inte längre behövs. Dessa beroenden kan dock behöva installeras på nytt nästa gång paketet uppdateras.
  • -c/--clean rensar upp tillfälliga byggfiler efter byggningen, eftersom de inte längre behövs. Dessa filer behövs vanligtvis endast vid felsökning av byggprocessen.

Obs: Exemplet ovan är endast en kort sammanfattning av byggprocessen. Det rekommenderas starkt att läsa artiklarna makepkg och ABS för mer information.

Uppgradering av paket

I katalogen som innehåller paketets PKGBUILD måste du först uppdatera filerna och ändringarna med hjälp av kommandot

$ git pull

och sedan köra

$ makepkg -si

för att uppdatera paketet.

Feedback

Kommentarer till paket

AUR:s webbgränssnitt har en kommentarsfunktion som gör det möjligt för användare att ge förslag och feedback på förbättringar av PKGBUILD-bidraget.

Tips: Undvik att klistra in patchar eller PKGBUILDs i kommentarsfältet: de blir snabbt föråldrade och slutar bara med att i onödan ta upp mycket utrymme. Mejla istället dessa filer till den som upprätthåller paketet, eller använd till och med en pastebin.

Python-Markdown tillhandahåller grundläggande Markdown-syntax för att formatera kommentarer.

Notera:

  • Denna implementering har några tillfälliga skillnader med de officiella syntaxreglerna.
  • Commit hashes till paketets Git-repositorium och referenser till Flyspray-biljetter konverteras automatiskt till länkar.
  • Långa kommentarer fälls ihop och kan expanderas vid behov.

Rösta på paket

En av de enklaste aktiviteterna för alla Arch-användare är att bläddra i AUR och rösta på sina favoritpaket med hjälp av online-gränssnittet. Alla paket kan antas av en TU för att ingå i gemenskapens arkiv, och röstantalet är ett av övervägandena i den processen; det ligger i allas intresse att rösta!

Registrera dig på AUR:s webbplats för att få ett ”Vote for this package”-alternativ när du bläddrar bland paketen. Efter registrering är det också möjligt att rösta från kommandoraden med aurvoteAUR, aurvote-gitAUR eller aur-auto-vote-gitAUR.

Alternativt, om du har ställt in ssh-autentisering, kan du rösta direkt från kommandoraden med hjälp av din ssh-nyckel. Detta innebär att du inte behöver spara eller skriva in ditt AUR-lösenord.

$ ssh [email protected] vote package_name

Flagga utdaterade paket

För det första bör du flagga paketet utdaterat och ange detaljer om varför paketet är föråldrat, helst med länkar till utgivningsmeddelandet eller den nya utgivningens tarball.

Du bör också försöka nå ut till den ansvarige direkt via e-post. Om du inte har fått något svar från den ansvarige efter två veckor kan du lämna in en orphan request. Se AUR submission guidelines#Requests för mer information.

Observera: VCS-paket anses inte vara inaktuella när pkgver ändras och ska inte flaggas i detta fall.

Debugging the package build process

  1. Säkerställ att din byggmiljö är uppdaterad genom att uppgradera innan du bygger något.
  2. Säkerställ att du har gruppen base-devel installerad.
  3. Använd alternativet -s med makepkg för att kontrollera och installera alla beroenden som behövs innan du startar byggprocessen.
  4. Att prova standardkonfigurationen för makepkg.
  5. Se Makepkg#Felsökning för vanliga problem.

Om du har problem med att bygga ett paket, läs först dess PKGBUILD och kommentarerna på dess AUR-sida.

Det är möjligt att ett PKGBUILD är trasigt för alla. Om du inte kan lista ut det på egen hand, rapportera det till den som ansvarar för underhållet (t.ex. genom att publicera de fel du får i kommentarerna på AUR-sidan). Du kan också söka hjälp i forumet AUR Issues, Discussion & PKGBUILD Requests.

Rörelsen kanske inte är trivial trots allt. Anpassade CFLAGS, LDFLAGS och MAKEFLAGS kan orsaka fel. För att undvika problem som orsakas av din speciella systemkonfiguration, bygg paket i en ren chroot. Om byggprocessen fortfarande misslyckas i en ren chroot är problemet förmodligen PKGBUILD.

Se Creating packages#Checking package sanity about using namcap. Om du vill få en PKGBUILD granskad, posta den på sändlistan aur-general för att få feedback från TUs och andra AUR-medlemmar, eller i forumet Creating & Modifying Packages. Du kan också söka hjälp i IRC-kanalen #archlinux-aur på Freenode.

Sändning av paket

Användare kan dela PKGBUILDs med hjälp av Arch User Repository. Se riktlinjerna för inlämning till AUR för mer information.

Översättning av webbgränssnittet

Se i18n.txt i AUR:s källkodsträd för information om hur man skapar och underhåller översättningar av AUR:s webbgränssnitt.

FAQ

Vilken typ av paket är tillåtna på AUR?

Paketen på AUR är endast ”build scripts”, dvs. recept för att bygga binärer för pacman. I de flesta fall är allting tillåtet, med förbehåll för riktlinjer för användbarhet och omfattning, så länge du följer licensvillkoren för innehållet. I andra fall, där det nämns att ”du inte får länka” till nedladdningar, dvs. innehåll som inte kan distribueras vidare, får du endast använda själva filnamnet som källa. Detta innebär och kräver att användarna redan har den begränsade källkoden i byggkatalogen innan de bygger paketet. Om du är osäker, fråga.

Hur kan jag rösta på paket i AUR?

Se #Rösta på paket.

Vad är en Trusted User / TU?

En betrodd användare, i korthet TU, är en person som valts ut för att övervaka AUR och community repository. Det är de som underhåller populära PKGBUILDs i community och överlag håller AUR igång.

Vad är skillnaden mellan Arch User Repository och community repository?

Arch User Repository är platsen där alla PKGBUILDs som användare skickar in lagras, och måste byggas manuellt med makepkg. När PKGBUILDs får tillräckligt stort intresse från samhället och stöd från en TU flyttas de till community repository (som underhålls av TUs), där de binära paketen kan installeras med pacman.

Foo i AUR är föråldrad; vad ska jag göra?

Se #Flaggning av paket som är inaktuella.

Under tiden kan du försöka uppdatera paketet själv genom att redigera PKGBUILD lokalt. Ibland kräver uppdateringar inga ändringar i bygg- eller paketprocessen, i så fall räcker det med att bara uppdatera arrayen pkgver eller source.

Foo i AUR kompileras inte när jag kör makepkg, vad ska jag göra?

Du saknar förmodligen något trivialt, se #Debugging the package build process.

ERROR: En eller flera PGP-signaturer kunde inte verifieras; vad ska jag göra?

Det är troligt att du inte har de nödvändiga offentliga nycklarna i din personliga nyckelring för att verifiera hämtade filer. Se Makepkg#Signaturkontroll för mer information.

Hur skapar jag en PKGBUILD?

Konsultera AUR:s riktlinjer för inlämning#Regler för inlämning, se sedan Skapa paket.

Jag har en PKGBUILD som jag skulle vilja skicka in; kan någon kontrollera den för att se om det finns några fel?

Det finns flera kanaler tillgängliga för att skicka in ditt paket för granskning; se #Debugging the package build process.

Hur får man in en PKGBUILD i community repository?

I vanliga fall krävs det minst 10 röster för att något ska flyttas till community. Men om en TU vill stödja ett paket kommer det ofta att finnas i repository.

Att uppnå det erforderliga minimiantalet röster är inte det enda kravet, det måste finnas en TU som är villig att underhålla paketet. TUs är inte skyldiga att flytta ett paket till community repository även om det har tusentals röster.

I vanliga fall när ett mycket populärt paket stannar i AUR beror det på att:

  • Arch Linux redan har en annan version av ett paket i repositories
  • Dess licens förbjuder vidarebefordran
  • Det hjälper till att hitta PKGBUILDs som användare har skickat in. AUR-hjälpmedel har per definition inget stöd.

Se även Regler för paket som kommer in i community Repo.

Hur kan jag påskynda upprepade byggprocesser?

Se Makepkg#Förbättra kompileringstider.

Vad är skillnaden mellan foo- och foo-git-paket?

Många AUR-paket finns i ”stabila” utgåvor och ”instabila” utvecklingsversioner. Utvecklingspaket har vanligtvis ett suffix som anger deras versionskontrollsystem och är inte avsedda för regelbunden användning, men kan erbjuda nya funktioner eller felrättningar. Eftersom dessa paket endast hämtar den senaste tillgängliga källkoden när du utför makepkg, återspeglar deras pkgver() i AUR inte ändringar uppströms. På samma sätt kan dessa paket inte utföra en äkthetskontrollsumma på någon VCS-källa.

Se även Systemunderhåll#Använd beprövade programvarupaket.

Varför har foo försvunnit från AUR?

Det är möjligt att paketet har antagits av ett TU och nu finns i gemenskapens arkiv.

Paket kan tas bort om de inte uppfyllde reglerna för inlämning. Se arkiven aur-requests för orsaken till radering.

Notera: Git-arkivet för ett raderat paket är vanligtvis fortfarande tillgängligt. Se AUR submission guidelines#Requests för mer information.

Om paketet tidigare fanns i AUR3 har det kanske inte migrerats till AUR4. Se #Git repositories för AUR3-paket där dessa finns bevarade.

Hur tar jag reda på om något av mina installerade paket har försvunnit från AUR?

Det enklaste sättet är att kontrollera HTTP-statusen för paketets AUR-sida:

$ comm -23 <(pacman -Qqm | sort) <(curl https://aur.archlinux.org/packages.gz | gzip -cd | sort)

Hur kan jag få en lista över alla AUR-paket?

  • Använd aurpkglist från python3-aurAUR

Se även

  • AUR Web Interface
  • AUR Mailing List
  • DeveloperWiki:AUR Cleanup Day

Lämna ett svar

Din e-postadress kommer inte publiceras.