NetBSD.SE Logotype
Meny
Välkommen till NetBSD.se

Sök bland pkgsrc/wip:Sök efter manual:
 


Introduktion till pkgsrc i NetBSD
2004-04-18 13:05:33 inskickat av Emil Hessman

GuiderPaketsystemet i NetBSD, pkgsrc, är en grundstomme konstruerad för att förenkla installationen av mjukvara på NetBSD samt flertalet andra UNIX-baserade operativsystem.

1 - Introduktion
2 - Binärpaket (binary/precompiled packages)
 2.1 - Installera/avinstallera binärpaket
3 - Paket, källkod (source)
 3.1 - Hämta hem paketsamlingen
  3.1.1 - Uppdatera paketsamlingen
 3.2 - Installation/avinstallation av paket från källkod
  3.2.1 - Uppdatera ett installerat paket
 3.3 - Säkerhetskontroll av paket
 3.4 - Sök efter paket
  3.4.1 - make search name/key
  3.4.2 - PKGSE-skriptet
4 - mk.conf
5 - Källor

1 - Introduktion

Till skillnad från andra operativsystem (till exempel Windows och flertalet GNU/Linux-distributioner) så inkluderar inte NetBSD fullt lika mycket mjukvara i grundinstallationen.
Det beror på att merparten av programmen betraktas som ett tillägg och inte en del av operativsystemet, vilket betyder att man får lägga till dessa i efterhand - det är här pkgsrc kommer in i bilden.


2 - Binärpaket (binary/precompiled packages)

Ett binärpaket är förkompilerad källkod, av en mjukvara, avsett för en särskild version och plattform av NetBSD.

Fördelarna med ett binärpaket är att det går avsevärt snabbare att installera än paket från källkod, eftersom kompileringen redan är utförd på en annan maskin.
Däremot är binärpaket inte lika flexibla som vid installation från källkod då du inte kan anpassa mjukvaran efter ditt system, vilket annars sker under kompileringen. En annan nackdel med binärpaket är att de inte alltid ligger i fas med paketen från källkod när det gäller versionen, utan ligger snarare ett par steg efter.
Sammanfattningsvis kan man säga att om man vill optimera mjukvaran för sitt system samt erhålla den senaste versionen bör man använda sig av paket i källkodsform istället för binärpaket, vilket beskrivs under avsnittet "3 - Paket, källkod (source)".

Binärfilernas namn är uppbyggda på så sätt att namnet på mjukvaran efterföljs av dess versionsnummer samt av ändelsen .tgz.
bash-2.05.2.tgz är till exempel ett binärpaket av skalet bash version 2.05.2.

Alla binärpaket finns tillgängliga på ftp.netbsd.org (och dess spegelarkiv runt om i världen) i /pub/NetBSD/packages/{version}/{plattform}/All.
Där {version} och {plattform} bytes ut mot respektive version och plattform av NetBSD du använder - till exempel /pub/NetBSD/packages/1.6.2/i386/All för version 1.6.2 och i386-plattformen.
Detta är viktigt eftersom ett binärpaket avsett för en powerpc inte fungerar på en i386.

Om det råder några tvivel om vilken version och plattform av NetBSD du kör, kan du ta reda på det med följande kommando:

$ uname -prs

Notera att jag anger version 1.6.2 och plattform i386 i dessa exempel, bytt ut dessa vid behov.

2.1 - Installera/avinstallera binärpaket

Observera: För att installera binärpaket behöver du inte hämta hem paketsamlingen som beskrivs under avsnittet "3.1 - Hämta hem paketsamlingen".

För att installera ett binärpaket använder du dig av kommandot pkg_add(1), till exempel:

$ pkg_add -v /sökväg/till/paketet.tgz
$ pkg_add -v ftp://ftp.netbsd.org/pub/NetBSD/packages/1.6.2/i386/All/bash-2.05.2.tgz

Växeln -v har jag angett för att få en så rik utmatning som möjligt, vilken kan komma till nytta vid en eventuell felsökning.

Om binärpaketet du vill installera är beroende av andra program eller programbibliotek så kommer pkg_add att försöka installera dessa automatiskt.
Har du då inte dessa extra .tgz-filer tillgängliga kommer installationen att misslyckas. I och med detta är det lättast att låta pkg_add hämta dessa filer via en FTP-server (eller möjligtvis en CD-skiva).
Jag rekommenderar dock användning av en FTP-server eftersom du knappast har alla binärpaket tillgängliga på CD-skivor, dessutom kan du lätt erhålla den senaste versionen av programmen ifråga.

