Comprendre APT, APT-Cache i les seves ordres d'ús freqüent


Si alguna vegada heu utilitzat Debian o una distribució basada en Debian com Ubuntu o Linux Mint, és probable que hàgiu utilitzat el sistema de paquets APT per instal·lar o eliminar programari. Fins i tot si mai no heu treballat amb la línia d'ordres, el sistema subjacent que alimenta la vostra GUI del gestor de paquets és el sistema APT.

Avui, donarem un cop d'ull a algunes ordres familiars i endinsar-nos en algunes ordres APT d'ús menys o més freqüent, i donarem una mica de llum sobre aquest sistema de disseny brillant.

Què és l'APT?

APT significa Advanced Package Tool. Es va veure per primera vegada a Debian 2.1 l'any 1999. Essencialment, APT és un sistema de gestió per a paquets dpkg, com es veu amb l'extensió *.deb. Va ser dissenyat no només per gestionar paquets i actualitzacions, sinó per resoldre molts problemes de dependència en instal·lar determinats paquets.

Com qualsevol que feia servir Linux en aquells dies de pioners, estàvem massa familiaritzats amb el terme infern de dependència quan intentàvem compilar alguna cosa des de la font, o fins i tot quan tractem amb diversos fitxers RPM individuals de Red Hat.

APT va resoldre tots aquests problemes de dependència automàticament, fent que la instal·lació de qualsevol paquet, independentment de la mida o el nombre de dependències, fos una ordre d'una línia. Per a aquells que hem treballat durant hores en aquestes tasques, aquest va ser un d'aquells moments del \sol que separa els núvols de la nostra vida Linux!

Entendre la configuració de l'APT

Aquest primer fitxer que veurem és un dels fitxers de configuració d'APT.

$ sudo cat /etc/apt/sources.list
deb http://us-west-2.ec2.archive.ubuntu.com/ubuntu/ precise main
deb-src http://us-west-2.ec2.archive.ubuntu.com/ubuntu/ precise main

deb http://us-west-2.ec2.archive.ubuntu.com/ubuntu/ precise-updates main
deb-src http://us-west-2.ec2.archive.ubuntu.com/ubuntu/ precise-updates main

deb http://us-west-2.ec2.archive.ubuntu.com/ubuntu/ precise universe
deb-src http://us-west-2.ec2.archive.ubuntu.com/ubuntu/ precise universe
deb http://us-west-2.ec2.archive.ubuntu.com/ubuntu/ precise-updates universe
deb-src http://us-west-2.ec2.archive.ubuntu.com/ubuntu/ precise-updates universe

deb http://security.ubuntu.com/ubuntu precise-security main
deb-src http://security.ubuntu.com/ubuntu precise-security main
deb http://security.ubuntu.com/ubuntu precise-security universe
deb-src http://security.ubuntu.com/ubuntu precise-security universe

Com probablement podeu deduir del meu fitxer sources.list, estic fent servir Ubuntu 12.04 (Precise Pangolin). També estic utilitzant tres repositoris:

  1. Repositori principal
  2. Repositori de l'Univers
  3. Repositori de seguretat d'Ubuntu

La sintaxi d'aquest fitxer és relativament simple:

deb (url) release repository

La línia que l'acompanya és el dipòsit de fitxers font. Segueix un format similar:

deb-src (url) release repository

Aquest fitxer és pràcticament l'únic que haureu d'editar amb APT, i és probable que els valors predeterminats us serviran bastant bé i no haureu d'editar-lo mai.

Tanmateix, hi ha vegades que potser voldreu afegir repositoris de tercers. Simplement els introduïu amb el mateix format i, a continuació, executeu l'ordre d'actualització:

$ sudo apt-get update

NOTA: Tingueu molt en compte d'afegir repositoris de tercers!!! Afegiu només de fonts fiables i de bona reputació. Afegir dipòsits poc fiables o barrejar versions pot fer malbé el vostre sistema!

Hem donat un cop d'ull al nostre fitxer sources.list i ara sabem com actualitzar-lo, així que què passa? Instal·lem alguns paquets. Diguem que estem executant un servidor i volem instal·lar WordPress. Primer cerquem el paquet:

$ sudo apt-cache search wordpress
blogilo - graphical blogging client
drivel - Blogging client for the GNOME desktop
drupal6-mod-views - views modules for Drupal 6
drupal6-thm-arthemia - arthemia theme for Drupal 6
gnome-blog - GNOME application to post to weblog entries
lekhonee-gnome - desktop client for wordpress blogs
libmarkdown-php - PHP library for rendering Markdown data
qtm - Web-log interface program
tomboy-blogposter - Tomboy add-in for posting notes to a blog
wordpress - weblog manager
wordpress-l10n - weblog manager - language files
wordpress-openid - OpenID plugin for WordPress
wordpress-shibboleth - Shibboleth plugin for WordPress
wordpress-xrds-simple - XRDS-Simple plugin for WordPress
zine - Python powered blog engine

