[ anterior ] [ Continguts ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ següent ]
El sistema d'empaquetament usa una base de dades per a seguir quins paquets hi
ha instal·lats, quins no i quins estan disponibles. El programa
apt-get
usa aquesta base de dades per a saber com instal·lar els
paquets requerits pel usuari i obtenir la informació necessària dels paquets
addicionals que seran necessaris i el seu ordre d'instal·lació per a que un
paquet funcioni correctament.
Per actualitzar aquest llistat haureu d'usar el comandament apt-get
update
. Aquest comandament cercarà els llistats de paquets en els
arxius indicats a /etc/apt/sources.list; per a més informació
quant a aquest fitxer consulteu El
fitxer /etc/apt/sources.list, Secció 2.1.
És una bona idea executar aquest comandament de forma regular per a mantindre-us informats sobre de possibles actualitzacions, en particular les actualitzacions de seguretat.
Finalment, el procés que estàveu esperant! Amb el vostre fitxer sources.list llest i el llistat de paquets disponibles al dia, tot el que haureu de fer és executar apt-get per a obtenir el paquet que desitgeu instal·lar. Per exemple, podeu executar:
# apt-get install xchat
APT cercarà a la seva base de dades per a la versió més recent de dit paquet i el descarregarà des de l'arxiu especificat al sources.list. En el cas que aquest paquet depengui de cap altre -com en aquest cas- APT en resoldrà les dependències i instal·larà els paquets necessaris. Vegeu aquest exemple:
# apt-get install nautilus Reading Package Lists... Done Building Dependency Tree... Done The following extra packages will be installed: bonobo libmedusa0 libnautilus0 The following NEW packages will be installed: bonobo libmedusa0 libnautilus0 nautilus 0 packages upgraded, 4 newly installed, 0 to remove and 1 not upgraded. Need to get 8329kB of archives. After unpacking 17.2MB will be used. Do you want to continue? [Y/n]
El paquet nautilus
depèn de les biblioteques compartides citades,
així doncs, APT les obtindrà des de l'arxiu. Si prèviament especifiqueu el nom
d'aquestes biblioteques a la línia de comandaments de apt-get, APT
no us preguntarà si desitgeu continuar; donarà automàticament per fet que
accepteu la instal·lació d'aquests paquets.
Això vol dir que APT tan sols demana confirmació si necessita instal·lar paquets que no li heu especificat a la línia de comandaments.
Les següents opcions per a apt-get poden ser d'utilitat:
-h Aquest text d'ajuda. -d Sols descàrrega - NO instal·la o desempaqueta els arxius -f Intenta continuar si falla la comprovació d'integritat -s No acta. Simula l'execució del procés ordenat -y Assumeix Si a totes les preguntes -u Mostra una llista dels paquets a actualitzar
Es poden seleccionar múltiples paquets per a instal·lar en una sola línia. Els fitxers descarregats des de la xarxa seran ubicats en el directori /var/cache/apt/archives per a la seva posterior instal·lació.
També podeu especificar paquets a eliminar a la mateixa línia de comandaments. Tan sols heu de posar un guionet "-" immediatament després del nom del paquet a eliminar, així:
# apt-get install nautilus gnome-panel- Reading Package Lists... Done Building Dependency Tree... Done The following extra packages will be installed: bonobo libmedusa0 libnautilus0 The following packages will be REMOVED: gnome-applets gnome-panel gnome-panel-data gnome-session The following NEW packages will be installed: bonobo libmedusa0 libnautilus0 nautilus 0 packages upgraded, 4 newly installed, 4 to remove and 1 not upgraded. Need to get 8329kB of archives. After unpacking 2594kB will be used. Do you want to continue? [Y/n]
Per a més detalls sobre la eliminació d'un paquet consulteu la secció Eliminació de paquets, Secció 3.3.
Si d'alguna manera malmeteu cap dels paquets instal·lats o simplement desitgeu reinstal·lar els fitxers d'un paquet amb la versió més nova que hi hagi disponible, podeu usar l'opció --reinstall tal i com es mostra:
# apt-get --reinstall install gdm Reading Package Lists... Done Building Dependency Tree... Done 0 packages upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 1 not upgraded. Need to get 0B/182kB of archives. After unpacking 0B will be used. Do you want to continue? [Y/n]
Si ja no requeriu més l'ús d'un paquet, podeu eliminar-lo del vostre sistema usant APT. Per a fer-ho simplement escriviu: apt-get remove paquet. Per exemple:
# apt-get remove gnome-panel Reading Package Lists... Done Building Dependency Tree... Done The following packages will be REMOVED: gnome-applets gnome-panel gnome-panel-data gnome-session 0 packages upgraded, 0 newly installed, 4 to remove and 1 not upgraded. Need to get 0B of archives. After unpacking 14.6MB will be freed. Do you want to continue? [Y/n]
Tal i com podreu apreciar a l'anterior exemple, APT també es fa càrrec d'eliminar paquets que en depenen preguntant-vos si els voleu eliminar. No hi ha cap manera d'eliminar un paquet usant APT sense també eliminar els paquets que en depenen.
Executant apt-get
de la manera mostrada causarà que s'eliminin
tots els paquets, però els seus fitxers de configuració, si n'hi ha cap,
romandran intactes en el sistema. Per a una eliminació completa del paquet,
executeu:
# apt-get --purge remove gnome-panel Reading Package Lists... Done Building Dependency Tree... Done The following packages will be REMOVED: gnome-applets* gnome-panel* gnome-panel-data* gnome-session* 0 packages upgraded, 0 newly installed, 4 to remove and 1 not upgraded. Need to get 0B of archives. After unpacking 14.6MB will be freed. Do you want to continue? [Y/n]
Tingueu en compte que l'asterisc "*" després dels noms indica que els fitxers de configuració per a cadascun d'aquests també seran eliminats.
A l'igual que en el cas del mètode install, podeu usar un símbol amb remove per a invertir la mesura per a un paquet en particular, si afegiu un caràcter "+" a la dreta després del nom del paquet, aquest serà instal·lat en comptes d'eliminat.
# apt-get --purge remove gnome-panel nautilus+ Reading Package Lists... Done Building Dependency Tree... Done The following extra packages will be installed: bonobo libmedusa0 libnautilus0 nautilus The following packages will be REMOVED: gnome-applets* gnome-panel* gnome-panel-data* gnome-session* The following NEW packages will be installed: bonobo libmedusa0 libnautilus0 nautilus 0 packages upgraded, 4 newly installed, 4 to remove and 1 not upgraded. Need to get 8329kB of archives. After unpacking 2594kB will be used. Do you want to continue? [Y/n]
Observeu que apt-get
llista els paquets addicionals que s'hauran
d'instal·lar (és a dir, els paquets que necessita la instal·lació del paquet
que heu solicitat), els que s'eliminaran i els que s'instal·laran (incloguen
altra vegada als paquets extra).
Les actualitzacions de paquets són una de les millors aportacions del sistema APT. Es poden realitzar des d'una única línia de comandaments: apt-get upgrade. Podeu usar aquest comandament per actualitzar els paquets de l'actual distribució, o bé, per actualitzar a una de nova, millor usar el comandament apt-get dist-upgrade; per a més detalls consulteu la secció Actualització a una nova versió, Secció 3.5.
El seu ús és de molta utilitat junt amb l'opció -u. Aquesta opció causa que APT mostri la llista completa de paquets a actualitzar. Sense, estareu actualitzant a cegues. APT descarregarà les últimes versions de cada paquet i llavors els instal·larà en l'ordre adequat. Tot i que cal ressaltar que és molt important executar prèviament el comandament apt-get update. Consulteu la secció Actualització del llistat de paquets disponibles, Secció 3.1. Observeu aquest exemple:
# apt-get -u upgrade Reading Package Lists... Done Building Dependency Tree... Done The following packages have been kept back cpp gcc lilo The following packages will be upgraded adduser ae apt autoconf debhelper dpkg-dev esound esound-common ftp indent ipchains isapnptools libaudiofile-dev libaudiofile0 libesd0 libesd0-dev libgtk1.2 libgtk1.2-dev liblockfile1 libnewt0 liborbit-dev liborbit0 libstdc++2.10-glibc2.2 libtiff3g libtiff3g-dev modconf orbit procps psmisc 29 packages upgraded, 0 newly installed, 0 to remove and 3 not upgraded. Need to get 5055B/5055kB of archives. After unpacking 1161kB will be used. Do you want to continue? [Y/n]
El procés és molt simple. Tingueu en compte que en les primeres línies apt-get indica alguns paquets que seran mantinguts. Això significa que hi ha una versió més nova però que no seran actualitzats per algun motiu. Possiblement siga per culpa a dependències trencades (un paquet del qual depenen no disposa d'una versió més nova per actualitzar) o dependències noves (el paquet ara depèn de nous paquets que no pas la versió anterior).
No hi ha una solució clara per al primer cas. Per al segon, n'hi ha prou amb executar apt-get install per al paquet en qüestió, de manera que és descarregaran les dependències. Una solució encara millor és la d'usar dist-upgrade. Consulteu la secció Actualització a una nova versió, Secció 3.5.
Aquesta característica d'APT us permet actualitzar tot un sistema Debian d'una sola vegada a través de l'Internet o des d'un CD (comprat o descarregat com a imatge ISO).
també s'usa quan es fan canvis entre les relacions dels paquets instal·lats. Amb apt-get upgrade, aquests paquets serien omesos (mantinguts).
Per exemple, suposem que esteu usant la revisió 0 de la versió stable de Debian
i que compreu un CD amb la revisió 3. En aquest punt podeu usar APT per
actualitzar el vostre sistema des del nou CD. Per a fer-ho usareu
apt-cdrom
(consultar la secció Afegir un CD-ROM al fitxer sources.list,
Secció 2.4) per afegir el CD al vostre /etc/apt/sources.list i
executareu un apt-get dist-upgrade.
És important fer menció que APT sempre cercarà la versió més recent dels paquets. Així doncs, si el vostre /etc/apt/sources.list tingués llistat un arxiu amb una versió més recent que la del CD, APT descarregaria el paquet des d'allí.
A l'exemple mostrat a la secció Actualització de paquets, Secció 3.4, observem que alguns paquets són mantinguts. Resoldrem aquest problema amb el mètode dist-upgrade:
# apt-get -u dist-upgrade Reading Package Lists... Done Building Dependency Tree... Done Calculating Upgrade... Done The following NEW packages will be installed: cpp-2.95 cron exim gcc-2.95 libident libopenldap-runtime libopenldap1 libpcre2 logrotate mailx The following packages have been kept back lilo The following packages will be upgraded adduser ae apt autoconf cpp debhelper dpkg-dev esound esound-common ftp gcc indent ipchains isapnptools libaudiofile-dev libaudiofile0 libesd0 libesd0-dev libgtk1.2 libgtk1.2-dev liblockfile1 libnewt0 liborbit-dev liborbit0 libstdc++2.10-glibc2.2 libtiff3g libtiff3g-dev modconf orbit procps psmisc 31 packages upgraded, 10 newly installed, 0 to remove and 1 not upgraded. Need to get 0B/7098kB of archives. After unpacking 3118kB will be used. Do you want to continue? [Y/n]
Observeu que ara els paquets s'actualitzaran, i que hi ha nous paquets que també seran instal·lats (les noves dependències del paquets). Tingueu també en compte que lilo seguirà mantingut. Probablement tinga un problema més seriós que una simple nova dependència. Això ho podrem esbrinar si executem:
# apt-get -u install lilo Reading Package Lists... Done Building Dependency Tree... Done The following extra packages will be installed: cron debconf exim libident libopenldap-runtime libopenldap1 libpcre2 logrotate mailx The following packages will be REMOVED: debconf-tiny The following NEW packages will be installed: cron debconf exim libident libopenldap-runtime libopenldap1 libpcre2 logrotate mailx The following packages will be upgraded lilo 1 packages upgraded, 9 newly installed, 1 to remove and 31 not upgraded. Need to get 225kB/1179kB of archives. After unpacking 2659kB will be used. Do you want to continue? [Y/n]
Tal i com es veu a sobre, lilo té un nou conflicte amb el paquet
debconf-tiny
, el qual vo dir que no podrà ser instal·lat (o
actualitzat) sense eliminar debconf-tiny.
Per a saber què manté o elimina un paquet podeu usar:
# apt-get -o Debug::pkgProblemResolver=yes dist-upgrade Reading Package Lists... Done Building Dependency Tree... Done Calculating Upgrade... Starting Starting 2 Investigating python1.5 Package python1.5 has broken dep on python1.5-base Considering python1.5-base 0 as a solution to python1.5 0 Holding Back python1.5 rather than change python1.5-base Investigating python1.5-dev Package python1.5-dev has broken dep on python1.5 Considering python1.5 0 as a solution to python1.5-dev 0 Holding Back python1.5-dev rather than change python1.5 Try to Re-Instate python1.5-dev Done Done The following packages have been kept back gs python1.5-dev 0 packages upgraded, 0 newly installed, 0 to remove and 2 not upgraded.
D'aquesta manera és fàcil advertir que el paquet python1.5-dev no pot ser instal·lat degut a una dependència insatisfeta: python1.5.
Quan instal·leu un paquet, APT descarregarà els fitxers necessaris des de les
màquines llistades al /etc/apt/sources.list, llavors els desa en un repositori
local (/var/cache/apt/archives/
), i des d'allí procedeix a la seva
instal·lació, consulteu Instal·lació de paquets, Secció
3.2.
Amb el passar del temps, dit repositori local pot créixer considerablement i
ocupar una preuada quantitat d'espai en disc. Afortunadament, APT proveeix
d'eines per a gestionar el seu repositori local: els mètodes
apt-get
clean i autoclean.
apt-get clean
ho elimina tot a excepció dels fitxers de blocat de
/var/cache/apt/archives/
i
/var/cache/apt/archives/partial/
. D'aquesta manera, si necessiteu
reinstal·lar un paquet APT haurà de descarregar-lo una altra vegada.
apt-get autoclean
tan sols elimina els fitxers de paquet que no
poden ser descarregats de nou.
El següent exemple mostra com funciona la neteja automàtica d'apt-get:
# ls /var/cache/apt/archives/logrotate* /var/cache/apt/archives/gpm* logrotate_3.5.9-7_i386.deb logrotate_3.5.9-8_i386.deb gpm_1.19.6-11_i386.deb
A /var/cache/apt/archives hi ha dos fitxers per al paquet
logrotate
i un per al paquet gpm
.
# apt-show-versions -p logrotate logrotate/stable uptodate 3.5.9-8 # apt-show-versions -p gpm gpm/stable upgradeable from 1.19.6-11 to 1.19.6-12
apt-show-versions
mostra que
logrotate_3.5.9-8_i386.deb
proveeix la versió d'actualització de
logrotate
, de manera que logrotate_3.5.9-7_i386.deb
ja no és necessari. També ens indica que gpm_1.19.6-11_i386.deb
tampoc no és necessari atés a que ja es pot descarregar una versió més recent
del paquet.
# apt-get autoclean Reading Package Lists... Done Building Dependency Tree... Done Del gpm 1.19.6-11 [145kB] Del logrotate 3.5.9-7 [26.5kB]
Finalment, apt-get autoclean tan sols elimina els fitxers antics. Per a més informació quant a apt-show consulteu Com actualitzar paquets des de versions específiques de Debian, Secció 3.9.
dselect
és un programa d'ajuda a l'usuari per a la selecció de
paquets Debian per a l'instal·lació. És considerat com un mica complicat i un
xic avorrit, però amb la pràctica podreu usar la seva interfície de ncurses
basada en consola.
Una de les característiques de dselect és que coneix com usar la capacitat dels paquets Debian per a "recomanar" i "suggerir" l'instal·lació d'altres paquets. Per a usar el programa, executeu "dselect" com a root. Escolliu "apt" com al vostre mètode d'accés. Això últim no és realment necessari, però si no esteu usant un CD-ROM i desitgeu descarregar els paquets des de l'Internet, la millor mode és usant dselect.
Per a entendre millor el seu ús, llegiu la seva documentació que es troba en la
pàgina de Debian http://www.debian.org/doc/ddp
.
Després de seleccionar els paquets amb dselect, useu:
# apt-get -u dselect-upgrade
com al següent exemple:
# apt-get -u dselect-upgrade Reading Package Lists... Done Building Dependency Tree... Done The following packages will be REMOVED: lbxproxy The following NEW packages will be installed: bonobo console-tools-libs cpp-3.0 enscript expat fingerd gcc-3.0 gcc-3.0-base icepref klogd libdigest-md5-perl libfnlib0 libft-perl libgc5-dev libgcc300 libhtml-clean-perl libltdl0-dev libsasl-modules libstdc++3.0 metamail nethack proftpd-doc psfontmgr python-newt talk tidy util-linux-locales vacation xbill xplanet-images The following packages will be upgraded debian-policy 1 packages upgraded, 30 newly installed, 1 to remove and 0 not upgraded. Need to get 7140kB of archives. After unpacking 16.3MB will be used. Do you want to continue? [Y/n]
Compareu-ho amb el que es veu en executar «apt-get dist-upgrade» en el mateix sistema:
# apt-get -u dist-upgrade Reading Package Lists... Done Building Dependency Tree... Done Calculating Upgrade... Done The following packages will be upgraded debian-policy 1 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded. Need to get 421kB of archives. After unpacking 25.6kB will be freed. Do you want to continue? [Y/n]
Observeu que la majoria de paquets seran instal·lats per causa d'un "suggeriment" o "recomanació" d'altres paquets. D'altres s'estan instal·lant o eliminant (com per exemple en el cas de lbxproxy) per les seleccions que hem realitzat mitjançant la navegació a través del llistat de paquets de dselect. Dselect pot ser una poderosa eina usada en conjunció amb APT.
Algunes vegades la gent està interessada en usar una de les versions de Debian com a distribució del sistema principal i un o més paquets d'una altra branca.
Per a establir quina és la vostra versió de Debian principal haureu d'editar el
/etc/apt/apt.conf
amb una línia com la següent:
APT::Default-Release "versió";
A on versió serà la versió de Debian que voleu usar com a distribució principal. Les versions que podeu usar són stable, testing i unstable. Per a instal·lar paquets des d'una altra versió podeu usar APT de la següent manera:
# apt-get -t distribució install paquet
Per a que això funcioni, almenys necessitareu incloure una línia font per a APT
en el vostre /etc/apt/sources.list
per a la distribució de la qual
voleu el paquet, i dit paquet haurà d'existir en la font.
També podreu requerir una versió específica d'un paquet usant la següent sintaxi:
# apt-get install paquet=versió
Per exemple, a la línia de a sota s'instal·larà la versió 2.2.4-1
del paquet nautilus
:
# apt-get install nautilus=2.2.4-1
IMPORTANT: La versió "unstable" de Debian és la versió en la que primer es pugen els paquets de Debian. En definitiva és la que veu tots els canvis que aniran als paquets, uns petits i d'altres més dràstics doncs afectaran a tot el sistema. Per aquest motiu, aquesta versió de la distribució no hauria de ser emprada per usuaris sense experiència o pels que necessiten proveir-se d'un sistema estable.
La distribució "testing" no és necessàriament millor que "unstable", això és deu a que no reb ràpidament les actualitzacions de seguretat. Per a servidors i d'altres sistemes en producció sempre s'hauria d'usar stable.
apt-show-versions
proveeix d'una manera segura per actualitzar
sistemes híbrids sense tenir que obtenir una distribució menys estable de la
que tenien pensada. Per exemple, és possible actualitzar tan sols els vostres
paquets de unstable després de tenir instal·lat el paquet
apt-show-versions
:
# apt-get install `apt-show-versions -u -b | grep unstable`
Possiblement tindreu l'ocasió de modificar quelcom en un programa i no disposareu de prou temps per a portar dits canvis cap a la nova versió del programa. O, podria ser que hagueu actualitzat la vostra distribució de Debian a 3.0, però alguns paquets tingan que continuar amb la versió que hi ha a la Debian 2.2. Podeu "marcar" la versió que ha de restar instal·lada de manera que aquesta no siga actualitzada.
L'ús d'aquest recurs és simple. Sols necessitareu editar el fitxer /etc/apt/preferences.
El format és simple:
Package: <paquet> Pin: <marca de definició> Pin-Priority: <marca de prioritat>
Per exemple, per a mantenir el paquet sylpheed
que he modificat
per a usar "reply-to-list" en la seva versió 0.4.99, afegeixo:
Package: sylpheed Pin: version 0.4.99*
Observeu que he usat un * (asterisc). Aquest és un "jòquer", el qual especifica que desitjo que aquesta "marca" siga vàlida per a totes les versions que comencin per 0.4.99. Això és fa així per culpa de les versions Debian d'aquest paquet amb una "revisió Debian" i quan no desitjo bloquejar l'instal·lació de les esmentades revisions. Així doncs, les revisions 0.4.99-1 i 0.4.99-10 seran instal·lades tan aviat com estigan disponibles. Tingueu en compte que si vàreu modificar el programa no voldreu fer això.
El camp Pin-Priority és opcional; si no s'especifica, està per omissió a 989.
Ara veurem com funcionen les prioritats de "marca". Una prioritat menor que 0 indica que el paquet no hauria d'instal·lar-se mai. Les prioritats de 0 a 100 denoten paquets que no estan instal·lats i que no tenen versions disponibles. Aquests no estaran presents en el procés d'escollir versions. La prioritat 100 és assignada a un paquet instal·lat - per a la versió instal·lada que serà reemplaçada per una versió diferent, el reemplaç haurà de tenir una prioritat major que 100.
Les prioritats majors que 100 indiquen que el paquet ha de ser instal·lat. Típicament, la versió instal·lada d'un paquet només canvia al ser actualitzada a una nova versió. Qualsevol prioritat entre 100 i 1000 (inclusiu) indica aquest típic comportament. Un paquet amb dita prioritat no serà degradat per una versió anterior disponible cap a un número de versió menor. Per exemple, si teniu instal·lat sylpheed 0.5.3 i definiu la marca com a sylpheed 0.4.99 amb prioritat 999, el paquet 0.4.99 no serà instal·lat per a satisfer dita marca. Per a fer "degradable" a un paquet, satisfent la marca, aquesta necessita posseir una prioritat major que 1000.
Una marca pot ser especificada sobre la versió, versió de Debian o a l'origen d'un paquet.
Marcant sobre una versió, tal i com hem vist, suporta els números de versió literalment així com l'ús de jòquers per a especificar diversos números de versió a la vegada.
L'opció release dependrà del fitxer Release d'una rèplica APT o del d'un CD. Aquesta opció podria no ser de molta utilitat si esteu usant repositoris de paquets que no proveeixin aquest fitxer. Podeu veure el contingut dels fitxers Release que teniu en /var/lib/apt/lists/. Els seus paràmetres són: a (arxiu), c (components), v (versió), o (origen) i l (nivell).
Un exemple:
Package: * Pin: release v=2.2*,a=stable,c=main,o=Debian,l=Debian Pin-Priority: 1001
En aquest exemple, escollim la versió 2.2* of Debian (la qual pot ser 2.2r2, 2.2r3 -- això són "versions puntuals" que típicament inclouen adobs de seguretat i d'altres actualitzacions importants), el repositori stable, secció main (com a oposada a contrib o non-free) i origen i nivell de Debian. L'origen (o=) defineix qui va crear el fitxer Release, el nivell (l=) defineix el nom de la distribució: Debian per a Debian mateix i Progeny per a Progeny, per exemple. Exemple d'un fitxer Release:
$ cat /var/lib/apt/lists/ftp.debian.org.br_debian_dists_potato_main_binary-i386_Release Archive: stable Version: 2.2r3 Component: main Origin: Debian Label: Debian Architecture: i386
[ anterior ] [ Continguts ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ següent ]
APT HOWTO
1.8.5 - Juliol de 2003kov@debian.org
bella5 AT teleline DOT es
orestes AT tsc.upc DOT es