För att slippa ange sökvägen till FTP-servern om och om igen för varje binärpaket som skall installeras kan du då ange en variabel, likt:

För csh:
$ setenv PKG_PATH ftp://ftp.netbsd.org/pub/NetBSD/packages/1.6.2/i386/All

För sh/ksh:
$ export PKG_PATH=ftp://ftp.netbsd.org/pub/NetBSD/packages/1.6.2/i386/All

(csh/sh/ksh är så kallade skal (shells), kommandot $ echo $SHELL berättar om vilket du använder).

Istället för att ange sökvägen likt:

$ pkg_add -v ftp://ftp.netbsd.org/pub/NetBSD/packages/1.6.2/i386/All/bash-2.05.2.tgz

.. räcker det alltså nu med:

$ pkg_add -v bash-2.05.2.tgz

Vill du däremot erhålla den senaste versionen av till exempel bash anger du bara paketnamnet så installeras den senaste versionen automatiskt:

$ pkg_add -v bash

För att sedan ta bort ett binärpaket använder du dig av kommandot pkg_delete(1).
Allt du behöver göra är att ge pkg_delete det fullkomliga namnet på paketet, inklusive versionsnummret:

$ pkg_delete bash-2.05.2

Kommandot pkg_info(1) hjälper dig att ta reda på vilken version du har installerad, genom att använda växeln -e:

$ pkg_info -e bash

Vidare kan du lista alla installerade paket med -a växeln:

$ pkg_info -a

Ta dig tiden att gå igenom manualsidorna till ovanstående pkg-kommandon för mer relevant information eftersom denna guide långt ifrån är komplett.
När det gäller att finna det paket du söker, hänvisar jag till pkgse-skriptet vilket beskrivs längre ner under avsnittet "3.4 - Sök efter paket".


3 - Paket, källkod (source)

Dessa paket har instruktioner för hur källkoden av en mjukvara skall kompileras för en särskild version och plattform av NetBSD.

För att kunna kompilera ett paket från källkod så måste comp- och text-setet vara installerade, detsamma gäller xbase- och xcomp-setet om du vill kunna kompilera ett X11-baserat paket.
Dessa set inkluderade du troligtvis i grundinstallationen av NetBSD dock.

3.1 - Hämta hem paketsamlingen

Det finns tre sätt att erhålla paketsamlingen på; antingen som en .tar-fil, via CVS eller via SUP.
Jag kommer enbart beskriva hur man gör detta via CVS - Concurrent Versions System.

Sätt dessa variabler:

För csh:
$ setenv CVS_RSH /usr/bin/ssh
$ setenv CVSROOT anoncvs@anoncvs.se.netbsd.org:/cvsroot

För sh/ksh:
$ export CVS_RSH=/usr/bin/ssh
$ export CVSROOT=anoncvs@anoncvs.se.netbsd.org:/cvsroot

(csh/sh/ksh är så kallade skal (shells), kommandot $ echo $SHELL berättar om vilket du använder).

Hämta sedan hem paketsamlingen genom att göra följande:

$ cd /usr
$ cvs checkout -PA pkgsrc

Paketsamlingen har efter detta blivit nedladdad och placerad i /usr/pkgsrc, redo att tas i bruk.

3.1.1 - Uppdatera paketsamlingen

För att få en uppdaterad paketsamling, se till att samma variabler är satta som tidigare och kör därefter CVS enligt:

För csh:
$ setenv CVS_RSH /usr/bin/ssh
$ setenv CVSROOT anoncvs@anoncvs.se.netbsd.org:/cvsroot

För sh/ksh:
$ export CVS_RSH=/usr/bin/ssh
$ export CVSROOT=anoncvs@anoncvs.se.netbsd.org:/cvsroot

$ cd /usr
$ cvs update -PAd pkgsrc

Paketsamlingen skall nu vara uppdaterad med de senast tillagda paketen.

3.2 - Installation/avinstallation av paket från källkod

Nu när paketsamlingen finns tillgänglig i /usr/pkgsrc går vi vidare till hur man installerar paketen.
De två kommandon du använder dig av är make och make install.

För att till exempel installera IRC-klienten irssi utför du:

$ cd /usr/pkgsrc/chat/irssi
$ make
$ make install