Què és APT-Cache?

Apt-cache és una ordre que simplement consulta la memòria cau APT. Li vam passar el paràmetre de cerca, indicant que, òbviament, el volem cercar a APT. Com podem veure més amunt, la cerca de \wordpress va retornar una sèrie de paquets relacionats amb la cadena de cerca amb una breu descripció de cada paquet.

A partir d'això, veiem el paquet principal de \wordpress - gestor de blocs web, i volem instal·lar-lo. Però no seria bo veure exactament quines dependències s'instal·laran juntament amb ell? APT ens pot dir que també:

$ sudo apt-cache showpkg wordpress
Versions:
3.3.1+dfsg-1 (/var/lib/apt/lists/us-west-2.ec2.archive.ubuntu.com_ubuntu_dists_precise_universe_binary-amd64_Packages)
 Description Language:
                 File: /var/lib/apt/lists/us-west-2.ec2.archive.ubuntu.com_ubuntu_dists_precise_universe_binary-amd64_Packages
                  MD5: 3558d680fa97c6a3f32c5c5e9f4a182a
 Description Language: en
                 File: /var/lib/apt/lists/us-west-2.ec2.archive.ubuntu.com_ubuntu_dists_precise_universe_i18n_Translation-en
                  MD5: 3558d680fa97c6a3f32c5c5e9f4a182a

Reverse Depends:
  wordpress-xrds-simple,wordpress
  wordpress-shibboleth,wordpress 2.8
  wordpress-openid,wordpress
  wordpress-l10n,wordpress 2.8.4-2
Dependencies:
3.3.1+dfsg-1 - libjs-cropper (2 1.2.1) libjs-prototype (2 1.7.0) libjs-scriptaculous (2 1.9.0) libphp-phpmailer (2 5.1) libphp-simplepie (2 1.2) libphp-snoopy (2 1.2.4) tinymce (2 3.4.3.2+dfsg0) apache2 (16 (null)) httpd (0 (null)) mysql-client (0 (null)) libapache2-mod-php5 (16 (null)) php5 (0 (null)) php5-mysql (0 (null)) php5-gd (0 (null)) mysql-server (2 5.0.15) wordpress-l10n (0 (null))
Provides:
3.3.1+dfsg-1 -
Reverse Provides:

Això ens mostra que wordpress 3.3.1 és la versió que s'ha d'instal·lar, el repositori des del qual s'ha d'instal·lar, les dependències inverses i altres paquets dels quals depèn, més els seus números de versió.

NOTA: (nul significa que la versió no està definida i s'instal·larà la darrera versió del repositori.)

Ara, l'ordre d'instal·lació real:

$ sudo apt-get install wordpress

Aquesta ordre instal·larà WordPress-3.3.1 i totes les dependències que no estiguin instal·lades actualment.

Per descomptat, això no és tot el que podeu fer amb APT. Algunes altres ordres útils són les següents:

NOTA: És una bona pràctica executar apt-get update abans d'executar qualsevol sèrie d'ordres APT. Recordeu que apt-get update analitza el vostre fitxer /etc/apt/sources.list i actualitza la seva base de dades.

Desinstal·lar un paquet és tan fàcil com instal·lar-lo:

$ sudo apt-get remove wordpress

Malauradament, l'ordre apt-get remove deixa tots els fitxers de configuració intactes. Per eliminar-los també, voldreu utilitzar apt-get purge:

$ sudo apt-get purge wordpress

De tant en tant, podeu trobar-vos amb una situació en què hi ha dependències trencades. Això sol passar quan no executeu apt-get update correctament, alterant la base de dades. Afortunadament, APT té una solució:

$ sudo apt-get –f install

Com que APT baixa tots els fitxers *.deb del dipòsit directament a la vostra màquina (els emmagatzema a /var/cache/apt/archives), potser voldreu eliminar-los periòdicament per alliberar espai al disc:

$ sudo apt-get clean

Aquesta és només una petita fracció d'APT, APT-Cache i algunes de les seves ordres útils. Encara hi ha molt per aprendre i explorar algunes ordres més avançades a l'article següent.

  1. 25 ordres útils i avançades d'APT-GET i APT-CACHE

Com sempre, si us plau, fes una ullada a les pàgines de manual per veure encara més opcions. Un cop s'ha familiaritzat amb APT, és possible escriure scripts de Cron fantàstics per mantenir el sistema actualitzat.