Gestión de paquetes - IES Gonzalo Nazareno
Transcripción
Gestión de paquetes - IES Gonzalo Nazareno
G estión de paquetes uso de apt en la terminal Versión 1.0 Manuel F.Viera Tirado 02/12/2007 Copyright© 2007 Manuel F. Viera Tirado Este programa es Software Libre; usted puede redistribuirlo y/o modificarlo bajo los términos de la "GNU General Public License" como lo publica la "FSF Free Software Foundation", o (a su elección) de cualquier versión posterior. Este programa es distribuido con la esperanza de que le será útil, pero SIN NINGUNA GARANTIA; incluso sin la garantía implícita por el MERCADEO o EJERCICIO DE ALGUN PROPOSITO en particular. Vea la "GNU General Public License" para más detalles. Usted debe haber recibido una copia de la "GNU General Public License" junto con este programa, si no, escriba a la "FSF Free Software Foundation, Inc.", 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Para el propósito de la aplicación de la GPL a este documento, considero que el término "Código fuente" se refiere al texto con formato odt y "Código objeto" a los archivos info, tex, dvi, pdf, y Postscript generados. Tabla de contenidos 1 Introducción 1.1 ¿Qué es un paquete? 1.2 ¿Qué es una dependencia? 1.3 ¿Qué es un gestor de paquetes? 1.4 Funcionamiento de APT 1.4.1 ¿Qué es un repositorio? 2 Uso de APT en la terminal 2.1 apt-cdrom 2.2 apt-get 2.3 apt-cache 3 Añadiendo un nuevo repositorio 4 Front-ends de APT 1 Introducción En los comienzos de GNU/Linux solamente existían los paquetes .tar.gz. De esta forma los usuarios tenían que compilar cada programa que quisieran usar en su sistema GNU/Linux. Pero esto no era tan simple como parece ya que un programa podía tener varias dependencias, por lo que antes de compilar el programa en cuestión había que leer el fichero README adjunto para ver dichas dependencias, descargarlas, compilarlas e instalarlas antes de compilar e instalar el programa en cuestión. La instalación de un programa podría llegar a ser tediosa al tener varias dependencias y que a su vez estas dependencias tuviesen otras dependencias por su parte. Para facilitar este trabajo al crearse Debian se incluyó un programa para gestionar la paquetería instalada en el sistema. Este programa se llamó dpkg, a través del cual se instalarían y desinstalarían paquetes del sistema. Así fue creado el primer “paquete” en GNU/Linux. A raíz de lo dicho anteriormente, podemos diferenciar 2 ramas importantes de paquetes: ➢ Paquetes .rpm: gestionados por la aplicación 'rpm' propia de distribuciones comerciales como Red Hat, Suse, Mandriva, etc. ➢ Paquetes .deb: gestionados por la aplicación 'dpkg' propia de Debian y todas las distribuciones basadas en esta. NOTA: Además de las anteriores existen más ramas de paquetes, como por ejemplo, la propia de Gentoo. 1.1 ¿Qué es un paquete? Un paquete no es más que un archivador (también llamado 'ar') que contiene varios ficheros dentro como si de uno sólo se tratase. Este paquete normalmente suele traer una versión precompilada del software a instalar, aunque puede descargarse también las fuentes para compilarlo manualmente. Los paquetes que utiliza Debian son deb y normalmente están compuestos por varios ficheros: ➢ debian-binary: versión del formato deb. ➢ control.tar.gz: contiene toda la metainformación del paquete (dependencias, etc). ➢ data.tar.gz: contiene los ficheros que se instalan en el sistema. 1.2 ¿Qué es una dependencia? Una dependencia es aquel paquete/programa necesario por otro paquete para poder funcionar correctamente. Según la filosofía de GNU/Linux, un paquete (programa) solamente tiene una única función en el sistema. Al tener una sola función puede ser utilizada en cualquier momento por otro paquete en cuanto le sea necesario. Esta modularización hace que un paquete dependa de otro para poder funcionar, y de esta forma no vamos a tener dos programas que realicen la misma función en el sistema sino un mismo programa accesible por todos los demás. Como hemos dicho anteriormente, para que un paquete pueda ser instalado correctamente deben cumplirse todas sus dependencias. 1.3 ¿Qué es un gestor de paquetes? El gestor de paquetes es un software que se encarga de la instalación/desinstalación de paquetes del sistema, resolviendo a su vez todas las dependencias de un determinado paquete. En Debian el gestor de paquetes se llama APT (Advanced Packaging Tool). 1.4 Funcionamiento de APT Como hemos comentado anteriormente, en los inicios de GNU/Linux los usuarios tenían que compilar sus programas para poder hacer uso de ellos y resolver las dependencias de estos de forma manual. Cuando apareció Debian, esta contaba con un programa llamado 'dpkg' encargado de manejar los paquetes en el sistema. De esta forma, el usuario ya no tenía que compilar sus programas si no que se adquiría un paquete con extensión .deb ya precompilado (lo cual no quiere decir que no se siguiese utilizando la compilación de programas). Pero dpkg tenía un problema, y es que no resuelve las dependencias de un paquete, es decir, dpkg solo instala, desinstala y muestra información acerca de paquetes. Si un paquete tiene una dependencia tendremos que adquirir dicha dependencia (descargarla manualmente) e instalarla para poder continuar con la instalación del paquete. Para facilitar, mejorar y conseguir una gestión de paquetes mucho más eficiente Debian comenzó a utilizar una herramienta llamada APT (Advanced Packaging Tool = Herramienta Avanzada de Empaquetamiento). Esta herramienta innovó en la gestión de paquetes debido a que resuelve las dependencias de un determinado paquete y se basa en repositorios para descargar los paquetes y dependencias a instalar. Debido a que dpkg es una herramienta de bajo nivel, se necesitaba una aplicación de alto nivel que se encargase de resolver las dependencias y descargar los paquetes de lugares remotos. Por lo tanto hay que aclarar que APT NO instala paquetes, sino que solamente se encarga de resolver las dependencias y descargarlas de servidores remotos (también llamados repositorios). 1.4.1 ¿Qué es un repositorio? Un repositorio es un servidor remoto donde se encuentran alojados todos los paquetes de una determinada distribución GNU/Linux. Normalmente estos repositorios permiten la descargar de paquetes mediante varios protocolos como http o ftp. Un repositorio no tiene por qué contener solamente los paquetes de una distribución, es más normalmente contienen los paquetes de varias distribuciones. Además de contener paquetes, en estos repositorios podemos encontrar imágenes iso de la distribución listas para descargar a través de http, ftp, bitTorrent, jigdo, etc. El funcionamiento de APT (como hemos dicho anteriormente) se basa en el uso de una lista de repositorios desde los cuales va a poder descargar los paquetes y dependencias. Esta lista de repositorios se configura en el fichero /etc/apt/sources.list. Ejemplo de fichero sources.list #Repositorio CICA deb http://ftp.cica.es/debian/ etch main contrib non-free deb-src http://ftp.cica.es/debian/ etch main contrib non-free #Repositorios de seguridad deb http://security.debian.org/ etch/updates main contrib deb-src http://security.debian.org/ etch/updates main contrib APT se descarga el índice de paquetes de los repositorios que tenemos configurados para poder realizar búsquedas de paquetes. Cuando decidimos instalar un paquete, APT se lo descarga de los repositorios junto con sus dependencias y los almacena en el directorio /var/cache/apt/archives. Una vez descargado el paquete y sus dependencias, APT le pasa el turno a dpkg el cual se encarga de instalarlos en el sistema. Resumiendo, APT y dpkg trabajan en equipo y por turnos; APT se encarga de resolver las dependencias y descargar los paquetes y dpkg los instala en el sistema. 2 Uso de APT en la terminal Para poder usar APT desde la terminal debemos conocer las instrucciones básicas, que son las siguientes: 2.1 apt-cdrom Nos permite añadir un cd o dvd como repositorio de paquetes. Esta opción es bastante útil cuando estamos usando un equipo que no tiene acceso a internet, de esta forma vamos a poder instalar paquetes desde los cds o dvds de la propia distribución. La opción más importante de esta instrucción es add. Su sintaxis de uso es: #apt-cdrom add Cuando ejecutamos los anterior en la terminal, apt automáticamente escaneará el cd / dvd en busca de paquetes y creará un índice para su posterior uso. Veamos que ocurre en la terminal: blackr:/home/imanu# apt-cdrom add Usando el punto de montaje del CD-ROM /cdrom/ Desmontando el CD-ROM Esperando el disco... Por favor inserte un disco en la unidad y presione Intro Montando el CD-ROM... Identificando.. [6689021057ce64953ac7d1fb8eba8cfe-2] Buscando en el disco archivos de índices... Se encontraron 2 índices de paquetes, 0 de fuentes y 0 firmas Found label 'Debian GNU/Linux 4.0 r0 _Etch_ - Official i386 DVD Binary-1 20070407-11:40' Este disco se llama: 'Debian GNU/Linux 4.0 r0 _Etch_ - Official i386 DVD Binary-1 20070407-11:40' Reading Package Indexes... Hecho.. Escribiendo nueva lista de fuente Las entradas de la lista de fuentes para este disco son: deb cdrom:[Debian GNU/Linux 4.0 r0 _Etch_ - Official i386 DVD Binary-1 20070407-11:40]/ etch contrib main Desmontando CD-ROM...Repita este proceso para el resto de los CDs del conjunto. Una vez finalizado, si miramos el fichero /etc/apt/sources.list podemos ver que se ha añadido un nuevo repositorio. blackr:/home/imanu# cat /etc/apt/sources.list deb cdrom:[Debian GNU/Linux 4.0 r0 _Etch_ - Official i386 DVD Binary-1 20070407-11:40]/ etch contrib main deb http://ftp.cica.es/debian/ etch main contrib non-free deb-src http://ftp.cica.es/debian/ etch main contrib non-free deb http://security.debian.org/ etch/updates main contrib deb-src http://security.debian.org/ etch/updates main contrib 2.2 apt-get apt-get es la herramienta que se usa para el manejo de paquetes. Siempre debemos especificar una de las siguientes órdenes a menos que usemos -h o --help. 2.2.1 update update se utiliza para actualizar el índice de paquetes local con respecto a los repositorios configurados en /etc/apt/sources.list. El índice de paquetes se descarga en un fichero llamado Packages.gz. Es importante que realicemos un update cada vez que hagamos cambios en el fichero sources.list. La sintaxis de uso es la siguiente: #apt-get update Veamos un ejemplo en la terminal. blackr:/home/imanu# apt-get update Des:1 http://ftp.cica.es etch Release.gpg [378B] Obj http://ftp.cica.es etch Release Des:2 http://security.debian.org etch/updates Release.gpg [189B] Ign http://ftp.cica.es etch/main Packages/DiffIndex Des:3 http://security.debian.org etch/updates Release [22,5kB] Ign http://security.debian.org etch/updates/main Packages/DiffIndex Ign http://security.debian.org etch/updates/contrib Packages/DiffIndex Ign http://security.debian.org etch/updates/main Sources/DiffIndex Ign http://security.debian.org etch/updates/contrib Sources/DiffIndex Des:4 http://security.debian.org etch/updates/main Packages [179kB] Obj http://security.debian.org etch/updates/contrib Packages Des:5 http://security.debian.org etch/updates/main Sources [24,7kB] Obj http://security.debian.org etch/updates/contrib Sources Ign http://ftp.cica.es etch/contrib Packages/DiffIndex Ign http://ftp.cica.es etch/non-free Packages/DiffIndex Ign http://ftp.cica.es etch/main Sources/DiffIndex Ign http://ftp.cica.es etch/contrib Sources/DiffIndex Ign http://ftp.cica.es etch/non-free Sources/DiffIndex Obj http://ftp.cica.es etch/main Packages Obj http://ftp.cica.es etch/contrib Packages Obj http://ftp.cica.es etch/non-free Packages Obj http://ftp.cica.es etch/main Sources Obj http://ftp.cica.es etch/contrib Sources Obj http://ftp.cica.es etch/non-free Sources Descargados 227kB en 21s (10,6kB/s) Leyendo lista de paquetes... Hecho Como podemos observar con apt-get update, APT se conecta a los repositorios y descarga todo el índice de paquetes actualizado. 2.2.2 upgrade Con upgrade podemos actualizar todos los paquetes de nuestra distribución a su versión más actualizada en los repositorios. Si lo que queremos es actualizar la versión de nuestra distribución, también podemos hacerlo con upgrade, pero no se van a resolver las dependencias de los paquetes de la nueva distribución, por lo que pueden quedar paquetes obsoletos que en la nueva distribución no se utilicen. Para resolver este “problema” deberemos utilizar la orden dist-upgrade. Un detalle importante a la hora de utilizar upgrade o dist-upgrade es el uso de la opción -u mediante la cual indicamos a apt-get que nos muestre la lista completa de paquetes que va a actualizar. Si no especificamos esta opción no sabemos qué paquetes se van a actualizar, es decir, actualizaremos “a ciegas”. La sintaxis de uso es similar a la de update: • #apt-get [-u] upgrade • #apt-get [-u] dist-upgrade NOTA: es conveniente que antes de ejecutar un apt-get upgrade / dist-upgrade, actualicemos los índices de paquetes con apt-get update. 2.2.3 install La orden install instala los paquetes que se especifican a partir de la palabra install. La sintaxis es la siguiente: #apt-get install paquete1 paquete2 paqueteN El nombre del paquete no es el nombre_paquete+versión.deb, sino sólo el nombre del paquete. Por ejemplo, el nombre del paquete sería libc6 y no libc6_1.9.6-2.deb. Veamos un ejemplo práctico, instalaremos el juego supertuxkart. Para ello ejecutaremos: blackr:/home/imanu# apt-get install supertuxkart Leyendo lista de paquetes... Hecho Creando árbol de dependencias... Hecho Se instalarán los siguientes paquetes extras: freeglut3 plib1.8.4c2 supertuxkart-data Se instalarán los siguientes paquetes NUEVOS: freeglut3 plib1.8.4c2 supertuxkart supertuxkart-data 0 actualizados, 4 se instalarán, 0 para eliminar y 14 no actualizados. Necesito descargar 11,2MB de archivos. Se utilizarán 23,3MB de espacio de disco adicional después de desempaquetar. ¿Desea continuar [S/n]? s Des:1 http://ftp.cica.es etch/main freeglut3 2.4.0-5 [88,5kB] Des:2 http://ftp.cica.es etch/main plib1.8.4c2 1.8.4-6 [639kB] Des:3 http://ftp.cica.es etch/main supertuxkart-data 0.2-1 [10,3MB] Des:4 http://ftp.cica.es etch/main supertuxkart 0.2-1 [182kB] Descargados 11,2MB en 6m11s (30,1kB/s) Seleccionando el paquete freeglut3 previamente no seleccionado. (Leyendo la base de datos ... 78313 ficheros y directorios instalados actualmente.) Desempaquetando freeglut3 (de .../freeglut3_2.4.0-5_i386.deb) ... Seleccionando el paquete plib1.8.4c2 previamente no seleccionado. Desempaquetando plib1.8.4c2 (de .../plib1.8.4c2_1.8.4-6_i386.deb) ... Seleccionando el paquete supertuxkart-data previamente no seleccionado. Desempaquetando supertuxkart-data (de .../supertuxkart-data_0.2-1_all.deb) ... Seleccionando el paquete supertuxkart previamente no seleccionado. Desempaquetando supertuxkart (de .../supertuxkart_0.2-1_i386.deb) ... Configurando freeglut3 (2.4.0-5) ... Configurando plib1.8.4c2 (1.8.4-6) ... Configurando supertuxkart-data (0.2-1) ... Configurando supertuxkart (0.2-1) ... blackr:/home/imanu# ¿Qué es lo que ha ocurrido? Cuando le hemos dicho a APT “quiero instalar el paquete supertuxkart”, APT automáticamente ha resuelto las dependencias y te avisa con los paquetes que son necesarios instalar. Se instalarán los siguientes paquetes extras: freeglut3 plib1.8.4c2 supertuxkart-data Se instalarán los siguientes paquetes NUEVOS: freeglut3 plib1.8.4c2 supertuxkart supertuxkart-data Una vez que nosotros damos el visto bueno, APT continua con la instalación y lo que hace es descargar cada uno de los paquetes de los repositorios. Des:1 http://ftp.cica.es etch/main freeglut3 2.4.0-5 [88,5kB] Des:2 http://ftp.cica.es etch/main plib1.8.4c2 1.8.4-6 [639kB] Des:3 http://ftp.cica.es etch/main supertuxkart-data 0.2-1 [10,3MB] Des:4 http://ftp.cica.es etch/main supertuxkart 0.2-1 [182kB] Descargados 11,2MB en 6m11s (30,1kB/s) Descargados los paquetes, se procede a la instalación y configuración de estos en el sistema Seleccionando el paquete freeglut3 previamente no seleccionado. (Leyendo la base de datos ... 78313 ficheros y directorios instalados actualmente.) Desempaquetando freeglut3 (de .../freeglut3_2.4.0-5_i386.deb) ... Seleccionando el paquete plib1.8.4c2 previamente no seleccionado. Desempaquetando plib1.8.4c2 (de .../plib1.8.4c2_1.8.4-6_i386.deb) ... Seleccionando el paquete supertuxkart-data previamente no seleccionado. Desempaquetando supertuxkart-data (de .../supertuxkart-data_0.2-1_all.deb) ... Seleccionando el paquete supertuxkart previamente no seleccionado. Desempaquetando supertuxkart (de .../supertuxkart_0.2-1_i386.deb) ... Configurando freeglut3 (2.4.0-5) ... Configurando plib1.8.4c2 (1.8.4-6) ... Configurando supertuxkart-data (0.2-1) ... Configurando supertuxkart (0.2-1) ... Ahora ya tenemos instalados los paquetes y podemos usarlo cuando queramos desde una terminal o mediante Alt+F2 y escribiendo el nombre de la aplicación, en este caso, supertuxkart. 2.2.4 remove Desinstala todos los paquetes que se especifiquen detrás de la palabra remove y todas las dependencias de estos. La sintaxis es similar a la de install: #apt-get remove paquete1 paquete2 paqueteN Veamos un ejemplo práctico, desinstalaremos el juego que instalamos antes. blackr:/home/imanu# apt-get --purge remove supertuxkart* Leyendo lista de paquetes... Hecho Creando árbol de dependencias... Hecho Nota, seleccionando supertuxkart para la expresión regular 'supertuxkart*' Nota, seleccionando supertuxkart-data para la expresión regular 'supertuxkart*' Los siguientes paquetes se ELIMINARÁN: supertuxkart* supertuxkart-data* 0 actualizados, 0 se instalarán, 2 para eliminar y 14 no actualizados. Necesito descargar 0B de archivos. Se liberarán 21,3MB después de desempaquetar. ¿Desea continuar [S/n]? (Leyendo la base de datos ... 78683 ficheros y directorios instalados actualmente.) Desinstalando supertuxkart ... Purgando ficheros de configuración de supertuxkart ... Desinstalando supertuxkart-data ... blackr:/home/imanu# Bueno en el ejemplo, la sintaxis es un poco distinta ya que hemos añadido la opción –purge, con la que indicamos que además de desinstalar los paquetes, borre los ficheros de configuración. Como podemos ver, APT permite el uso de expresiones regulares ya que después del nombre del paquete hemos añadido un asterisco (*), con lo que indicamos a APT que desinstale todo aquel paquete que empiece con la palabra supertuxkart. 2.2.5 clean Como se comentó anteriormente, APT utiliza una caché donde descarga los paquetes de los repositorios. Esta caché se encuentra en /var/cache/apt/archives. Si vemos lo que contiene el directorio anterior podemos ver todos los paquetes descargados. blackr:/home/imanu# ls -l /var/cache/apt/archives/ total 41652 -rw-r--r-- 1 root root 2522280 2006-12-17 13:47 abiword_2.4.6-1.1_i386.deb -rw-r--r-- 1 root root 1845778 2006-12-17 13:47 abiword-common_2.4.6-1.1_all.deb -rw-r--r-- 1 root root 42366 2004-11-27 20:32 airstrike_0.99+1.0pre6a-3_i386.deb -rw-r--r-- 1 root root 1876354 2004-11-27 18:47 airstrike-common_0.99+1.0pre6a-3_all.deb -rw-r--r-- 1 root root 6291562 2006-11-23 00:17 azureus_2.5.0.0+0-1_all.deb -rw-r--r-- 1 root root 39868 2006-10-15 05:32 bumprace_1.5.1.dfsg-2.1_i386.deb -rw-r--r-- 1 root root 717034 2006-10-15 05:32 bumprace-data_1.5.1.dfsg-2.1_all.deb -rw-r--r-- 1 root root 88502 2006-04-05 08:02 freeglut3_2.4.0-5_i386.deb -rw-r--r-- 1 root root 29456 2006-11-01 01:51 libsdl-image1.2_1.2.5-2+b1_i386.deb -rw-r--r-- 1 root root 136842 2006-11-01 01:51 libsdl-mixer1.2_1.2.6-1.1+b2_i386.deb -rw-r--r-- 1 root root 326972 2005-11-15 00:17 libseda-java_3.0-3_all.deb -rw-r--r-- 1 root root 102112 2006-09-03 20:03 libsmpeg0_0.4.5+cvs20030824-1.9_i386.deb -rw-r--r-- 1 root root 1155842 2007-01-16 21:32 libswt-gtk-3.2-java_3.2.1-5_i386.deb -rw-r--r-- 1 root root 156322 2007-01-16 21:32 libswt-gtk-3.2-jni_3.2.1-5_i386.deb -rw-r----- 1 root root 0 2007-11-28 20:38 lock -rw-r--r-- 1 root root 45228 2007-11-21 18:00 mysql-client_5.0.32-7etch3_all.deb -rw-r--r-- 1 root root 7188116 2007-11-21 18:00 mysql-client-5.0_5.0.32-7etch3_i386.deb -rw-r--r-- 1 root root 53548 2007-11-21 18:00 mysql-common_5.0.32-7etch3_all.deb -rw-r--r-- 1 root root 47306 2007-11-21 18:00 mysql-server_5.0.32-7etch3_all.deb drwxr-xr-x 2 root root 4096 2007-11-28 21:01 partial -rw-r--r-- 1 root root 639312 2006-10-24 23:36 plib1.8.4c2_1.8.4-6_i386.deb -rw-r--r-- 1 root root 181580 2006-09-30 12:17 supertuxkart_0.2-1_i386.deb -rw-r--r-- 1 root root 10256154 2006-09-30 12:17 supertuxkart-data_0.2-1_all.deb -rw-r--r-- 1 root root 142618 2006-10-06 03:47 transmission_0.6.1.dfsg-1_i386.deb -rw-r--r-- 1 root root 30428 2006-05-15 11:32 xcruise_0.30-7_i386.deb -rw-r--r-- 1 root root 781792 2006-12-11 01:02 xmoto_0.2.2-2_i386.deb -rw-r--r-- 1 root root 5317556 2006-12-11 01:02 xmoto-data_0.2.2-2_all.deb Con la orden clean podemos borrar esta caché al completo y liberar espacio en disco. La sintaxis es la siguiente: #apt-get clean Veamos un ejemplo práctico. blackr:/home/imanu# apt-get clean blackr:/home/imanu# ls -l /var/cache/apt/archives/ total 4 -rw-r----- 1 root root 0 2007-11-28 21:51 lock drwxr-xr-x 2 root root 4096 2007-11-28 21:48 partial Como podemos observar en el directorio no hay ningún paquete. Sin embargo el directorio no está vacío, hay un fichero llamado 'lock' que impide que ejecutemos varios apt-get y estemos instalando en varias terminales al mismo tiempo; y un directorio llamado 'partial' donde se almacenan los paquetes que se han quedado pendiente de descargar, por ejemplo, paquetes que se estaban descargando hasta que se produjo un corte de conectividad con internet o porque paramos la descarga manualmente. Gracias al directorio partial podemos reanudar la descarga del paquete por donde la dejamos. 2.2.6 autoclean La orden autoclean tiene el mismo objetivo que clean, es decir, borrar paquetes de la caché y liberar espacio en disco, pero funciona de forma diferente. Autoclean sólo borra de la caché aquellos paquetes desactualizados, es decir, si hemos descargado el paquete de apache1.3 y en los repositorios está la versión 2.0, el paquete será eliminado porque no lo volveremos a descargar, sólo descargaremos versiones actualizadas. La sintaxis es la misma que la de clean: #apt-get autoclean Nota: para más información acerca de apt-get consultar el man. (man apt-get) 2.3 apt-cache apt-cache nos permite realizar operaciones sobre la cache de APT. apt-cache no modifica el estado del sistema pero nos permite realizar búsquedas y obtener información sobre los paquetes. apt-cache cuenta con una serie de ordenes, siempre debemos especificar una a menos que usemos la opción -h o –help para mostrar la ayuda. Algunas de estas ordenes son las siguientes: 2.3.1 search search hace una búsqueda de un patrón por todos los paquetes. La búsqueda se hace tanto en el nombre del paquete como en su descripción. Se pueden especificar varios argumentos de búsqueda separados por espacios. La sintaxis de uso es la siguiente: #apt-cache search patron1 patron2 patronN burn”: Veamos un ejemplo, queremos buscar algun software para grabar cd, asi que buscaremos por “cd blackr:/home/imanu# apt-cache search cd burn arson - KDE frontend for burning CDs backup-manager - command-line backup tool banshee - Audio Management and Playback application banshee-daap - Audio Management and Playback application (DAAP sharing plugin) banshee-official-plugins - Audio Management and Playback application (Additional Plugins) bonfire - CD/DVD burning application for GNOME (dummy package) brasero - CD/DVD burning application for GNOME burn - Command line Data-CD, Audio-CD, ISO-CD, Copy-CD writing tool cdcontrol - A parallel burner that allow you to write to one or more CD-Writers at once cdlabelgen - generates front cards and tray cards for CDs and DVDs cdrbq - graphical cd burning frontend cdrdao - records CDs in Disk-At-Once (DAO) mode cdrskin - command line CD-R/CD-RW writing tool cue2toc - converts CUE files to cdrdao's TOC format cwcdr - Chez Wam CD Ripper dvd+rw-tools - DVD+-RW/R tools gcdmaster - Gnome GUI for cdrdao gnomebaker - application for CD/DVD creation in the GNOME desktop gramofile - Transfer sound from gramophone records to CD gthumb - an image viewer and browser k3b - A sophisticated KDE CD burning application kpowersave - frontend to powersave for setting user specific policies libk3b-dev - The KDE cd burning application library - development files libk3b2 - The KDE cd burning application library - runtime files libnautilus-burn-dev - Nautilus Burn Library - development version libnautilus-burn3 - Nautilus Burn Library - runtime version listen - A nice music player and manager for GNOME mp3burn - burn audio CDs directly from MP3, Ogg Vorbis, or FLAC files mp3cd - Burns normalized audio CDs from lists of MP3s/WAVs/Oggs/FLACs muine-plugin-serpentine - Audio CD burning plugin for the Muine audio player multicd - Backup your data to CD-R/CD-RW nautilus-cd-burner - CD Burning front-end for Nautilus partimage - backup partitions into a compressed image file partimage-doc - Partition Image User Documentation quodlibet-plugins - various contributed plugins for Quod Libet rezound - Audio file editor rhythmbox - music player and organizer for GNOME Una vez realizada la búsqueda se muestra el nombre del paquete y una breve descripción. Si quisiéramos instalar alguno de ellos, solo tendríamos que ejecutar apt-get install nombre_del_paquete. 2.3.2 show show muestra una información más detallada del paquete que especifiquemos. Su sintaxis de uso es la siguiente: $apt-cache show nombre_paquete Vamos a ver la información del paquete firefox: imanu@blackr:~$ apt-cache show firefox Package: firefox Priority: optional Section: web Installed-Size: 108 Maintainer: Eric Dorland <[email protected]> Architecture: all Source: iceweasel Version: 2.0.0.6+2.0.0.8-0etch1 Depends: iceweasel (>= 2.0.0.6+2.0.0.8-0etch1), iceweasel (<< 2.0.0.6+2.0.0.8-0etch1.1~) Filename: pool/updates/main/i/iceweasel/firefox_2.0.0.6+2.0.0.8-0etch1_all.deb Size: 54052 MD5sum: 6f1dc415423a1722a2f78b31d8c2c853 SHA1: 1213da3ca11c636caadf0d92021ebd2ba3b121d3 SHA256: 704f69dd4c82fd2098131a530855e1885d914489a384ed962423fabf3644c624 Description: Transition package for iceweasel rename Package to ease upgrading from older firefox packages to the new iceweasel package. . This package can be purged at anytime once the iceweasel package has been installed. Package: firefox Priority: optional Section: web Installed-Size: 108 Maintainer: Eric Dorland <[email protected]> Architecture: all Source: iceweasel Version: 2.0.0.3-1 Depends: iceweasel (>= 2.0.0.3-1), iceweasel (<< 2.0.0.3-1.1~) Filename: pool/main/i/iceweasel/firefox_2.0.0.3-1_all.deb Size: 53260 MD5sum: d396af28aee46a3fa8efdb98b6a9b61a SHA1: 8cf6b173b4fa7a7d2cf7db8d17d9d7ff176a6d0a SHA256: 3fb9f4a6ddc32b05883e27ecc260767366a197450bb80ba91bf710244d798f98 Description: Transition package for iceweasel rename Package to ease upgrading from older firefox packages to the new iceweasel package. . This package can be purged at anytime once the iceweasel package has been installed. Como podemos ver, con la orden show podemos ver la versión, dependencias, mantenedor, tamaño, y descripción más o menos extensa de un paquete. Nota: el uso de apt-cache no requiere que seamos root, es decir, podemos buscar información acerca de paquetes siendo un usuario sin privilegios. 2.3.3 depends depends muestra las dependencias de un determinado paquete. Su sintaxis de uso es la siguiente: $apt-cache depends nombre_paquete Veamos qué dependencias tiene iceweasel (navegador firefox): imanu@blackr:~$ apt-cache depends iceweasel iceweasel Depende: fontconfig Depende: psmisc Depende: debianutils Depende: libatk1.0-0 Depende: libc6 Depende: libcairo2 Depende: libfontconfig1 Depende: libfreetype6 Depende: libgcc1 Depende: libglib2.0-0 Depende: libgtk2.0-0 Depende: libjpeg62 Depende: libmyspell3c2 Depende: libpango1.0-0 Depende: libpng12-0 Depende: libstdc++6 Depende: libx11-6 Depende: libxft2 Depende: libxinerama1 Depende: libxp6 Depende: libxrender1 Depende: libxt6 Depende: zlib1g Sugiere: iceweasel-gnome-support Sugiere: <latex-xft-fonts> Sugiere: xprint Sugiere: mozplugger Sugiere: libkrb53 Entra en conflicto: mozilla-firefox Entra en conflicto: firefox Reemplaza: mozilla-firefox Reemplaza: firefox 3 Añadiendo un nuevo repositorio En nuestro sistema Debian GNU/Linux podemos tener configurados todos los repositorios que queramos, aunque es recomendable utilizar los repositorios oficiales para no volver inestable la distribución debido a incompatibilidades entre paquetes, etc. Es recomendable que utilicemos repositorios no oficiales sólo cuando no haya más remedio y nos haga falta instalar un paquete que no se encuentre en los repositorios oficiales. Para añadir y hacer uso de un nuevo repositorios seguiremos los siguientes pasos. Primero debemos editar el fichero /etc/apt/sources.list, donde se encuentran configurados los repositorios, y añadiremos el nuevo: deb http://www.debian-multimedia.org/ stable main El segundo paso, y como se comentó anteriormente, SIEMPRE después de hacer un cambio en el fichero sources.list debemos actualizar el índice de paquetes con apt-get. blackr:/home/imanu# apt-get update Des:1 http://ftp.cica.es etch Release.gpg [378B] Obj http://ftp.cica.es etch Release Des:2 http://security.debian.org etch/updates Release.gpg [189B] Des:3 http://www.debian-multimedia.org stable Release.gpg [189B] Obj http://security.debian.org etch/updates Release Ign http://ftp.cica.es etch/main Packages/DiffIndex Des:4 http://www.debian-multimedia.org stable Release [5535B] Ign http://security.debian.org etch/updates/main Packages/DiffIndex Ign http://ftp.cica.es etch/contrib Packages/DiffIndex Ign http://ftp.cica.es etch/non-free Packages/DiffIndex Ign http://ftp.cica.es etch/main Sources/DiffIndex Ign http://ftp.cica.es etch/contrib Sources/DiffIndex Ign http://ftp.cica.es etch/non-free Sources/DiffIndex Ign http://www.debian-multimedia.org stable Release Ign http://security.debian.org etch/updates/contrib Packages/DiffIndex Ign http://security.debian.org etch/updates/main Sources/DiffIndex Obj http://ftp.cica.es etch/main Packages Obj http://ftp.cica.es etch/contrib Packages Obj http://ftp.cica.es etch/non-free Packages Des:5 http://www.debian-multimedia.org stable/main Packages [41,9kB] Ign http://security.debian.org etch/updates/contrib Sources/DiffIndex Des:6 http://security.debian.org etch/updates/main Packages [180kB] Obj http://ftp.cica.es etch/main Sources Obj http://ftp.cica.es etch/contrib Sources Obj http://ftp.cica.es etch/non-free Sources Obj http://security.debian.org etch/updates/contrib Packages Des:7 http://security.debian.org etch/updates/main Sources [24,9kB] Obj http://security.debian.org etch/updates/contrib Sources Descargados 253kB en 37s (6804B/s) Leyendo lista de paquetes... Hecho W: GPG error: http://www.debian-multimedia.org stable Release: Las firmas siguientes no se pudieron verificar porque su llave pública no está disponible: NO_PUBKEY 07DC563D1F41B907 W: Tal vez quiera ejecutar 'apt-get update' para corregir estos problemas Como podemos observar al descargar los índices de paquetes del nuevo repositorio, se produce un error de GPG (Gnu Privacy Guard), es decir, APT avisa de que no tiene la clave pública que identifica a ese repositorio por lo que puede que no sea de confianza. Este error no nos impide instalar paquetes de dicho repositorio, pero cada vez que hagamos algo (actualización de índices de paquetes, instalación, etc) nos avisará con el error. El tercer paso será eliminar este molesto error. Para ello lo que haremos será pedir a dicho repositorio su clave pública (también llamada llave pública), y para ello ejecutaremos lo siguiente: blackr:/home/imanu# gpg --keyserver pgp.mit.edu --recv-keys 07DC563D1F41B907 gpg: directory `/root/.gnupg' created gpg: can't open `/gnupg/options.skel': No existe el fichero o el directorio gpg: keyring `/root/.gnupg/secring.gpg' created gpg: keyring `/root/.gnupg/pubring.gpg' created gpg: requesting key 1F41B907 from hkp server pgp.mit.edu gpg: key 1F41B907: duplicated user ID detected - merged gpg: /root/.gnupg/trustdb.gpg: trustdb created gpg: key 1F41B907: public key "Christian Marillat <[email protected]>" imported gpg: no ultimately trusted keys found gpg: Total number processed: 1 gpg: imported: 1 El cuarto paso será exportar la clave pública a un fichero de texto. blackr:/home/imanu# gpg --armor --export 1F41B907 > key.asc El quinto y último paso será añadir dicha clave a APT y actualizar de nuevo el índice de paquetes para comprobar que el error ya no aparece. Para ello ejecutamos lo siguiente: blackr:/home/imanu# apt-key add key.asc OK blackr:/home/imanu# apt-get update Des:1 http://ftp.cica.es etch Release.gpg [378B] Des:2 http://www.debian-multimedia.org stable Release.gpg [189B] Obj http://ftp.cica.es etch Release Des:3 http://security.debian.org etch/updates Release.gpg [189B] Ign http://ftp.cica.es etch/main Packages/DiffIndex Des:4 http://www.debian-multimedia.org stable Release [5535B] Obj http://security.debian.org etch/updates Release Ign http://ftp.cica.es etch/contrib Packages/DiffIndex Ign http://ftp.cica.es etch/non-free Packages/DiffIndex Ign http://ftp.cica.es etch/main Sources/DiffIndex Ign http://ftp.cica.es etch/contrib Sources/DiffIndex Ign http://ftp.cica.es etch/non-free Sources/DiffIndex Ign http://security.debian.org etch/updates/main Packages/DiffIndex Obj http://ftp.cica.es etch/main Packages Obj http://ftp.cica.es etch/contrib Packages Obj http://ftp.cica.es etch/non-free Packages Ign http://www.debian-multimedia.org stable/main Packages/DiffIndex Ign http://security.debian.org etch/updates/contrib Packages/DiffIndex Ign http://security.debian.org etch/updates/main Sources/DiffIndex Obj http://ftp.cica.es etch/main Sources Obj http://ftp.cica.es etch/contrib Sources Obj http://www.debian-multimedia.org stable/main Packages Ign http://security.debian.org etch/updates/contrib Sources/DiffIndex Obj http://security.debian.org etch/updates/main Packages Obj http://ftp.cica.es etch/non-free Sources Obj http://security.debian.org etch/updates/contrib Packages Obj http://security.debian.org etch/updates/main Sources Obj http://security.debian.org etch/updates/contrib Sources Descargados 5726B en 10s (538B/s) Leyendo lista de paquetes... Hecho Como podemos ver el error ha desaparecido, ya que al acceder al repositorio APT tiene almacenada la llave o clave pública de este. 4 Front-ends de APT Un front-end nos es más que una aplicación que interactúa con el usuario y que facilita el uso de otra aplicación. APT tiene varios front-ends como aptitude, synaptic o dselect. Profundizaremos en uno de ellos, porque es en modo texto y hay que usarlo en la terminal ;-) 4.1 aptitude aptitude es una aplicación que intenta abstraer al usuario del uso de APT, es decir, facilitar el uso de APT al usuario. Esta aplicación digamos que tiene 2 partes: una parte en modo texto y otra parte en modo interactivo. Al modo interactivo podemos acceder ejecutando 'aptitude' en la terminal. Veamos cómo invocar el modo interactivo de aptitude. blackr:/home/imanu# aptitude Nos aparecerá una pantalla como la siguiente: Mediante esta pantalla podremos instalar/desinstalar paquetes moviéndonos por el menú con las teclas de dirección. El modo texto de aptitude es similar al de APT, solo que aptitude muestra más información al usuario para así facilitarle su uso. Con aptitude podemos hacer lo mismo que con APT: actualizar los índices de paquetes, buscar, instalar, desinstalar. 2.1.1 update update actualiza los índices de paquetes de nuestra máquina con respecto a los repositorios. Su sintaxis es la siguiente: #aptitude update Veamos un ejemplo práctico: blackr:/home/imanu# aptitude update Des:1 http://ftp.cica.es etch Release.gpg [378B] Obj http://ftp.cica.es etch Release Des:2 http://security.debian.org etch/updates Release.gpg [189B] Ign http://ftp.cica.es etch/main Packages/DiffIndex Des:3 http://security.debian.org etch/updates Release [22,5kB] Ign http://ftp.cica.es etch/contrib Packages/DiffIndex Ign http://ftp.cica.es etch/non-free Packages/DiffIndex Ign http://ftp.cica.es etch/main Sources/DiffIndex Ign http://ftp.cica.es etch/contrib Sources/DiffIndex Ign http://ftp.cica.es etch/non-free Sources/DiffIndex Obj http://ftp.cica.es etch/main Packages Obj http://ftp.cica.es etch/contrib Packages Obj http://ftp.cica.es etch/non-free Packages Obj http://ftp.cica.es etch/main Sources Obj http://ftp.cica.es etch/contrib Sources Obj http://ftp.cica.es etch/non-free Sources Ign http://security.debian.org etch/updates/main Packages/DiffIndex Ign http://security.debian.org etch/updates/contrib Packages/DiffIndex Ign http://security.debian.org etch/updates/main Sources/DiffIndex Ign http://security.debian.org etch/updates/contrib Sources/DiffIndex Obj http://security.debian.org etch/updates/main Packages Obj http://security.debian.org etch/updates/contrib Packages Obj http://security.debian.org etch/updates/main Sources Obj http://security.debian.org etch/updates/contrib Sources Descargados 22,6kB en 27s (835B/s). Leyendo lista de paquetes... Hecho Como podemos observar es el mismo resultado que obtuvimos con apt. Nota: aptitude update es una alternativa a ejecutar apt-get update 2.1.2 search search nos permite buscar paquetes a partir de uno o más patrones especificados. Su sintaxis de uso es la siguiente: #aptitude search patron1 patron2 patronN Veamos una búsqueda con el patrón 'xfce4': blackr:/home/imanu# aptitude search xfce4 i A libxfce4mcs-client3 - Client library for Xfce4 configure interfa p libxfce4mcs-dev - Development files for libxfce4mcs-client a i A libxfce4mcs-manager3 - Manager library for Xfce4 configure interf p libxfce4util-dev - Development files for libxfce4util4 i A libxfce4util4 - Utility functions library for Xfce4 i xfce4 - Meta-package for the Xfce Lightweight Desk p xfce4-appfinder - Application finder for the Xfce4 Desktop E i A xfce4-artwork - additional artwork for the Xfce4 Desktop E i A xfce4-battery-plugin - battery monitor plugin for the Xfce4 panel i A xfce4-clipman-plugin - clipboard history plugin for the Xfce4 pan i A xfce4-cpufreq-plugin - cpufreq information plugin for the Xfce4 p i A xfce4-cpugraph-plugin - CPU load graph plugin for the Xfce4 panel p xfce4-dev-tools - Script to help building Xfce from svn i A xfce4-diskperf-plugin - disk performance display plugin for the Xf i A xfce4-fsguard-plugin - filesystem monitor plugin for the Xfce4 pa i A xfce4-genmon-plugin - Generic Monitor for the Xfce4 panel i xfce4-goodies - enhancements for the Xfce4 Desktop Environ i A xfce4-icon-theme - Xfce Standard icon theme ... aptitude en este caso muestra más información que apt-cache search puesto que muestra el estado de cada paquete en nuestro sistema. i : indica que el paquete se encuentra instalado. p : indica que el paquete no está instalado en el sistema. i A : indica que el paquete se encuentra instalado (i) pero como dependencia de otro paquete (A). 2.1.3 install install nos permite instalar uno o más paquetes en nuestro sistema. Funciona de forma similar a aptget install y su sintaxis es la siguiente: #aptitude install paquete1 paquete2 paqueteN Veamos un ejemplo de instalación: blackr:/home/imanu# aptitude install vim-full Leyendo lista de paquetes... Hecho Creando árbol de dependencias... Hecho Leyendo la información de estado extendido Inicializando el estado de los paquetes... Hecho Leyendo las descripciones de las tareas... Hecho Construir la base de datos de etiquetas... Hecho Se instalarán automáticamente los siguientes paquetes NUEVOS: tcl8.4 vim-gui-common vim-runtime Se instalarán los siguiente paquetes NUEVOS: tcl8.4 vim-full vim-gui-common vim-runtime 0 paquetes actualizados, 4 nuevos instalados, 0 para eliminar y 0 sin actualizar. Necesito descargar 8596kB de ficheros. Después de desempaquetar se usarán 27,6MB. ¿Quiere continuar? [Y/n/?] Y Escribiendo información de estado extendido... Hecho Des:1 http://ftp.cica.es etch/main tcl8.4 8.4.12-1.1 [1144kB] Des:2 http://security.debian.org etch/updates/main vim-gui-common 1:7.0-122+1etch3 [143kB] Des:3 http://security.debian.org etch/updates/main vim-runtime 1:7.0-122+1etch3 [6362kB] Des:4 http://security.debian.org etch/updates/main vim-full 1:7.0-122+1etch3 [947kB] Descargados 8596kB en 20m58s (6831B/s). Seleccionando el paquete tcl8.4 previamente no seleccionado. (Leyendo la base de datos ... 78344 ficheros y directorios instalados actualmente.) Desempaquetando tcl8.4 (de .../tcl8.4_8.4.12-1.1_i386.deb) ... Seleccionando el paquete vim-gui-common previamente no seleccionado. Desempaquetando vim-gui-common (de .../vim-gui-common_1%3a7.0-122+1etch3_all.deb) ... Seleccionando el paquete vim-runtime previamente no seleccionado. Desempaquetando vim-runtime (de .../vim-runtime_1%3a7.0-122+1etch3_all.deb) ... Seleccionando el paquete vim-full previamente no seleccionado. Desempaquetando vim-full (de .../vim-full_1%3a7.0-122+1etch3_i386.deb) ... Configurando tcl8.4 (8.4.12-1.1) ... Configurando vim-gui-common (7.0-122+1etch3) ... Configurando vim-runtime (7.0-122+1etch3) ... Processing /usr/share/vim/addons/doc Configurando vim-full (7.0-122+1etch3) ... El proceso de instalación es: aptitude usa apt para descargar los paquetes y apt usa dpkg para instalarlos. 2.1.4 remove remove nos permite desinstalar paquetes del sistema. Su sintaxis de uso es: #aptitude remove paquete1 paquete2 paqueteN Vamos a desinstalar el paquete que instalamos anteriormente: blackr:/home/imanu# aptitude remove vim-full Leyendo lista de paquetes... Hecho Creando árbol de dependencias... Hecho Leyendo la información de estado extendido Inicializando el estado de los paquetes... Hecho Escribiendo información de estado extendido... Hecho Leyendo las descripciones de las tareas... Hecho Construir la base de datos de etiquetas... Hecho Los siguientes paquetes no se usan y se ELIMINARÁN: tcl8.4 vim-gui-common vim-runtime Se ELIMINARÁN los siguientes paquetes: vim-full 0 paquetes actualizados, 0 nuevos instalados, 4 para eliminar y 0 sin actualizar. Necesito descargar 0B de ficheros. Después de desempaquetar se liberarán 27,6MB.¿Quiere continuar? [Y/n/?] y Escribiendo información de estado extendido... Hecho (Leyendo la base de datos ... 79907 ficheros y directorios instalados actualmente.) Desinstalando vim-full ... Desinstalando tcl8.4 ... Desinstalando vim-gui-common ... Desinstalando vim-runtime ... La única diferencia que tiene aptitude y apt-get a la hora de desinstalar es que aptitude trata mejor los paquetes huérfanos, es decir, los paquetes instalados que no usa ningún programa. 2.1.5 show show permite mostrar información acerca de un paquete. Su sintaxis es la siguiente: $aptitude show nombre_paquete Veamos un ejemplo: imanu@blackr:~$ aptitude show mencal Paquete: mencal Estado: sin instalar Versión: 2.3-7 Prioridad: opcional Sección: utils Desarrollador: Amaya Rodrigo Sastre <[email protected]> Tamaño sin comprimir: 98,3k Depende de: perl Descripción: A menstruation calendar Mencal is a menstruation calendar written in Perl. It is a simple variation of the well-known Unix command cal. The main difference is that you can have some periodically repeating days highlighted in color. This can be used to track menstruation (or other) cycles conveniently. Author: C. McCohy <[email protected]> Homepage: http://mencal.kyberdigi.cz/english.html Marcas: implemented-in::perl, interface::commandline, role::program, use::timekeeping, works-with::pim Nota: al igual que con apt-cache, con aptitude search no hace falta ser superusuario (root) 2.1.6 upgrade Al igual que apt-get upgrade, permite actualizar todos los paquetes del sistema. La sintaxis de uso es la siguiente: #aptitude upgrade 2.2 Synaptic Synaptic es un gestor de paquetes gráfico. Su función, como la de cualquier front-end, es la de facilitar el uso o gestión de paquetes al usuario. Desde esta interfaz gráfica podemos, por ejemplo, actualizar los índices de paquetes pulsando “Reload” (recargar), instalar y desinstalar paquetes haciendo una búsqueda por un patrón pulsando en “Search” y marcando para instalar y desinstalar haciendo doble clic en el paquete deseado.