Update portu...

Zbynek Burget zburget at miastudio.cz
Wed May 21 13:29:18 CEST 2003


Stejny problem jsem resil pred casem taky. Stejny problem - doma desktop bez
i-netu, takze nejde pouzit cvs-up...
Presne na tohle je CTM - system aktualizace jak portu, tak zdrojaku.
Uz to mam, troufam si rict, celkem vymakane, takze rad poradim.
V prvni rade je potreba rozjet aktualizace pres CTM. Je to sice popsane jak
v Handbooku, tak v man ctm, ale stejne mi chvilku trvalo, naz jsem to
pochopil. Celou kolekci portu /usr/ports (prip. chcete-li aktuaolizovat i
zdrojaky, tak i /usr/src) muzete smele smazat. Pak je potreba z nektereho
FTP serveru (ja pouzivam ftp.freebsd.cz - je rychly a jsou na nem asi
nejaktualnejsi data) stahnout z adresare /pub/FreeBSD/CTM/ports-cur (resp.
.../CTM/src-4 (nebo src-cur podle toho, kterou verzi FBSD mate))soubor ve
tvaru ports-cur.NN00xEmpty.gz (resp. src-4.NN00xEmpty.gz) (pro porty je
momentalne nejvyssi cislo Empty 4700 a pro src-4 1400). To je jakysi
startovaci bod, ke kteremu se vztahuji dalsi aktualizace. Je sice pomerne
velky - porty cca 18 MB, src cca 80 MB, ale ten se stahuje jen jednou. Pak
je tedy potreba stahnout vsechny nasledujici soubory - ports-cur.XXXX.gz.
Jejich velikost je jiz v radu max. stovek kB (vetsinou v radu jednotek az
desitek kB). Tyto nove soubory s aktualizacemi pribyvaji na siti i
nekolikrat denne.
Onen "Empty" soubor je generovan jednou za 100 aktualizaci, ale vy ho uz
vlastne sahovat nemusite (se stejnym cislem je generovan rovnez soubor bez
"Empty"). Nasledujici kroky jsou celkem dobre popsany jak v Handbooku, tak v
man ctm. Je potreba se prepnout do mista, kam se budou soubory rozbalovat -
tedy pro porty /usr/ports, pro src do /usr/src a napsat prislusny prikaz:

cd /usr/ports
ctm /cesta/k/aktualizacim/ports-cur.*

CTM si pamatuje cislo posledni aktualizace, takze se nestane, ze byste neco
preskocil nebo aplikoval dvakrat. Ja mam na vsechno napsane scripty, ktere
to delaji za mne, takze si jen domu privezu aktualizace, spustim script,
ktery je aplikuje a vygeneruje scripty, pomoci kterych si v praci (na stroji
s FreeBSD) stahnu vsechny zdrojaky potrebne pro upgrady nainstalovanych
portu.

Priklad scriptu pro aktualizaci portu:

CTMPATH=/scsi/FreeBSD/ctm
CURDIR=$(pwd)
cd /usr/ports
for A in $CTMPATH/ports-cur.*;  do
    if [ -f $A ]; then
        ctm -c $A && {
            ctm $A
            mv $A $CTMPATH/ports.OK
        } || exit
    fi
done && {
    Y=0
    for i in /var/db/pkg/*; do
        if [ -d $i ]; then  Y=$((Y))+1; fi
    done
    X=1
    for i in /var/db/pkg/*; do
        if [ -d $i ] ; then
            PORT=`grep '@comment ORIGIN:' $i/+CONTENTS | sed /'@comment
ORIGIN:'/s///`
            cd /usr/ports/$PORT
            echo -n $((X))'/'$((Y))': '
            echo $PORT
            if [ -f /usr/ports/$PORT/distinfo ] && [[ -n `make
fetch-list` ]]; then
                echo ' ===> Writing fetch-recursive-list'
                make fetch-recursive-list>$CURDIR/`echo $PORT | sed
/'[[:print:]]*\//s///'`
            fi
            X=$((X))+1
        fi
    done
    cd $CURDIR
}

promenna CTMPATH je nastavena na adresar, kam sypu dovezene aktualizace.
Script nejdriv aktualizaci zkontroluje, jestli je v poradku, pokud ne,
zkonci. Pokud ano, tak ji aplikuje a presune do podadresare ports.OK.
Nakonec prohledne vsechny instalovane porty, zkontroluje, jestli neni
potreba stahnout novy zdrojak. Pokud ano, tak pro kazdy takovy port
vygeneruje soubor se scriptem, pomoci ktereho si pak stahnu potrebne
soubory. Podotykam, ze pro upgrade i instalaci portu pouzivam portupgrade.
Script bezi pod shellem bash - nevim, jak bude fungovat pod jinymi shelly.
Neco podobneho, i kdyz ne tak sloziteho mam napsane rovnez pro aktualizaci
src a preklad a instalaci systemu.

Zbynek

P.S.: budu vdecny za jakekoliv pripominky a dalsi namety :-)

----- Original Message -----
From: "Zbynek Houska" <zhouska at cz.foxconn.com>
To: <users-l at freebsd.cz>
Sent: Monday, May 19, 2003 8:24 AM
Subject: Update portu...


> Chtel bych updatnout porty, tak abych mohl napr. na 5.0 kompilovat
> Openoffive 1.0.3 ci neco jineho. Defaultni porty jsou misty docela stare.
> Pokud jsem prenesl jenom vsechny soubory z daneho podadresare tak to
stejne
> hodili chybu pri kompilaci...
>
>
> Zbynek





More information about the Users-l mailing list