Järgnevad peatükid kirjeldavad põhilist, mida on vaja teada portsude kollektsioonist programmide paigaldamiseks või süsteemist eemaldamiseks.
Enne kui saad portse installida, pead hankima portsude kollektsiooni, mis on põhimõtteliselt komplekt Makefile'e, paiku ning kirjeldavaid faile, mis paigaldatakse kataloogi /usr/ports.
Kui sa oma FreeBSD süsteemi installisid, küsis sysinstall sinult, kas soovid portsude kollektsiooni paigaldada. Kui vastasid eitavalt, saad alljärgnevate juhiste järgi selle hankida:
Sysinstall-meetod
Selle meetodiga kaasneb sysinstall-i uuesti kasutamine, niisiis paigaldatakse portsude kollektsioon sel viisil käsitsi.
root-kasutajana, käivita /stand/sysinstall, nagu siinkohal näidatud:
# /stand/sysinstall
Keri alla ning vali Configure, vajuta Enterile.
Keri alla ning vali Distributions, vajuta Enterile.
Keri alla valikuni ports, vajuta tühikut.
Keri üles valikuni Exit, vajuta Enterile.
Vali sobiv paigaldusmeedium, kas siis CDROM, FTP vms.
Keri üles valikuni Exit ning vajuta Enterile.
sysinstall-ist väljumiseks vajuta X.
Alternatiivse meetodina saad portsude kollektsiooni hankida ja edaspidi kaasajastada CVSup-i abil. Vaata portsude CVSup-faili /usr/share/examples/cvsup/ports-supfile. Rohkem infot CVSup-i ja selle faili kasutamise kohta leiad peatükist CVSup-i kasutamine (Section A.5).
CVSup-meetod
See on kiire meetod portsude kollektsiooni hankimiseks CVSup-i abil. Kui tahad, et su portsude puu püsiks ajakohasena, või soovid CVSup-i kohta rohkem lugeda, vaata eelpool mainitud peatükkide suunas.
Paigalda net/cvsup-ports. Rohkem infot leiad peatükist CVSup-i paigaldamine (Section A.5.2).
root-kasutajana kopeeri fail /usr/share/examples/cvsup/ports-supfile uude asukohta, näiteks kataloogi /root või oma kodukataloogi.
Redigeeri faili ports-supfile.
Muuda CHANGE_THIS.FreeBSD.org sulle lähedalasuvaks CVSup-i serveriks. Täieliku peegelsaitide nimekirja leiad peatükist CVSup-i peeglid (Section A.5.7).
Käivita cvsup:
# cvsup -g -L 2 /root/ports-supfile
Selle käsu hilisem kasutamine võimaldab alla laadida kõik muudatused sinu portsude kollektsiooni suhtes ning need ka rakendada, v.a. portsude uuesti ehitamine sinu konkreetses süsteemis.
Portsude kollektsioonist rääkides peame kõigepealt defineerima mõiste ``skelett''. Lühidalt on portsu skelett minimaalne failide komplekt, mida on vaja, et programm FreeBSD peal puhtalt kompileeruks ja installeeruks. Iga portsu skelett sisaldab:
Makefile'i. Makefile sisaldab koodi, mis määrab, kuidas programmi peab kompileerima ja kuhu selle peab installeerima.
distinfo-t. See sisaldab informatsiooni failide kohta, mida on vaja antud portsu ehitamiseks alla laadida, ja kontrollsummasid, mille abil saab kindlustada, et need failid ei oleks allalaadimise käigus kahjustunud.
files-kataloogi. See kataloog sisaldab paikasid, mis on vajalikud antud programmi kompileerimiseks ja paigaldamiseks sinu FreeBSD süsteemi. Paigad on põhimõtteliselt väiksed failid, kus on kirjas, milliseid muudatusi tuleb konkreetseisse failidesse teha. Need failid on tavalise tekstifaili formaadis ja sisuliselt ütlevad: ``Eemalda rida 10'' või: ``Asenda rida 26 järgnevaga ...''. Paikasid nimetatakse mõnikord ka diffideks, kuna neid genereerib diff(1)-nimeline programm.
Selles kataloogis võib olla ka teisi portsu ehitamisel vajaminevaid faile.
pkg-descr-fail. See on põhjalikum, tihtipeale mitmerealine programmi kirjeldus.
pkg-plist-fail. See on nimekiri kõikidest failidest, mille antud ports paigaldab. Antud failist saab portsude süsteem infot ka selle kohta, millised failid tuleb portsu eemaldamise puhul kustutada.
Nüüd on sul juba piisavalt palju taustinformatsiooni portsude süsteemi olemusest ja sa oled valmis paigaldama oma esimest portsu. Selleks on 2 erinevat meetodit, allpool on mõlemad lahti seletatud.
Enne kui saame hakata rääkima paigaldamisest, peame valima välja portsu, mida installeerida. Selleks on mitmeid mooduseid; lihtsaim neist on kasutada portsude nimekirja FreeBSD veebilehel. Sa võid sealoleva portsude nimekirja kas lihtsalt läbi sirvida või kasutada vajaliku leidmiseks otsimisfunktsiooni. Iga ports sisaldab muuhulgas ka kirjeldust, et sa saaksid lugeda veidi ta olemuse kohta, enne kui otsustad teda paigaldada.
Teiseks võimaluseks on kasutada käsku whereis. Käsu whereis kasutamiseks sisesta ``whereis fail '', kus fail on programm, mida soovid paigaldada, ja kui see on süsteemis olemas, teatatakse sulle selle asukoht. Seda illustreerib järgnev näide:
# whereis lsof lsof: /usr/ports/sysutils/lsof
Siit saime teada, et lsof (süsteemiutiil) paikneb kataloogis /us/ports/sysutils/lsof.
Veel üheks portsu otsimise võimaluseks on portsude kollektsiooni sisseehitatud otsingufunktsiooni kasutamine. Selle võimaluse kasutamiseks pead sa olema kataloogis /usr/ports . selles kataloogis kasuta käsku make search name=programmi-nimi, asendades väärtuse programmi-nimi otsitava programmi nimega. Näiteks portsu lsof otsimine näeks välja nii:
# cd /usr/ports # make search key=lsof Port: lsof-4.56.4 Path: /usr/ports/sysutils/lsof Info: Lists information about open files (similar to fstat(1)) Maint: obrien@FreeBSD.org Index: sysutils B-deps: R-deps:
Väljundis huvitab sind arvatavasti kõige rohkem rida ``Path:'', kuna see ütleb sulle portsu asukoha. Muu väljastatav informatsioon ei ole portsu installeerimise puhul oluline ja seega me sellest siinkohal ka täpsemalt ei räägi.
Kui soovid rohkem sügavuti otsida, võid seda käsku kasutada formaadis make search key=string, kus string on otsitav tekst. See otsib portsude nimesid, kommentaare, kirjeldusi ning sõltuvusi ja selle võimaluse abil saad leida portse, mis puutuvad teatud valdkonda, juhul kui sa ei tea otsitava programmi nime.
Mõlemal juhul on otsing tõstetundetu. ``LSOF'' annab sama tulemuse, mis ``lsof''.
Note: Portsude paigaldamiseks pead sa olema root-kasutaja.
Olles leidnud portsu, mida installeerida, võime asuda paigaldusprotsessi juurde.
Portsuga on kaasas instruktsioonid, kuidas programmi algkoodist ehitada, aga mitte algkoodi ennast. Selle saad kas CDROM-ilt või internetist. Algkoodi jagatakse misiganes viisil just nii, kuidas tarkvara autor soovib. Tihti on see taritud ja gzipitud fail, kuid see võib olla ka muudmoodi pakitud, mõnel juhul ka pakkimata. Programmi algkoodi, misiganes formaadis ta ka on, nimetatakse ``distfile'''iks. Selle leiad CDROM-ilt või interentist.
WarningEnne kui mingi portsu paigaldad, peaksid kindlasti uuendama portsude kollektsiooni ning uurima aadressil http://vuxml.freebsd.org/ asuvat lehte turvaprobleemide koha pealt, mis võiksid su portsu puudutada.
Turvaauke saad automaatselt kontrollida portaudit'i abil enne iga uue rakenduse paigaldamist. Selle tööriista võid leida portsude kollektsioonist kataloogist security/portaudit. Iga uue paigalduse eel peaksid teda jooksutama käsuga portaudit -F - see tirib kõige uuema turvaaukude andmebaasi. Turvaaudit ning tollesama andmebaasi uuendamine toimub igapäevase süsteemi turvakontrolli käigus. Rohkem infot leiad man-lehtedelt portaudit(1) ja periodic(8).
FreeBSD Projekti ametlikud CDROM- ei sisalda enam distfile'e. Need võtavad rohkelt ruumi, mida on otstarbekam kasutada eelkompileeritud pakkide jaoks. Muud CDROM-il olevad tooted nagu FreeBSD PowerPak sisaldavad siiski ka distfile'e ning neid komplekte on võimalik tellida mõnest poest, näiteks FreeBSD Mall-ist. Antud peatüki puhul eeldame, et sul on nimetatud komplekt olemas.
Kõigepealt pane oma FreeBSD CDROM CD-seadmesse ja ühenda ta /cdrom-kataloogi (on oluline, et kasutaksid just seda kataloogi). Algatuseks mine kataloogi, kus paikneb ports, mida sa paigaldada tahad:
# cd /usr/ports/sysutils/lsof
Kataloogis lsof näed portsu skeletti. Järgmiseks sammuks on portsu kompileerimine (mõnikord nimetatakse seda ka ehitamiseks). Seda saad teha käsu make abil. Pärast selle käsu sisestamist peaksid sa nägema midagi sellist:
# make >> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/. >> Attempting to fetch from file:/cdrom/ports/distfiles/. ===> Extracting for lsof-4.57 ... [extraction output snipped] ... >> Checksum OK for lsof_4.57D.freebsd.tar.gz. ===> Patching for lsof-4.57 ===> Applying FreeBSD patches for lsof-4.57 ===> Configuring for lsof-4.57 ... [configure output snipped] ... ===> Building for lsof-4.57 ... [compilation snipped] ... #
Pane tähele, et kui kompileerimine lõpeb, antakse jälle ette käsurida. Järgmiseks sammuks on ports installeerida. Selleks pead sa make-käsule lisama ainult sõna install:
# make install
===> Installing for lsof-4.57
...
[install routines snipped]
...
===> Generating temporary packing list
===> Compressing manual pages for lsof-4.57
===> Registering installation for lsof-4.57
===> SECURITY NOTE:
This port has installed the following binaries which execute with
increased privileges.
#Seejärel peaks olema võimalik äsjapaigaldatud programmi ka käivitada. Kuna lsof töötab suuremate õigustega, näidatakse ka vastavasisulist turvahoiatust. Sa peaksid ka arvesse võtma kõiki teisi hoiatusi, mida võidakse väljastada.
Note: Sa võid ka kohe anda make install käsu ja sellega säästa ennast make käsu eraldi andmisest.
Note: Mõned shellid säilitavad vahemälu käskudega, mis leiduvad keskkonnamuutujas PATH sisalduvates kataloogides - nii on nende käskude puhul vastava käivitatava faili otsimine kiirem. Kui kasutad mõnda neist shellidest, tuleb sul peale portsu paigaldamist kasutada käsku rehash, enne kui saad vastpaigaldatud käske kasutada. See kehtib nii nende shellide kohta, mis on baassüsteemi osad (näiteks tcsh), kui ka nende kohta, mis on saadaval portsudena (näiteks shells/zsh).
Note: Mõningate portsude litsentsid ei luba nende CDROM-i peale panemist. Sellel võib olla mitmeid erinevaid põhjusi: näiteks mõningatel juhtudel peab enne allalaadimist täitma registreerimisankeedi. CDROM-il mitte oleva portsu installeerimiseks pead sa olema internetis, täpsema seletuse leiad järgmisest peatükist .
See peatükk eeldab, et sul on olemas töötav internetiühendus. Vastasel juhul pead sa kasutama CDROM-ilt installeerimist.
Portsu internetist paigaldamine käib täpselt samamoodi kui CDROMiltki. Ainus erinevus seisneb selles, et programmi lähtekood võetakse CDROM-i asemel internetist.
Kasutatavad käsud on identsed:
# make install
>> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
>> Attempting to fetch from ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/.
Receiving lsof_4.57D.freebsd.tar.gz (439860 bytes): 100%
439860 bytes transferred in 18.0 seconds (23.90 kBps)
===> Extracting for lsof-4.57
...
[extraction output snipped]
...
>> Checksum OK for lsof_4.57D.freebsd.tar.gz.
===> Patching for lsof-4.57
===> Applying FreeBSD patches for lsof-4.57
===> Configuring for lsof-4.57
...
[configure output snipped]
...
===> Building for lsof-4.57
...
[compilation snipped]
...
===> Installing for lsof-4.57
...
[install routines snipped]
...
===> Generating temporary packing list
===> Compressing manual pages for lsof-4.57
===> Registering installation for lsof-4.57
===> SECURITY NOTE:
This port has installed the following binaries which execute with
increased privileges.
#Nagu sa näha võid, on ainus erinevus real, mis ütleb, kust süsteem võtab programmi lähtekoodi.
Portsude süsteem kasutab failide allalaadimiseks rakendust fetch(1), mis kasutab erinevaid keskkonnamuutujaid, s.h. FTP_PASSIVE_MODE, FTP_PROXY ja FTP_PASSWORD. Kui oled tulemüüri taga, pead võib-olla mõnda neist kasutama; või siis kasutama FTP/HTTP puhvrit. Täieliku nimekirja kuvab käsk fetch(3).
Kasutajaile, kellel pole võimalik koguaeg ühenduse taga olla, on olemas valik make fetch. Sisesta see käsk kõrgeima taseme kataloogis (/usr/ports) ning sulle vajalikud failid tõmmatakse alla. See käsk töötab ka madalama taseme kataloogides, näiteks /usr/ports/net. Pane tähele, et kui ports sõltub teekidest või teistest portsudest, ei too see käsk vastavate teiste portsude lähtekoodi. Asenda fetch valikuga fetch-recursive - nii tõmmatakse alla ka kõik antud portsuga sõltuvussuhtes olevad portsud.
Note: Sul on võimalus kõik ühe kategooria portsud samaaegselt ehitada käsuga make, olles sealjuures kõrgeima taseme kataloogis - just nii, nagu eelpoolmainitud meetodi make fetch puhul. See on siiski ohtlik, kuna mõned portsud ei taha kõrvuti eksisteerida. Võib ka juhtuda, et mitme erineva portsu poolt paigaldatakse kaks erinevat faili, mis kannavad sama nime.
Vahel harva võib juhtuda, et kasutajad peavad portsu tarballi hankima mujalt kui asukohast nimega MASTER_SITES (koht, kust faile alla tõmmatakse). Valiku MASTER_SITES kehtestab ümber järgmine käsk:
# cd /usr/ports/directory # make MASTER_SITE_OVERRIDE= \ ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch
Siin näites muutsime valiku MASTER_SITES aadressiks ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/.
Note: Mõned portsud lubavad või isegi nõuavad, et annaksid neile kaasa kompileerumisvõtmeid, mis kas lubaks või keelaks mitte vajaminevaid programmiosi, turvavalikuid või muid personaalse häälestuse nüansse. Näiteks võib tuua www/mozilla, security/gpgme ja mail/sylpheed-claws. Kui mõni taoline valik on võimalik, antakse sellest ekraanil teada.
Vahel on kasulik (või kohustuslik) kasutada lähtekooodi ja portsu jaoks eri katalooge. Muutujate PORTSDIR ja PREFIX abil saab vaikekatalooge ümber kehtestada. Näiteks:
# make PORTSDIR=/usr/home/example/ports install
kompileerib portsu kataloogi /usr/home/example/ports ning installib kõik kataloogi /usr/local.
# make PREFIX=/usr/home/example/local install
kompileerib selle kataloogi /usr/ports ning installib programmi kataloogi /usr/home/example/local.
Ja loomulikult käsk
# make PORTSDIR=../ports PREFIX=../local install
kombineerib need kaks muutujat (siia lehele ei mahu kogu käsk ära, aga idee peaks sulle arusaadav olema).
Teiseks võimaluseks on seada need muutujad keskkonnamuutujateks. Juhised selleks leiad oma shelli manuaalist.
Mõned portsud, mis kasutavad imake'i ( X-aknasüsteemi osa), ei tööta muutujaga PREFIX korralikult ning nende puhul on programm soovitav paigaldada kataloogi /usr/X11R6. Sama on lugu mõne Perli portsuga - ka need ignoreerivad muutujat PREFIX ja paigaldavad end Perli puusse. Üritada panna neid portse muutujat PREFIX respekteerima on raske või suisa võimatu.
Nüüd, mil tead, kuidas portse paigaldada, huvitab sind kindlasti ka see, kuidas neid eemaldada - lihtsalt juhuks kui sa midagi installid ning sulle hiljem tundub, et oled vale portsu paigaldanud. Eemaldame näiteks oma eelmise näiteportsu (lsof, kui sa tähele ei pannud). Nagu ka paigaldamise juures, on esimeseks sammuks sisenemine portsu kataloogi, siin näiteks /usr/ports/sysutils/lsof. Peale kataloogide vahetamist oled valmis lsof'i süsteemist eemaldama. Seda tehakse käsuga make deinstall:
# cd /usr/ports/sysutils/lsof # make deinstall ===> Deinstalling for lsof-4.57
See oleks justkui lihtne. Oled oma süsteemist lsof'i eemaldanud. Kui soovid seda mingil põhjusel uuesti paigaldada, võid sisestada käsu make reinstall, olles sealjuures kataloogis /usr/ports/sysutils/lsof.
Käsud make deinstall ja make reinstall ei tööta järjest, kui oled juba kasutanud käsku make clean. Kui soovid portsu puhastamise järel eemaldada, kasuta käsku pkg_delete(1), nii nagu seda seletab pakkidest rääkiv peatükk.
Portsude kollektsioon võib julmalt kogu su kettaruumi enda alla võtta. Sel põhjusel peaksid alati töökataloogid ära puhastama, seda käsuga make clean. See käsk eemaldab portsu ehitamise ja installimise järel work-kataloogi. Võid distfiles-kataloogist kustutada ka pakitud tarballid ning eemaldada installitud portsud, kui nende kasutamine on lõpetatud.
Mõned kasutajad eelistavad seada portsude kategooriatele piirid, seda märke lisamise abil faili nimega refuse. Kui seejärel käivitada CVSup, ei tõmmata alla vastava kategooria faile.
Note: Olles oma portsude kollektsiooni uuendanud, tuleks enne portsu kaasajastamise üritamist, vaadata /usr/ports/UPDATING faili. Selles failis on kirjeldatud mitmesugused probleemid, mida kasutaja võib uuendamisel kohata ja sammud, mille ettevõtmine võib vajalik olla.
Portsude pidev kaasajastamine võib tüütuks muutuda. Näiteks oleks ühe portsu kaasajastamiseks vaja minna portsude kataloogi, ehitada vastav ports, vana ports eemaldada, uus paigaldada ning seejärel kõik risu ära puhastada. Kujuta ette, et pead seda viie portsuga tegema - on ju tüütu, eksole?! Varem oli see süsadminnidele suureks hädaks, kuid nüüd on meil utiilid, mis seda tööd meie eest teevad. Näiteks teeb kogu töö ära utiil sysutils/portupgrade. Paigalda see utiil lihtsalt samamoodi, nagu teisigi portse paigaldad - käsu make install clean abil.
Nüüd loo käsuga pkgdb -F andmebaas. Selle käsuga loetakse installitud portsude nimekiri ning luuakse andmebaasifail kataloogi /var/db/pkg. Kui nüüd sisestad käsu portupgrade -a, loeb see antud nimekirja, samuti portsude INDEX-faili. Seejärel hakkab portupgrade alla laadima, ehitama, varundama, installima ning puhastama vahepeal uuendatud portse. portupgrade omab paljusid võtmeid erinevaiks vajadusteks, olulisimad on allpool ka ära toodud.
Kui sa soovid uuendada ainult kindlat rakendust, mitte tervet baasi, kasuta käsku
portupgrade pkgname, lisa võti
-r, kui soovid, et portupgrade
tegeleks ka kõigi pakkidega, mis etteantud pakkidest sõltuvuses on ja
-R võti tegelemaks kõigi pakkidega, mida etteantud paketid
vajavad.
Paigaldamisel portsude asemel pakkide kasutamiseks anna -P
võti ja -F võtit, võid kasutada vajalikke failide allalaadimiseks
ilma, et seejuures midagi paigaldataks või ehitataks.
Lisainformatsiooni leiad portupgrade(1) man'i lehelt.
Note: Oluline on regulaarselt pakkide baasi uuendada pkgdb -F käsu abil, kõrvaldamaks vastuolusid, eriti juhul, kui portupgrade palub sul seda teha. Ära katkesta portupgrade tööd, kui ta parajasti uuendab pakkide baasi, see jätab baasi mittetervikliku seisu.
Selle töö teevad ära ka mõned teised utiilid - vaata kataloogi ports/sysutils ning uuri järele.