Asetustiedostojen suojaamien Miksi suojata?

Portagen toimintaan liittyy suojattujen tiedostojen käsite. Tällä tarkoitetaan mekaniikkaa, joka päivitystilanteessa jättää vanhat versiot tiedostoista ylikirjoittamatta, mutta kertoo käyttäjälle mahdollisesta päivityksestä. Tämä on tietenkin enimmäkseen käytännöllistä asetustiedostojen kanssa (niiden, jotka ovat hakemistossa /etc).

Ylikirjoittamisen sijaan luodaan uusi ._cfg0000_<nimi>-niminen tiedosto, joka vastaa <nimi>-nimisen tiedoston päivitystä. Tämän tiedoston sisältämät muutokset käyttäjä voi sitten yhdistää tai jättää yhdistämättä. Komento etc-update auttaa käsittelyssä, mutta siitä lisää myöhemmin.

Muuttujan CONFIG_PROTECT asettaminen

Portage ei osaa suojata yksittäisiä tiedostoja, sen sijaan se käsittelee kokonaisia hakemistoja. CONFIG_PROTECT listaa kaikki suojatut hakemistot. Suojaukset vaikuttavat myös hakemistojen alihakemistoissa. Muuttuja CONFIG_PROTECT määritellään tiedostossa /etc/make.globals, mutta muutokset tulee sijoittaa tiedostoon /etc/make.conf (tämä siksi, että Portagen asetukset löytyisivät yhtenäisesti make.confista).

CONFIG_PROTECT="/etc /usr/share/config /usr/kde/3.1/share/config"

Jos haluat suojata jonkin hakemiston suojaamatta samalla alihakemistoja, joudut poistamaan suojauksen näistä alihakemistoista merkitsemällä ne muuttujaan CONFIG_PROTECT_MASK. Sen määritelmä löytyy myös tiedostosta /etc/make.globals ja muutokset tehdään tiedostoon /etc/make.conf:

CONFIG_PROTECT_MASK="/etc/init.d"

Lisätietoa asetustietojen suojauksesta englanniksi löytyy emergen sisäisestä ohjeesta:

# emerge --help config
etc-update

etc-update auttaa asetustiedostojen ._cfg0000_<name> yhdistelyssä. Sen tarjoaa vuorovaikutteisen päivitysten yhdistystavan ja osaa liittää muodolliset vaikuttamattomat muutokset itsestään.

etc-updaten käynnistys on helppoa:

# etc-update

Kun muodolliset muutokset on yhdistetty, etc-update antaa listan suojatuista tiedostoista joihin on päivityksiä. Listan lopussa odottavat mahdolliset toimintovaihtoehdot:

Please select a file to edit by entering the corresponding number.
              (-1 to exit) (-3 to auto merge all remaining files)
                           (-5 to auto-merge AND not use 'mv -i'):

Vaihtoehdolla -1 etc-update lopettaa tekemättä muutoksia. Vaihtoehdoilla -3 ja -5 kaikki listan asetustiedostot korvataan uudemmilla versioillaan. On siis erittäin tärkeää tarkasetella ensin niitä asetustiedostoja joita ei automaattisesti korvata. Tarkastelu onnistuu valitsemalla listauksessa esiintyvä tiedostonumero.

Esimerkkinä katselemme asetustiedostoa /etc/pear.conf:

Beginning of differences between /etc/pear.conf and /etc/._cfg0000_pear.conf
[...]
End of differences between /etc/pear.conf and /etc/._cfg0000_pear.conf
1) Replace original with update
2) Delete update, keeping original as is
3) Interactively merge original with update
4) Show differences again

Ruudulla näkynee nyt kahden tiedoston eroavaisuudet. Jos näyttäisi siltä, että asetustiedoston voi korvata ongelmitta, näppäile 1. Jos päivitys näyttää tarpeettomalta, tai ei sisällä mitään uutta hyödyllistä, näppäile 2. Jos haluat vuorovaikutteisesti päivitellä muutoksia, valitse 3.

Ei ole järkevää tarkastella vuorovaikutteista yhdistelyä täällä. Täydellisyyden vuoksi mainitsemme mahdolliset komennot joita voidaan käyttää tiedostojen yhdistämiseen. Yhdistämistila koostuu kahdesta rivistä (toinen on alkuperäisessä tiedostossa, toinen uudessa) ja syöterivistä, jolle voi antaa seuraavia komentoja:

ed:     Edit then use both versions, each decorated with a header.
eb:     Edit then use both versions.
el:     Edit then use the left version.
er:     Edit then use the right version.
e:      Edit a new version.
l:      Use the left version.
r:      Use the right version.
s:      Silently include common lines.
v:      Verbosely include common lines.
q:      Quit.