Det som sker vid användning av ovanstående kommandon kan sammanfattas såhär;
Källkoden och de senaste programfixarna laddas ned från en angiven plats, checksum verifieras, kompileras till binärer vilka därefter installeras på systemet.

Eftersom make och make install sköter alla steg i installationsprocessen kommer jag inte att gå vidare in på det.

Efter installationen av ett paket kan det vara en fördel att ta bort arbetskatalogen och dess filer som skapades för att lösgöra utrymme på hårddisken:

$ make clean
$ make clean-depends

(Dessa två kommandon kan kombineras till ett: $ make clean CLEANDEPENDS=1)
För att tillämpa detta på alla paket i paketsamlingen kan man även köra dessa kommandon i /usr/pkgsrc.
Det första kommandot rensar för det aktuella paketet ifråga (tar bort work-katalogen och dess innehåll), och det andra rensar för paket som huvudpaketet är beroende av (om några sådana installerades).

Vill du även ta bort de filer i /usr/pkgsrc/distfiles som hämtades under installationsprocessen använder du:

$ make distclean .. eller för alla berörda filer i installationen: $ make distclean CLEANDEPENDS=1

Nu vidare till avinstallationen av ett paket:

$ cd /usr/pkgsrc/chat/irssi
$ make deinstall

Du kan även använda dig av kommandot pkg_delete(1) för att ta bort källkodspaket.

Har du inte genomfört rensningen av ./work-katalogen som beskrevs ovan är det en god idé att utföra detta efter en avinstallation då de enbart tar upp plats.
Däremot bör du överväga om du skall ta bort filerna i /usr/pkgsrc/distfiles med make distclean eller ej, eftersom dessa filer kan komma till användning vid en återinstallation - och sparar då bandbredd, bandbredd är oftast dyrare än utrymme trots allt.

När det gäller alla ovanstående kommandon, var noga med att du står i rätt katalog för det paket du avser att installera/avinstallera!

3.2.1 - Uppdatera ett installerat paket

För att ta reda på om det finns en ny version av dina installerade paket tillgänglig så fyller pkglint denna funktion.

pkglint återfinns i /usr/pkgsrc/pkgtools/pkglint, installera det genom att:

$ cd /usr/pkgsrc/pkgtools/pkglint
$ make && make install

.. och kör sedan kommandot lintpkgsrc med växeln -i:

$ lintpkgsrc -i

Du skall nu få en utmatning om vilka paket som finns tillgängliga i en nyare version.

Vill du uppdatera ett paket är detta mycket enkelt tack vare make update:

$ cd /usr/pkgsrc/chat/irssi
$ make update

I detta exempel uppdaterar make update irssi genom att ersätta den nuvarande versionen efter kompileringen, och du har fått en ny version installerad.

3.3 - Säkerhetskontroll av paket

Du bör vara uppmärksam på att de paket du installerar kan innehålla säkerhetshål vilket gör dem till attraktiva måltavlor för attacker.
Det du kan göra för att öka säkerheten på denna front är att installera säkerhetspaketet audit-packages.

Detta paket innehåller två skript, download-vulnerability-list och audit-packages.

download-vulnerability-list's uppgift är att ladda ned filen vulnerabilities vilken innehåller en lista över säkerhetshål som har upptäckts i paket.
audit-packages uppgift är att med hjälp av denna fil se över systemet och se om något av dessa paket är installerade, om det finner ett sådant paket installerat kommer det att ge en notis om detta med tillhörande information.
audit-packages letar inte enbart efter installerade paket utan gör en kontroll även när du installerar paket, så om du försöker installera ett paket med ett känt säkerhetshål stannar det upp och meddelar detta.

Finner audit-packages ett sådant paket bör du avinstallera detta/avbryta installationen, eller eventuellt uppgradera till en senare version där säkerhetshålet inte existerar längre.

För att installera audit-packages:

$ cd /usr/pkgsrc/security/audit-packages
$ make && make install

Troligtvis vill du ladda ned filen vulnerabilities dagligen för att försäkra dig om att vara uppdaterad, detta kan du göra manuellt genom att köra download-vulnerability-list.
Däremot är det mycket smidigare om detta sker automatiskt, och detta kan du åstadkomma genom att crontabba kommandot:

$ crontab -e

Lägg till följande rad i crontab:

10 0 * * * ${PREFIX}/sbin/download-vulnerability-list >/dev/null 2>&1

Spara och avsluta med: :wq

