El Com es fa de l'APT/Tracte amb els paquets
Actualització del llistat de paquets disponibles
modificaEl 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ó perquè 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.
Instal·lació de paquets
modificaFinalment, 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 d'ordres 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 d'ordres.
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 d'ordres. 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 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]
Eliminació de paquets
modificaSi 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 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.
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).
Actualització de paquets
modificaLes actualitzacions de paquets són una de les millors aportacions del sistema APT. Es poden realitzar des d'una única línia d'ordres: 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.
Actualització a una nova versió
modificaAquesta 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 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.
Eliminació dels fitxers de paquet no usats: apt-get clean i autoclean
modificaQuan 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.
L'ús d'APT amb dselect
modificadselect é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.
Com mantenir un sistema híbrid
modificaAlgunes 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
Perquè 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.
Com actualitzar paquets des de versions específiques de Debian
modificaapt-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`
Com mantenir versions específiques de paquets instal·lats (complex)
modificaPossiblement 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 hàgiu 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 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
Crèdits de la versió original - Projecte de documentació de Debian
Gustavo Noronha Silva kov@debian.org Traduït per: Antoni Bella Perez bella5 AT teleline DOT es Revisat per: Orestes Mas orestes AT tsc.upc DOT es |