Päivitettyäsi tärkeät asetustiedot käsin voit yhdistää loput tiedostot automaattisesti. etc-update lopettaa kun päivitettäviä tiedostoja ei enää ole.

Verkkoasetukset Yleiset peilipalvelimet

Gentoon saavuttaessa kasvavaa suosiota peilipalvelinten käyttö on tullut erittäin suositeltavaksi. Portagessa on kolme muuttujaa peileille: yksi rsyncille (Portagepuun ajantasaistamiseen), yksi distfileseille (lähdekoodin lataamiseen) ja yksi esikäännetyille paketeille.

Lista distfiles-palvelimista on Gentoon peilipalvelinsivulla. Myös ohjelmalla mirrorselect voi helposti asettaa peilipalvelimet. Tarkastelkaamme ensin kuitenkin muuttujia...

SYNC sisältää listan rsync-peileistä joita voidaan käyttää. Esimerkiksi käyttääksesi ensisijaisesti palvelinta rsync://rsync.fi.gentoo.org/gentoo-portage ja toissijaisesti palvelinta rsync://rsync.europe.gentoo.org/gentoo-portage määrittelisit SYNCin /etc/make.confissa seuraavasti:

SYNC="rsync://rsync.fi.gentoo.org/gentoo-portage
      rsync://rsync.europe.gentoo.org/gentoo-portage"

GENTOO_MIRRORS sisältää listan distfiles-peileistä joita voidaan käyttää. Esimerkiksi käyttääksesi ensisijaisesti palvelinta http://trumpetti.atm.tut.fi/gentoo/ ja toissijaisesti palvelinta http://ftp.belnet.be/mirror/rsync.gentoo.org/gentoo/ määrittelisit /etc/make.conf:iin seuraavasti:

GENTOO_MIRRORS="http://trumpetti.atm.tut.fi/gentoo
                http://ftp.belnet.be/mirror/rsync.gentoo.org/gentoo"

PORTAGE_BINHOST sisältää listan esikäännettyjen pakettien peilipalvelimista joita halutaan käyttää. Esimerkiksi käyttääksesi palvelinta ftp://login:pass@grp.mirror.site/pub/grp/i686/athlon-xp, määrittelisit seuraavan muuttujan /etc/make.conf:iin:

PORTAGE_BINHOST="ftp://login:pass@grp-peili.example.com/pub/grp/i686/athlon-xp"
Pakettikohtaiset peilipalvelimet

Joidenkin pakettien SRC-muuttujan arvo alkaa pseudoyhteyskäytännöllä mirror://, näiden lähdekoodeja on yleensä jo valmiiksi jaossa useilla palvelimilla (kuten sourceforgen ja gnun peilit). Kun portage törmää tällaiseen asetukseen se etsii parasta palvelinta tiedostosta /etc/portage/mirrorsja, jollei sieltä löydy niin sitten tiedostosta /usr/portage/profiles/thirdpartymirrors.

Voit valita lähimmät peilipalvelimet tiedostoon /etc/portage/mirrors. Esimerkikse sourceforgen peiliksi Suomessa kannattaisi valita vaikkapa http://belnet.dl.sourceforge.net, jolloin kaikki sourceforge-projektit yritettäisiin ladata Belgiasta ensiksi:

sourceforge http://belnet.dl.sourceforge.net

Voit myös määritellä erityisiä paikallisia (local) peilipalvelimia. Nämä peilit tarkastettaisiin aina ennen lataamisyrityksiä, vaikka paketti ei olisikaan mirror-tyyppinen osoitteeltaan, tai vaikka paketin peilaaminen olisi estetty.

Mirrorselect

Käyttääksesi mirrorselectiä sinun täytyy ensin asentaa se (jollet ole jo niin tehnyt).

# emerge mirrorselect

Voit nyt hyödyntää mirrorselectiä peilien automaattiseen valintaan, tai valita peilit käsin listauksesta. Lisätietoa mirrorselectin käytöstä saa suorittamalla komennon mirrorselect komentorivillä, se antaa nopean katsauksen mirrorselectiin.

# mirrorselect
Hakeminen

Portagen käyttämän hakuohjelman voi määritellä muuttujiin FETCHCOMMAND ja RESUMECOMMAND. Tiedostoissa /etc/make.conf.example ja /etc/make.globals on useita valmiita esimerkkejä. Oletusasetus on käyttää komentoa wget:

FETCHCOMMAND="/usr/bin/wget -t 5 --passive-ftp -P \${DISTDIR} \${URI}"
RESUMECOMMAND="/usr/bin/wget -c -t 5 --passive-ftp -P \${DISTDIR} \${URI}"

${DISTDIR} korvautuu haettujen tiedostojen tallennuspaikalla (/usr/portage/distfiles) ja ${URI} korvautuu haettavan tiedoston osoitteella.