crontab kommer nu att se till så att download-vulnerability-list körs varje dag 00:10, se manualen för crontab(5) om en annan tid önskas.
Troligtvis vill du även köra audit-packages dagligen för att se om ditt system har installerade paket med säkerhetshål:

Redigera då filen /etc/security.local så att den innehåller:

if [ -x ${PREFIX}/sbin/audit-packages ]; then
        ${PREFIX}/sbin/audit-packages
fi


Kom ihåg att avinstallera berörda paket dock - för det sköter inte dessa skript.

3.4 - Sök efter paket

Det finns flertalet sätt att söka efter ett paket, och har du tillgång till internet samt en grafisk webbläsare rekommenderar jag NetBSD.se's pkgsrc via webben: http://pkgsrc.netbsd.se/

3.4.1 - make search name/key

För att annars söka via konsollen finns det ett antal alternativ att använda sig av.
Bland annat med make search name/key i pkgsrc-katalogen:

$ cd /usr/pkgsrc
$ make search name={paketnamn}

Där {paketnamn} ersätts av det paket du söker.

.. eller om du inte känner till paketets exakta namn kan du använda dig av ett sökord:

$ make search key={sökord}

Där du ersätter {sökord} med ett relevant ord vilket beskriver paketet du söker.

3.4.2 - PKGSE-skriptet

Ytterligare ett alternativ för konsollen är perl-skriptet PKGSE, vilket återfinns i pkgsrc under pkgtools/pkgse.

Fördelarna med detta skript är att det använder sig av http://pkgsrc.netbsd.se/ för att hämta data, vilket medför att du inte behöver ha paketsamlingen på ditt system för att söka efter paket samt att du slipper vänta på att PKGDB skall byggas vid varje sökning med till exempel "make search key=irc".


PKGSE-skriptet installeras enklast via pkgsrc:

$ cd /usr/pkgsrc/pkgtools/pkgse
$ make
$ make install

Du använder pkgse via konsollen, med detta kommando:

$ pkgse {paket}

Där du helt enkelt anger vilket paket du letar efter.
Mer om detta skript och dess upphovsperson kan du läsa om här.


4 - mk.conf

Du kan konfigurera paketsystemet för dina behov om så behövs, och standardvärdena som kan ändras återfinns i filen /usr/pkgsrc/mk/bsd.pkg.defaults.mk.
För att använda dig av andra variabler/värden skapar du filen mk.conf under /etc-katalogen, det är till denna fil du för över raderna och justerar variablerna så att de stämmer överens med det du vill uppnå.

Jag kommer dock inte att gå in mer på detta område eftersom standardvärdena duger gott och väl för de flesta.
Vill du däremot genomföra diverse ändringar så läs vidare i filen /usr/pkgsrc/mk/bsd.pkg.defaults.mk samt manualsidan för mk.conf(5).


5 - Källor

Länkar:

pkgsrc's webbsida
pkgsrc dokumentationen

Manualsidor:

crontab(5)
cvs(1)
make(1)
mk.conf(5)
packages(7)
pkg_add(1)
pkg_delete(1)
pkg_info(1)


skrivut.gif Utskriftsformat mail.gif Skicka artikeln till någon


Kommentarer tillhörande (Introduktion till pkgsrc i NetBSD)
Anonym fegis 193.11.xxx.xxx 2004-04-18 21:42:23 Svara
Bra jobbat.
Erik Lundmark 213.79.xxx.xxx 2004-06-11 13:27:07 Svara
Riktigt bra guide, man tackar och bockar.
Spikbebis 130.237.xxx.xxx 2005-10-12 14:38:22 Svara
Trevlig! till o med efter bara 30 min i netbsd-världen förstog jag och lyckades installera saker o ting... mmm varm mysig känsla sprider sig... auum


Namn (tomt = anonym):
Din email:






© 2003-2008 NetBSD.se
Materialet som publicerats på denna sida tillhör respektive författare. Materialet får kopieras med förutsättning av att källanvisning medförs som i detta fall är www.netbsd.se. Eventuella kommentarer tillhör skrivande individ. All information erbjuds utan garanti på funktion och duglighet och NetBSD.se tar inget ansvar för händelser som åsakats på grund av något på denna sida. NetBSD är ett registrerat varumärke som tillhör The NetBSD Foundation. Alla varumärken och copyright på denna sida ägs av deras respektive ägare. Vår maskot går under BSD-licensen och är fri att användas.