% Linux Installation and Getting Started    -*- TeX -*-
% upgrade.tex
% Copyright (c) 1992, 1993 by Matt Welsh <mdw@metalab.unc.edu>
%
% This file is freely redistributable, but you must preserve this copyright 
% notice on all copies, and it must be distributed only as part of "Linux 
% Installation and Getting Started". This file's use is covered by the 
% copyright for the entire document, in the file "copyright.tex".
%
% Copyright (c) 1998 by Specialized Systems Consultants Inc. 
% <ligs@ssc.com>

\section{Nadgradnja in namestitev novega programja}
%\markboth{Sistemsko upravljanje}{Nadgraditev in namestitev novega programja}
\label{sec-sysadm-upgrade}

\index{programje!nadgradnja|(}
\index{programje!namestitev|(}
Še ena dolžnost sistemskega upravitelja je nadgradnja in nameščanje
nove programske opreme.

Razvoj sistema Linux je hiter.  Novo jedro izide vsakih nekaj
tednov in drugo programje se ažurira skoraj tako pogosto.
Zaradi tega novi uporabniki Linuxa pogosto čutijo potrebo
po nenehni nadgradnji njihovih sistemov, da bi sledili hitremu
tempu sprememb.  To ni potrebno in je izguba časa.  Če bi sledili
vsem spremembam v svetu Linuxa, bi porabljali ves svoj čas za
nadgrajevanje in vam ga ne bi ostalo nič za uporabo sistema.

Nekateri ljudje menijo, da bi morali nadgraditi, ko je narejena nova
izdaja distribucije; na primer, ko Slackware izda novo različico.
Mnogi uporabniki Linuxa ponovno v celoti namestijo svoje sisteme z
vsako najnovejšo izdajo distribucije Slackware.

Najboljši način za nadgradnjo vašega sistema je odvisen od
distribucije Linuxa, ki jo imate.  Debian, S.~u.~S.~E., Caldera in Red
Hat Linux imajo vsi inteligentno programje za upravljanje paketov, ki
dovoljuje preproste nadgradnje z nameščanjem novih paketov.  Na
primer, prevajalnik za C, \texttt{gcc}, se dobi kot vnaprej
pripravljen binarni paket.  Ko se namesti, so vse datoteke starejših
različic prepisane ali odstranjene.

V največji meri brezumno nadgrajevanje, samo da >>sledite trendu<<,
sploh ni pomembno.  To ni MS-DOS ali Microsoft Windows.  Ni bistvenega
razloga za poganjanje novejših različic vsega programja.  Če
ugotovite, da bi želeli ali potrebovali zmožnosti, ki jih ponuja nova
različica, potem nadgradite.  Sicer ne nadgradite.  Z drugimi
besedami, nadgradite le to, kar morate in kadar morate.  Ne
nadgrajujte zaradi nadgrajevanja.  To zapravlja veliko časa in
naporov.

\subsection{Nadgraditev jedra}
\index{jedro!nadgraditev}
Nadgraditev jedra je stvar dobivanja izvorne kode jedra in prevajanja
le-te.  To je v splošnem neboleč postopek, a lahko zaidete v težave,
če poskušate nadgraditi na razvojno jedro ali nadgraditi na novo
različico jedra.  Ime različice jedra ima dva dela, številko različico
jedra in stopnjo popravkov.  V času nastanka te knjige je bilo zadnje
stabilno jedro različice \texttt{2.2.3}.  \texttt{2.2} je tukaj
različica jedra in \texttt{3} je stopnja popravkov.  Liho oštevilčene
različice jeder kot \texttt{2.3} so razvojna jedra.  Izognite se
razvojnim jedrom, razen če želite živeti nevarno!  Kot splošno pravilo
bi morali biti sposobni preproste nadgradnje na drugo stopnjo
popravkov, a nadgradnja na novo različico zahteva nadgradnjo
sistemskih pripomočkov, ki tesno sodelujejo z jedrom.
 
\index{jedro!viri za}
Izvorno kodo jedra za Linux lahko poberete s katerega od mest za
anonimni FTP
Linuxa (glejte stran~\pageref{app-ftp} za seznam).
Na \texttt{metalab.unc.edu}, denimo, najdete izvorno kodo jedra
v imeniku \texttt{/pub/Linux/kernel}, organizirano v podimenike
po številki različice.

Izvorna koda jedra izhaja kot z \texttt{gzip}-om stisnjena datoteka
\texttt{.tar}.  Na primer, datoteka, ki vsebuje izvorno kodo jedra
2.0.33, je \texttt{linux-2.0.33.tar.gz}.

\index{/usr/src@\texttt{/usr/src}}
Izvorna koda jedra se odpakira v imenik \texttt{/usr/src}, tako da
ustvari imenik \texttt{/usr/src/linux}.  Splošna praksa je, da je
\texttt{/usr/src/linux} simbolna povezava na drug imenik, ki
vsebuje številko različice kot \texttt{/usr/src/linux-2.0.33}.
Tako lahko namestite novo izvorno kodo jedra in jo preizkusite,
preden odstranite staro izvorno kodo jedra.  Ukazi za ustvarjanje
povezave imenika z jedrom so:
\begin{tscreen}
\# \emph{cd /usr/src} \\
\# \emph{mkdir linux-2.0.33} \\
\# \emph{rm -r linux} \\
\# \emph{ln -s linux-2.0.33 linux} \\
\# \emph{tar xzf linux-2.0.33.tar.gz}
\end{tscreen}

Ko nadgrajujete na novi nivo popravkov iste različice jedra, lahko
datoteke s popravki jedra (angl.\ kernel patch files) prihranijo čas
prenosa, saj je izvorna koda jedra velika okoli 7~MB, ko je že
stisnjena z \texttt{gzip}-om.  Za nadgradnjo z jedra 2.0.31 na jedro
2.0.33 bi pobrali datoteki s popravki \texttt{patch-2.0.32.gz} in
\texttt{patch-2.0.33.gz}, ki ju najdete na istih mestih za FTP kot
celotno izvorno kodo jedra.  Ko ste položili popravka v imenik
\texttt{/usr/src}, ju zaporedno uporabite na jedru, da boste osvežili
izvorno kodo.  Eden od načinov za to bi bil
\begin{tscreen}
\# \emph{cd /usr/src} \\
\# \emph{gzip -cd patch-2.0.32.gz $\mid$ patch -p0} \\
\# \emph{gzip -cd patch-2.0.33.gz $\mid$ patch -p0}
\end{tscreen}
Ko je izvorna koda odpakirana in so bili uporabljeni popravki,
se boste morali prepričati, da so tri simbolne povezave
v \texttt{/usr/include} pravilne za vašo distribucijo jedra.
Za ustvarjanje teh povezav uporabite ukaze
\begin{tscreen}
\# \emph{cd /usr/include} \\
\# \emph{rm -rf asm linux scsi} \\
\# \emph{ln -s /usr/src/linux/include/asm-i386 asm} \\
\# \emph{ln -s /usr/src/linux/include/linux linux} \\
\# \emph{ln -s /usr/src/linux/include/scsi scsi}
\end{tscreen}
Ko ustvarite te povezave, ni razloga, da bi jih ponovno ustvarjali,
ko nameščate nove popravke jedra ali novejšo različico jedra.
(Glejte razdelek~\ref{sec-manage-links} za več o simbolnih
povezavah.)

\index{jedro!prevajanje}
Za prevajanje jedra morate imeti na vašem sistemu nameščen prevajalnik
za C \texttt{gcc}.  Za prevajanje jedra 2.0 je potrebna različica
\texttt{gcc} 2.6.3 ali poznejša.

Najprej naredite \texttt{cd} v \texttt{/usr/src/linux}.  Ukaz
\texttt{make config} vas sprašuje o številnih nastavitvenih izbirah.
To je korak, kjer izberete strojno opremo, ki jo bo podpiralo vaše
jedro.  Največja napaka, ki se ji je treba izogniti, je, da ne
vključite podpore za vaš krmilnik trdega diska.  Brez pravilne podpore
za trdi disk v jedru se sistem ne bo niti zagnal.  Če niste
prepričani, kaj pomeni izbira jedra, je kratek opis dostopen s
pritiskom na \key{?} in \key{Enter}.

V novejših različicah Linuxa sta dostopna tudi zaslonsko usmerjena
ekvivalenta ukaza \texttt{make config}.  Za zaslonsko različico
nastavitvenih izbir za jedro napišite \texttt{make menuconfig}, če pa
imate na vašem sistemu nameščen grafični vmesnik X~Window System,
lahko uporabite tudi \texttt{make xconfig}.  Uporaba obeh je precej
intuitivna in gotovo ju boste uporabljali raje kot \texttt{make config}.

Nato poženite ukaz \texttt{make dep} za ažuriranje vseh odvisnosti
izvorne kode.  To je pomemben korak.  Ukaz \texttt{make clean} odstrani
stare binarne datoteke iz drevesa izvorne kode jedra.

\index{jedro!prevajanje v stisnjeno sliko}
Ukaz \texttt{make zImage} prevede vaše jedro in ga zapiše v datoteko
\texttt{/usr/src/linux/arch/i386/boot/zImage}.  Jedra za Linux na
sistemih Intel so vedno stisnjena.  Včasih je jedro, ki ga želite
prevesti, preveliko, da bi bilo lahko stisnjeno po metodi, ki jo
uporablja \texttt{make zImage}.  Jedro, ki je preveliko, bo izšlo iz
prevajanja jedra s sporočilom o napaki: \texttt{Kernel Image Too
Large}.  Če se to zgodi, poskusite ukaz \texttt{make bzImage}.  Ta
uporablja program za stiskanje, ki podpira tudi večja jedra.  Jedro se
zapiše v datoteko \texttt{/usr/src/linux/arch/i386/boot/bzImage}.

Ko ste enkrat prevedli jedro, ga morate prekopirati na zagonsko
disketo (z ukazom, kot >>\texttt{cp zImage /dev/fd0}<<) ali pa
namestiti sliko tako, da bo LILO lahko zaganjal sistem z vašega
trdega pogona.  Glejte stran~\pageref{sec-lilo} za več informacij.

\subsection{Dodajanje gonilnika naprave v jedro}\label{kernel-ppa-driver}

Stran~\pageref{sec-zip-backup} opisuje, kako uporabljati pogon Iomega
Zip za izdelavo rezerv.  Podpora za pogon Iomega Zip, kot za mnoge
druge naprave, ni splošno prevedena v zalogo distribucijskih jeder
Linuxa -- različnost naprav je preprosto prevelika, da bi podpirali
vse od njih v uporabnem jedru.  Vendar pa je izvorna koda za gonilnik
naprave Zip na vzporednih vratih vključena kot del distribucije
izvorne kode jedra.  Ta razdelek opisuje, kako dodati podporo za pogon
Iomega Zip na vzporednih vratih in doseči sobivanje s tiskalnikom,
priključenim na druga vzporedna vrata.

Pogoj je, da ste namestili in uspešno zgradili prilagojeno jedro za
Linux, kot je opisano v prejšnjem razdelku.

Izbor naprave \texttt{ppa} za pogon Zip kot možnost za jedro zahteva,
da odgovorite z \texttt{Y} na primerna vprašanja med korakom
\texttt{make config}, ko določate sestavo prilagojenega jedra.
Posebej pri napravi \texttt{ppa} morate odgovoriti z  >>\texttt{Y}<<
na tri izbire:
\begin{tscreen}
SCSI support? [Y/n/m] \emph{Y} \\
SCSI disk support? [Y/n/m] \emph{Y} \\
IOMEGA Parallel Port Zip Drive SCSI support? [Y/n/m] \emph{Y}
\end{tscreen}

Ko ste uspešno pognali \texttt{make config} z vsemi podpornimi
izbirami, ki jih želite vključiti v jedro, pognali \texttt{make dep},
\texttt{make clean} in \texttt{make zImage} za gradnjo jedra,
morate povedati jedru, kako naj namesti gonilnik.  To se naredi
z ukazno vrstico v zagonskem nalagalniku LILO.  Kot je bilo
opisano v razdelku~\ref{sec-lilo}, ima nastavitvena datoteka
za LILO \texttt{/etc/lilo.conf} >>kitice<< za vsak operacijski
sistem, ki ga pozna, in tudi navodila za predstavljanje teh
izbir uporabniku v času zagona.

Drugo navodilo, ki ga LILO prepozna, je >>\texttt{append=}<<, ki
dovoljuje dodajanje informacij, ki jih potrebujejo različni gonilniki
naprav, ob času zagona v ukazno vrstico.  V tem primeru gonilnik
\texttt{ppa} za Iomega Zip potrebuje neuporabljeno prekinitev (angl.\
interrupt) in naslov vrat za V/I (angl.\ I/O port address).  To je
analogno določanju različnih tiskalniških naprav, kot sta v MS-DOS-u
\texttt{LPT1:} in \texttt{LPT2:}.

Na primer, če vaš tiskalnik uporablja šestnajstiški (z osnovo 16)
naslov vrat \texttt{0x378} (glejte namestitveni priročnik za vašo
kartico vzporednih vrat, če ne veste, kakšen je naslov) in je izprašan
(angl.\ polled, se pravi, ne potrebuje linije linije IRQ, pogosta
nastavitev Linuxa), bi postavili naslednjo vrstico v vašo sistemsko
datoteko \texttt{/etc/lilo.conf}:
\begin{tscreen}
append="lp=0x378,0"
\end{tscreen}
Velja omeniti, da Linux ob zagonu samodejno prepozna ena
vrata \texttt{/dev/lp}, a ob določitvi prirejene nastavitve
vrat so potrebna navodila v času zagona.

Število >>\texttt{0}<< za naslovom vrat pove jedru, naj \emph{ne}
uporablja linije IRQ (zahteva prekinitve, angl.\ interrupt request) za
tiskalnik.  To je v splošnem sprejemljivo, saj so tiskalniki veliko
počasnejši kot procesorji, zato počasnejša metoda dostopa do V/I
naprav, znana kot \textbf{izpraševanje}\index{izpraševanje} (angl.\
polling), kjer jedro periodično na lastno pest preverja status
tiskalnika, še vedno dovoljuje računalniku, da dohaja tiskalnik.

Vendar naprave, ki delujejo na višjih hitrostih, kot so serijske
linije in diski, potrebujejo linijo \textbf{IRQ} ali linijo \textbf{za
zahtevo prekinitve}.  To je strojni signal, ki ga naprava pošlje
procesorju, kadar naprava potrebuje njegovo pozornost; na primer, če
ima naprava podatke, ki čakajo za vhod v procesor.  Procesor preneha
delati to, kar počne, in obdela zahtevo za prekinitev, ki jo je izdala
naprava.  Naprava \texttt{ppa} za pogon Zip potrebuje prosto
prekinitev, ki mora ustrezati prekinitvi, ki je nastavljena na
tiskalniški kartici, na katero povežete pogon Zip.  V času tega
pisanja gonilnik naprave \texttt{ppa} za Linux ne podpira
>>veriženja<< (angl.\ chaining) naprav na vzporednih vratih, in za
napravo \texttt{ppa} za Zip in tiskalnik se morajo uporabljati ločena
vrata.

Za ugotovitev, katere prekinitve se že uporabljajo na vašem sistemu,
ukaz
\begin{tscreen}
\# \emph{cat /proc/interrupt}
\end{tscreen}
prikaže seznam naprav in linije IRQ, ki jih uporabljajo.  Vendar
morate biti previdni, da ne uporabljate nobene od samodejno
nastavljenih prekinitev serijskih vrat, ki morda niso naštete
v datoteki \texttt{/proc/interrupt}.

Spis \emph{Serial HOWTO} (iz projekta LDP), dostopen iz virov, naštetih
v dodatku~\ref{app-sources-num}, podrobno opisuje nastavitve
serijskih vrat.

\blackdiamond
Preveriti bi morali tudi strojne nastavitve različnih vmesnih kartic
na vašem stroju -- z odpiranjem ohišja stroja in ogledom nastavitev
skakačev, če je potrebno -- da zagotovite, da ne privzemate linije
IRQ, ki jo že uporablja druga naprava.  Več naprav, ki se bojujejo za
prekinitveno linijo, je morda najpomembnejši razlog za nedelujoče
sisteme Linux.

Tipična datoteka \texttt{/proc/interrupt} je videti nekako takole:
\begin{tscreen}
 0:    6091646   timer\\
 1:      40691   keyboard\\
 2:          0   cascade\\
 4:     284686 + serial\\
13:          1   math error\\
14:     192560 + ide0
\end{tscreen}
Tukaj je zanimiv prvi stolpec.  To so številke linij IRQ, ki
se uporabljajo na sistemu.  Za gonilnik \texttt{ppa} želimo
izbrati linijo, ki \emph{ni} našteta.  Pogosto je dobra izbira
IRQ 7, saj je redko uporabljan v privzetih sistemskih nastavitvah.
Določiti moramo tudi naslov vrat, ki jih bo uporabljala naprava
\texttt{ppa}.  Ta naslov mora biti fizično nastavljen za
kartico vmesnika.  Vzporednim V/I vratom so dodeljeni posebni naslovi,
zato boste morali prebrati dokumentacijo za vašo kartico vzporednih
vrat.  V tem primeru bomo uporabljali V/I naslov vrat \texttt{0x278},
ki ustreza tiskalniškim vratom {LPT2:} pod MS-DOS-om.  Podporo za
druga vzporedna vrata in prekinitveno linijo vklopimo z naslednjo
vrstico v primerni kitici datoteke
\texttt{/etc/lilo.conf}:
\begin{tscreen}
append="lp=0x378,0 ppa=0x278,7"
\end{tscreen}
Ti stavki so pripeti začetnim parametrom jedra v času zagona.
Zagotavljajo, da se katerikoli tiskalnik, priključen na sistem, ne
vtika v delovanje pogona Zip.  Seveda, če vaš sistem nima nameščenega
tiskalnika, se navodilo >>\texttt{lp=}<< lahko izpusti in bi se tudi
moralo.

Ko namestite prirejeno jedro, kot je bilo opisano v
razdelku~\ref{sec-lilo}, in preden ponovno zaženete sistem, se
prepričajte, da ste že pognali ukaz
\begin{tscreen}
\# \emph{/sbin/lilo}
\end{tscreen}
za namestitev nove nastavitve LILO na zagonski sektor trdega pogona.

\subsection{Namestitev modula za gonilnik naprave}\label{ftape-module}

Stran~\pageref{sec-tape-backups} opisuje, kako narediti rezervne
kopije datotek na tračno enoto.  Linux ponuja podporo za različne
tračne enote z vmesniki IDE, SCSI in nekaterimi lastniškimi
vmesniki.  Drug pogosti tip tračnih enot se priključi neposredno
na krmilnik disketnega pogona.  Linux priskrbi gonilnik naprave
ftape kot modul.

V času tega pisanja je najnovejša različica gonilnika ftape 3.04d.
Paket lahko pridobite z arhiva za FTP \texttt{metalab.unc.edu} (glejte
dodatek~\ref{app-ftp} za navodila).  Arhivno datoteko za ftape najdete
v imeniku \texttt{/pub/Linux/kernel/tapes}.  Prepričajte se, da boste
vzeli najnovejšo različico.  V času tega pisanja je to
\texttt{ftape-3.04d.tar.gz}.

Po odpakiranju arhiva ftape v imenik \texttt{/usr/src} bo ukaz
\texttt{make install} v najvišjem imeniku ftape prevedel module
gonilnika in pripomočke za ftape, če je potrebno, in jih namestil.
Če izkušate združljivostne težave z izvedljivimi distribucijskimi
datotekami za ftape in vašim sistemskim jedrom ali knjižnicami,
bo izvajanje ukazov \texttt{make~clean} in \texttt{make~install}
zagotovilo, da so moduli prevedeni na vašem sistemu.

\blackdiamond
Za uporabo te različice gonilnika ftape morate imeti v jedro
prevedeno podporo modulom (angl.\ module support) kot tudi podporo
za jedrni strežnik (angl.\ kernel daemon) \texttt{kerneld}.
Vendar \emph{ne} smete vključiti zgrajene kode jedra za \texttt{ftape}
kot izbiro jedra, saj novejši modul \texttt{ftape} popolnoma nadomesti
to kodo.

Ukaz \texttt{make install} tudi namesti module gonilnikov naprav
v ustreznih imenikih.  Na standardnih sistemih Linux so moduli
locirani v imeniku
\begin{tscreen}
/lib/modules/\cparam{različica-jedra}
\end{tscreen}
Če je vaša različica jedra 2.0.30, so moduli na vašem sistemu v imeniku
\texttt{/lib/modules/2.0.30}.  Korak \texttt{make install} tudi
zagotavlja, da se ti moduli lahko najdejo, saj doda primerne stavke
v datoteko \texttt{modules.dep}, ki je locirana v najvišjem
imeniku datotek za module, v tem primeru \texttt{/lib/modules/2.0.30}.
Namestitev za ftape dodaja naslednje module na vaš sistem
(v tem primeru uporabljamo jedro različice 2.0.30):
\begin{tscreen}
/lib/modules/2.0.30/misc/ftape.o \\
/lib/modules/2.0.30/misc/zft-compressor.o \\
/lib/modules/2.0.30/misc/zftape.o
\end{tscreen}

V sistemsko nastavitveno datoteko za module morajo biti dodana tudi
navodila za nalaganje modulov.  Ta datoteka se na mnogih sistemih
imenuje \texttt{/etc/conf.modules}.  Za samodejno nalaganje modulov za
ftape na zahtevo dodajte naslednji vrstici v datoteko
\texttt{/etc/conf.modules}:
\begin{tscreen}
alias char-major-27 zftape \\
pre-install ftape /sbin/swapout 5
\end{tscreen}
Prvi stavek naloži vse module, povezane s \texttt{ftape}, če je
to potrebno, ko jedro dostopa do naprave z vélikim številom
(angl.\ major number) 27 (naprava \texttt{ftape}).  Ker podpora
za modul \texttt{zftape} (ki priskrbi samodejno stiskanje podatkov
za tračne enote) potrebuje podporo drugih modulov za ftape, so vsi
naloženi ob zahtevi jedra.  Druga vrstica določa nalagalne parametre
za module.  V tem primeru zagotavlja pripomoček \texttt{/sbin/swapout},
ki je poleg paketa \texttt{ftape}, da je dostopnega dovolj
pomnilnika DMA za delovanje gonilnika ftape.

Za dostop do naprave \texttt{ftape} morate najprej v enoto vstaviti
formatirani trak.  Navodila za formatiranje trakov in delovanje
tračne enote so podana v razdelku~\ref{sec-tape-backups}.

\subsection{Nadgradnja knjižnic}\label{sec-upgrade-libs}
\index{knjižnice!nadgradnja}
Kot smo že omenili, je večina programja na sistemu prevedena za
uporabo deljenih knjižnic, ki vsebujejo skupne podprograme, deljene
med različnimi programi.

Če vidite sporočilo o nezdružljivi različici knjižnice
\begin{tscreen}
Incompatible library version
\end{tscreen}
ko poskušate pognati program, morate knjižnice nadgraditi na različice,
ki jih potrebuje program.  Knjižnice so za nazaj združljive.  Program,
preveden za uporabo starejše različice knjižnic, bi moral delovati
tudi z nameščeno novo različico knjižnic.  Obratno ni res.

Novejše različice knjižnic lahko najdemo na mestih za FTP datotek za
Linux.  Na \texttt{metalab.unc.edu} so zbrane v imeniku
\texttt{/pub/Linux/GCC}.  Datoteke o >>izdaji<< (angl.\ release),
ki jih najdete tam, bi morale pojasniti, katere datoteke morate
vzeti in kako jih namestite.  Na kratko, morali bi vzeti datoteki
\texttt{image-\emph{različica}.tar.gz} in
\texttt{inc-\emph{različica}.tar.gz}, kjer je \emph{različica} različica
knjižnic za namestitev, kot je \texttt{4.4.1}.  To sta z \texttt{gzip}-om
stisnjeni datoteki za \texttt{tar}.  Datoteka \texttt{image} vsebuje
slike knjižnic za namestitev v imenika \texttt{/lib}
in \texttt{/usr/lib}.  Datoteka \texttt{inc} vsebuje glave
za namestitev v imenik \texttt{/usr/include}.

Datoteka \texttt{release-}\emph{različica}\texttt{.tar.gz} bi morala
podrobno pojasniti namestitveni postopek (natančna navodila se razlikujejo
z vsako izdajo).  V splošnem morate namestiti knjižnične datoteke
\texttt{.a} in \texttt{.sa} v imenik \texttt{/usr/lib}.  To so
knjižnice, ki se uporabljajo ob prevajanju.

Dodatno, datoteke \texttt{libc.so.}\emph{različica} s slikami deljenih
knjižnic se namestijo v imenik \texttt{/lib}.  To so slike deljenih
knjižnic, ki se naložijo pri poganjanju programov, ki uporabljajo
knjižnice.  Vsaka knjižnica ima simbolno povezavo in véliko številko
različice knjižnice v \texttt{/lib}.

Knjižnica \texttt{libc} različice 4.4.1 ima véliko številko različice
enako \texttt{4}.  Datoteka, ki vsebuje knjižnico, je
\texttt{libc.so.4.4.1}.  V imenik \texttt{/lib} je postavljena tudi
simbolna povezava \texttt{libc.so.4}, ki kaže na knjižnico.
Ko nadgrajujete knjižnice, morate spremeniti to simbolno povezavo.
Na primer, ko nadgrajujete iz \texttt{libc.so.4.4} na
\texttt{libc.so.4.4.1}, morate spremeniti simbolno povezavo,
da kaže na novo različico.

\blackdiamond
Simbolno povezavo morate spremeniti v enem koraku, kot je opisano
spodaj.  Če pobrišete simbolno povezavo \texttt{libc.so.4}, bodo
programi, ki so odvisni od te povezave (vključno z osnovnimi
pripomočki kot \texttt{ls} in \texttt{cat}), nehali delovati.
Uporabite naslednji ukaz za posodobljenje simbolne povezave
\texttt{libc.so.4}, da bo kazala na datoteko \texttt{libc.so.4.4.1}:
\begin{tscreen}
\# \emph{ln -sf /lib/libc.so.4.4.1 /lib/libc.so.4}
\end{tscreen}
V enakem smislu morate spremeniti tudi simbolno povezavo
\texttt{libm.so.}\emph{različica}.  Če nadgrajujete na drugačno
različico knjižnic, zgoraj vstavite primerna imena datotek.
Zapiski ob izdaji knjižnice bi morali pojasnjevati podrobnosti.
(Glejte stran~\pageref{sec-manage-links} za več informacij o
simbolnih povezavah.)

\subsection{Nadgradnja prevajalnika \texttt{gcc}}\label{sec-upgrade-gcc}
\index{gcc@\texttt{gcc}!nadgradnja}

Prevajalnik \texttt{gcc} za C in C++ se uporablja za prevajanje
programja na vašem sistemu, najpomembneje za prevajanje jedra.
Najnovejša različica prevajalnika \texttt{gcc} se nahaja na
mestih za FTP Linuxa.  Na \texttt{metalab.unc.edu} je locirana
v imeniku \texttt{/pub/Linux/GCC} (skupaj s knjižnicami).
Tam mora biti tudi datoteka \texttt{release} za distribucijo \texttt{gcc},
ki podrobno opisuje, katere datoteke morate prenesti in kako jih
namestite.  Večina distribucij (RedHat, Debian itd.) ima različice
za nadgradnjo, ki delujejo z njihovim programjem za upravljanje
programskih paketov.  V splošnem so ti paketi veliko preprostejši
za namestitev kot >>splošne<< distribucije.
 
\subsection{Nadgradnja drugega programja}

Nadgradnja drugega programja je pogosto le stvar nabiranja ustreznih
datotek in njihovega nameščanja.  Večina programja za Linux se
razširja kot stisnjene datoteke \texttt{.tar}, ki vključujejo izvorno
kodo, binarne datoteke ali oboje.  Če binarne datoteke niso vključene
v izdajo, jih boste morali prevesti sami.  To pomeni, da boste morali
vsaj vpisati \texttt{make} v imeniku z izvorno kodo.

\index{programje!kje najti izdaje}
Najpreprostejši način za obveščanje o novih izdajah programja
je branje novičarske skupine Useneta \texttt{comp.os.linux.announce}.
Ko iščete programje na mestu za FTP, je jemanje indeksne
datoteke \texttt{ls-lR} z mesta za FTP in uporaba pripomočka \texttt{grep}
za iskanje datotek, ki jih želite, najpreprostejši način za iskanje
programja.  Če vam je dostopen \texttt{archie}, vam je tudi ta lahko
v pomoč\footnote{Če nimate programa \texttt{archie}, se lahko priključite
s \texttt{telnet} na strežnik za \texttt{archie}, kot je
\texttt{archie.rutgers.edu}, se prijavite kot >>\texttt{archie}<< in
uporabite ukaz >>\texttt{help}<<.}.  Obstajajo tudi drugi viri
Interneta, ki so posvečeni posebej Linuxu.  Glejte
dodatek~\ref{app-info} za več podrobnosti.

%% One handy source of Linux software is the Slackware distribution disk
%% images. Each disk contains a number of \texttt{.tgz} files which are
%% simply gzipped tar files. Instead of downloading the disks, you can
%% download the desired \texttt{.tgz} files from the Slackware directories
%% on the FTP site and install them directly. If you run the Slackware
%% distribution, the \texttt{setup} command can be used to automatically
%% load and install a complete series of disks. 

%% Again, it's usually not a good idea to upgrade by reinstalling with
%% the newest version of Slackware, or another distribution. If you reinstall 
%% in this way, you will no doubt wreck your current installation, including 
%% user directories and all of your customized configuration. The best way
%% to upgrade software is piecewise; that is, if there is a program that
%% you use often that has a new version, upgrade it. Otherwise, don't bother.
%% Rule of thumb: If it ain't broke, don't fix it. If your current software
%% works, there's no reason to upgrade. 
\index{programje!nadgradnja|)}
\index{programje!namestitev|)}