Portage käyttää oletusarvoisesti wgetiä, joten voit asettaa välipalvelimet määrittämällä muuttujat http_proxy ja ftp_proxy (huomaa pienaakkoset). Vaikka määritykset voikin sijoittaa tiedostoon /etc/make.conf, suositeltu ratkaisu on käyttää yleisempää sijoituspaikkaa jonka muutkin sovellukset tietävät (/etc/make.conf on vain Portagen käytössä). Kappaleessa Ympäristömuuttujat kerrotaan lisää järjestelmänlaajuisten ympäristömuuttujien asettamisesta.

Rsyncin asettaminen

Komento emerge --sync käyttää rsynciä päivittäessään Portagepuuta. Kolme rsyncin käytökseen vaikuttavaa Portagemuuttujaa on RSYNC_EXCLUDEFROM, RSYNC_RETRIES and RSYNC_TIMEOUT.

Ebuildeja voi estää päivittymästä tai poistumasta emerge --syncissä merkitsemällä ne RSYNC_EXCLUDEFROM-muuttujaan. Sen tulisi osoittaa tiedostoon jota rsync voi käyttää tiedostojen ohittamiseen, oletusarvoisesti osoitettu tiedosto on /etc/portage/rsync_excludes. Tämän tavan käyttäminen ei ole suositeltavaa, sillä se saattaa rikkoa riippuvuussuhteita jos sen kanssa ei ole tarkkana. Muuttuja PORTDIR_OVERLAY on suositeltu tapa, mutta siitä kerrotaan lisää tuonnempana. Lisätietoja tästä löytyy komennon rsync ohjesivulta.

RSYNC_EXCLUDEFROM="/etc/portage/rsync_excludes"

Epäonnistuessaan rsync yrittää uudelleen määrätyn määrän kertoja ennen kuin siirtyy koettamaan seuraavaa palvelinta. Uudelleenyritysten määrä kerrotaan muuttujassa RSYNC_RETRIES ja sen oletusarvo on 3:

RSYNC_RETRIES="3"

Jos käytössä on (erittäin) hidas rsync-palvelin, rsync saattaa aikakatkaista yhteyden, koska dataliikennettä ei näy. Aika joka odotetaan ennen aikakatkaisua kerrotaan sekunteina muuttujassa RSYNC_TIMEOUT ja sen oletusarvo on 180:

RSYNC_TIMEOUT="180"
Hakemistojen sijainnit Johdanto

Portagessa kaikki on säädettävissä, mukaanlukien eri tehtäviin käytetyt hakemistot ja Portagen tarvitsemat tiedostot. Oletusarvoja (määritelty tiedostossa /etc/make.globals) muutetaan määrittämällä vastaava muuttuja -- missäpä muuallakaan kuin -- tiedostossa /etc/make.conf.

Jos muutat muuttujia osoittelemaan toisiin paikkoihin, älä koskaan merkitse viimeisen hakemiston loppuun kauttaviivaa /!
Portagepuu

Portagepuun (Portage tree), eli ohjelmistohakemiston, sijainnin määrittelee muuttuja PORTDIR. Sen oletusarvona on hakemisto /usr/portage:

PORTDIR="/usr/portage"

Jos haluat säilyttää virallisen Portagepuun lisäksi omia ohjelmistohakemistojasi, ne täytyy määritellä muuttujassa PORTDIR_OVERLAY. Näihin hakemistoihin komento emerge --sync ei puutu: ebuildit niissä eivät päivity eivätkä muutu mutta kuuluvat osanaa Portagepuuhun.

PORTDIR_OVERLAY="/usr/local/portage"
Distfilet

Ladattujen lähdkeooditiedostojen (ns. distfilejen) sijainti on muuttujassa DISTDIR. Sen oletusarvo on ${PORTDIR}/distfiles:

DISTDIR="${PORTDIR}/distfiles"
Paketit ja RPM:t

Esikäännettyjen pakettien sijainti on muuttujassa PKGDIR. Sen oletusarvo on ${PORTDIR}/packages:

PKGDIR="${PORTDIR}/packages"

RPM-pakettien (niin, jotkin paketit on saatavilla RPM:inä) sijainti määritellään muuttujassa RPMDIR. Sen oletusarvo on ${PORTDIR}/rpm:

RPMDIR="${PORTDIR}/rpm"
Portagen väliaikaistiedostot

Portage käyttää väliaikaissijantia ebuildien kääntämiseen. Tämä määritellään muuttujassa PORTAGE_TMPDIR, jonka oletusarvo on /var/tmp:

PORTAGE_TMPDIR="/var/tmp"

Oletuksena Portage lue hakemiston nimeltä portage hakemiston PORTAGE_TMPDIR alihakemistoksi. Tämä määritellään muuttujassa BUILD_PREFIX:

BUILD_PREFIX="${PORTAGE_TMPDIR}/portage"

Jos muutat sijaintia, muista varmistaa että väliaikaishakemiston osiolla on riittävästi vapaata tilaa: suurten ohjelmistojen käännös voi helposti vaatia 2 gigatavua tai enemmänkin!

Lokiin tallennus

Muuttuja PORT_LOGDIR on oletusarvoisesti asettamaton. Kun se määritellään, Portage luo ebuild-kohtaiset lokit annettuun hakemistoon:

PORT_LOGDIR="/var/log/portage"
Muut Portagen asetukset Nice-arvo

Portage voi kääntää ohjelmistoja eri nice-arvoilla (prioriteetin omainen määrite). Jos haluat korottaa nice-arvoa (joka tehostaa järjestelmän vastauskykyä käännösten aikoina, mutta lisää käännösaikaa) sen voi määritellä positiivisena kokonaislukuna muuttujaan PORTAGE_NICENESS:

PORTAGE_NICENESS="3"
Pakettien SLOTit ja automatisoitu puhdistus

Usein tarvitaan saman paketin monia eri versioita (kirjastot mukaanlukien) järjestelmässä. Portagessa on tuki tälle ebuildeihin määritettyinä SLOT-muuttujina. Käyttäjän ei tarvitse tietää SLOTin toiminnallisuuksista, mutta olemassaolosta on hyvä tietää.

Pakettia päivitettäessä portage tarkastaa paketissa määritellyn SLOTin. Jos käy niin, että vanhassa versiossa on eri SLOT kuin uudessa, Portage ei puutu vanhempaan asennukseen.

Jos kuitenkin SLOTit ovat samoja (kuten yleensä ovat), vanhempi versio poistetaan automaattisesti. Poistamisen voi keskeyttää siinä vaiheessa kun Portage laskee sekunteja poistamisen alkuun. Näidne sekuntien määrä annetaan muuttujassa CLEAN_DELAY ja sen oletusarvo on 5 sekuntia:

CLEAN_DELAY="5"

Jollet halua Portagen poistavan vanhoje versioita (eli "puhdistavan" järjestelmää), voit asettaa muuttujan AUTOCLEAN arvoksi no:

AUTOCLEAN="no"
Käännökseen liittyvät muuttujat

Olemme jo käsitelleet aika määrän muuttujia, mutta ei tässä vielä kaikki! Ne jotka ovat asentaneet Gentoon muistavat CHOSTin, CFLAGSin ja CXXFLAGSin, joita kääntäjä käyttää käännös- ja optimointiasetuksina.

Lisää tietoa näistä on gcc:n infosivuilla tai verkossa sivuilla GCC Online Manuals.

# info gcc
(Valitse kohta "Invoking gcc")
(Valitse kohta "Optimize options")

Jos muuttuja DEBUGBUILD on määritelty, Portage ei strippaa käännettyistä ohjelmista ja kirjastoista tietoa, että testaus ja vianetsintä helpottuisi. Tämä myös hidastaa järjestelmää ja kasvattaa tiedostojen kokoa.

# Älä aseta arvoksi "false" vaan poista koko rivi
# Portage ei tarkista itse arvoa, vain sen onko se määritelty
DEBUGBUILD="true"

Muuttujaa MAKEOPTS käyttää komento make. Make on käännösten helpottamiseen rakennettu työkalu. Tätä muuttujaa yleensä käytäetään kertomaan makelle että se voi ajaa useampaa käännöstä rinnakkaisesti (etenkin monen prosessorin järjestelmissä tai jos distcc on asetettu kuten aiempana määriteltiin)

Asettamalla MAKEOPTSin arvoksi -j3 saadaan se suorittamaan kolmea yhtäaikaista käännöstä:

MAKEOPTS="-j3"

Muuttujaa ROOT ei yleensä kannata asettaa tiedostossa /etc/make.conf, vaan pikemminkin ympäristömuuttujana. Portage tarkastaa tämän arvon päättääkseen mihin paketit asennetaan. Oletusarvona on tietenkin /. Esimerkissä asennamme gnumericin sijaintiin /mnt/gentoo nykyisen järjestelmän asemesta:

# ROOT="/mnt/gentoo" emerge gnumeric
Tulosteen muokkaus

Oletusarvoisesti Portage värittää kaiken tulosteen luettavuuden parantamiseksi. Jollet halua sen tekevän näin, aseta muuttuja NOCOLOR arvoksi true:

NOCOLOR="true"
Resurssit Ohjesivut

Jos tarvitset listausta kaikista muuttujista, tarkastele ohjeivua make.conf:

# man make.conf
Kommentoidut esimerkit

Tiedostossa /etc/make.conf.example on runsaasti kommentteja, joissa on myös mielenkiintoisia esimerkkejä.