Ett programvarupaket är en bunt program, som hör nära ihop med varandra och är färdiga att installeras och köras. När man laddar ner ett källkodsarkiv, så måste man konfigurera, kompilera och installera för hand. I ett programvarupaket är detta redan gjort. Det återstår endast att installera paketet. En annan behändig sida av att installera färdiga programpaket är, att de är mycket lätta att ta bort eller uppgradera, om man så skulle önska. Slackware innehåller program för alla pakethanteringsbehov. Man kan mycket lätt installera, ta bort, uppgradera (förnya), skapa och undersöka programpaket.
Innan man lär sig använda tillbehören, bör man bekanta sig med programpaketens format i Slackware. Ett slackwarepaket är helt enkelt en arkivfil, som skapats med arkiveringsprogrammet tar och komprimerats med gzip. Ett sådant paket är uppbyggt på så vis, att det skall kunna packas upp i rotfilsystemet.
Här är ett påhittat, tänkt program och ett exempel på paketering:
./ usr/ usr/bin/ usr/bin/makehejaz usr/doc/ usr/doc/makehejaz-1.0/ usr/doc/makehejaz-1.0/COPYING usr/doc/makehejaz-1.0/README usr/man/ usr/man/man1 usr/man/man1/makehejaz.1.gz install/ install/ install/doinst.sh
Pakethanteringssystemet kommer att packa upp denna fil i rotkatalogen för att installera det. Det kommer i paketdatabasen att skapas en post med detta pakets innehåll, så att det senare kan uppgraderas eller avlägsnas.
Man skall lägga märke till underkatalogen install/. Detta är en särskild katalog, som kan innehålla ett skript (en kommandofil) vid namn doinst.sh, vilket skall utföras efter installationen. Om pakethanteringssystemet upptäcker denna fil, så kommer det att exekvera skriptet, när paketet är installerat.
Även andra skript kan inbäddas i paketet, men de diskuteras mer ingående i avsnittet om makepkg på s. .
Det finns fyra viktiga tillbehör för pakethantering. Dessa installerar, avlägsnar och förnyar programpaket.
pkgtool(8) är ett menystyrt program, som medger installation och avinstallation av programpaket. Dess meny ser ut som i figuren.
Man kan även granska en förteckning över innehållet i installerade paket, vilken då kan se ut som i nästa figur.
: Granskningsläge för pkgtool.
Om man vill ta bort paket, så väljer man alternativet remove och så får man en krysslista över samtliga installerade paket. Man kryssar med mellanslagstangenten för dem, man vill ta bort, och så tar pkgtool bort dem.
En del användare föredrar detta tillbehör framför kommandoraden. Emellertid skall man lägga märke till, att kommandoradsverktygen erbjuder många fler valmöjligheter. Möjligheten att uppgradera paket finns därtill endast, när man använder kommandoradsverktygen.
installpkg(8) hanterar installation av nya paket i systemet. Följande syntax gäller:
# [ROOT=<path>] installpkg [alternativ] <paketnamn>
Kommandot installpkg har tre möjliga växlar; endast en av dem kan användas åt gången.
Flagga | Verkan |
-m | Kör makepkg på innehållet i aktuell katalog. |
-warn | Visar vad som skulle hända vid installation men installerar |
ingenting. Försiktighetshetsmått på system i drift. | |
-r | Installerar rekursivt alla paket i aktuell katalog och neråt. |
Jokertecken kan användas till sökmask vid rekursiv installation. |
Om man har satt miljövariabeln för ROOT före körningen av installpkg, kommer denna sökväg till rotkatalogen att användas vid installation. Detta kan vara katalogen /mnt eller något annat än /.
Databasen över installerade paket förvaras i /var/log/packages. En »post« i denna databas är faktiskt bara en ren textfil, en för vart paket. Om paketet ifråga innehåller ett skript, som skall utföras efter installation, så skrives detta skript till /var/log/scripts/<paketnamn>.
Man kan ange flera programpaket eller använda jokertecken för paketnamnet. Tänk på, att installpkg inte talar om, ifall det skriver över ett redan installerat paket. Det installerar helt enkelt det nya paketet ovanpå det gamla. Om man vill försäkra sig om, att gamla filer ifrån en tidigare version avlägsnas på säkert sätt, så skall man använda kommandot upgradepkg.
removepkg(8) hanterar avlägsnandet av installerade programpaket. Följande syntax gäller:
# [ROOT=<path>] removepkg [option] <package name>
removepkg har fyra möjliga växlar. Endast en åt gången kan användas.
Flagga | Verkan |
-copy | Paketet kopieras till katalogen för bevarade paket. Detta skapar |
ett träd av det ursprungliga paketet utan att ta bort det. | |
-keep | Sparar tillfälliga filer, som skapats under borttagandet. |
Endast användbart för avlusningsändamål. | |
-preserve | Paketet avlägsnas men kopieras ändå till katalogen |
för bevarade paket. | |
-warn | Visar vad som skulle hända, om man avlägsnade paketet. |
Om man sätter miljövariabeln ROOT innan man kör removepkg, så kommer denna sökväg att användas som rotkatalog. Detta är till nytta, när man riggar upp nya hårddiskar till rotkatalog. De monteras vanligen under /mnt eller något annat än /.
removepkg granskar andra installerade paket och avlägsnar endast filer, som är unika för angivet paket. Det genomsöker även efterinstallationsskript efter angivet paket och tar bort symboliska länkar, det skapat.
Under avinstallationsprocessen visas en tillståndsrapport. Efter borttagandet flyttas paketets post i databasen till /var/log/removed_packages och efterinstallationsskriptet flyttas till /var/log/removed_scripts.
upgradepkg(8) förnyar ett redan installerat Slackwarepaket med en nyare version. Följande syntax gäller:
# [ROOT=<path>] upgradepkg <package name>...
eller
# [ROOT=<path>] upgradepkg <gammalt paket>%<nytt paket>
upgradepkg installerar först det nya paketet och tar sedan bort det gamla, för att gamla filer inte längre skall finnas kvar i systemet. Om det förnyade paketet har ett annat namn, så använder man ovan angivna syntax med procenttecken mellan namnen för det gamla och det nya paketet.
Om man har satt miljövariabeln ROOT, innan man kör upgradepkg, så kommer denna sökväg att gälla för rotkatalogen. Detta är till nytta, när man riggar upp nya hårddiskar för rotkatalogen. De monteras vanligen under /mnt eller något annat än /.
Red Hat Package Manager är ett omtyckt paketeringssystem numera. Många programdistributörer erbjuder sina produkter i RPM-format. Eftersom detta inte är vårt eget inhemska format, så anbefaller vi inte folk att förlita sig på sådana paket. Emellertid förekommer program, som endast är tillgängliga såsom RPM-filer (även källkod).
Vi medlevererar därför ett program, som omvandlar RPM-paket till vårt eget .tgz-format. Detta gör det möjligt att utvinna innehållet ur ett paket (kanske med explodepkg) till en tillfällig katalog och där undersöka detta innehåll.
Programmet rpm2tgz skapar ett slackwarepaket med ändelsen .tgz, medan rpm2targz skapar ett arkiv med ändelsen .tar.gz.
Att skapa programpaket för Slackware kan vara både lätt och svårt. Det finns inget bestämt tillvägagångssätt för att skapa ett paket. Det fordras endast, att paketet skall vara en gzippad tarfil, och om den innehåller ett efterinstallationsskript, så skall detta heta /install/doinst.sh.
Om man är intresserad av att skapa paket till sitt eget system eller till ett nätverk, man har hand om, så bör man ta en titt på de olika build-skripten i Slackwares källkodskatalogträd. Det finns åtskilliga sätt att skapa paket.
explodepkg(8) gör detsamma, som installpkg gör för att packa upp paketet, men installerar ingenting och registrerar ingenting i paketdatabasen. Det bara packar upp arkivet i aktuell katalog.
Om man tittar på Slackwares källkodskatalogträd, så får man se, hur vi använder detta kommando till »ram«-paket. Dessa paket innehåller en stomme av vad det slutliga paketet skall bli. De innehåller alla nödvändiga filnamn (med nollängd), befogenheter och ägarskap. Ett build-skript cattar paketinnehållet från källkodskatalogen till paketbyggnadskatalogen.
makepkg(8) packar ihop innehållet i aktuell katalog till ett giltigt slackwarepaket. Det genomsöker katalogträdet efter symboliska länkar och skapar ett block i installationsskriptet för att dessa länkar skall kunna återskapas, när paketet installeras. Det varnar även för nollängdsfiler i paketets katalogträd.
Detta kommando kör man normalt efter det, att man har skapat paketets katalogträd.
Slackwares setup-program hanterar installation av programvarupaket i systemet. Det finns filer, som talar om för setup, vilka paket som måste installeras, vilka som är valfria och vilka som skall väljas såsom förinställning av setup.
En taggfil (märkfil) finns i första programvaruseriekatalogen och kallas tagfile. Det innehåller en förteckning över filerna i en viss diskettserie (programvaruserie) och deras ställning (status). Deras ställning kan vara någon av följande:
Flagga | Verkan |
ADD | Paketet är erforderligt, för att systemet skall fungera riktigt. |
SKP | Paketet överhoppas automatiskt (skip). |
REC | Paketet är icke erforderligt men anbefalles (recommended). |
OPT | Paketet är valfritt (optional). |
Formatet är enkelt: <paketnamn>: <ställning>
Ett paket per rad. Den ursprungliga taggfilen till var programvaruserie förvaras såsom tagfile.org. Om man ställer till det med sin egen, så kan man återställa den till ursprungligt utförande.
Många administratörer föredrar att skriva sina egna taggfiler och börja med att välja »full« installation. Programmet setup läser då taggfilerna och utför installationen i överensstämmelse med deras innehåll. Om man använder REC eller OPT, visas en dialogruta med frågan om huruvida användaren vill ha ett visst paket eller ej. Därför anbefalles det, att man håller sig till ADD och SKP, när man skriver taggfiler för automatiserad installation.
Se bara till, så att taggfilerna sparas på samma ställe som originalen. Eller också kan man ange en egen sökväg till taggfilerna, om man har skräddarsydda taggfiler.
Man bör nu vara förtrogen med programvarupaketets grundtanke och hur sådana paket användes i Slackware. Man bör även vara hemtam i de olika pakethanteringsverktygen och kunna använda dem. De viktigaste delarna av detta kapitel behandlar installation, avlägsnande och förnyande av programpaket. Detta är de vanligaste användningarna av pakethanteringstillbehören. Emellertid bör man även ha fått någon insikt i, hur man skapar och undersöker paket.
Om goda kagor och torra kakor (»cookies«).
Om goda kagor och torra kakor (»cookies«).