Instalar paquetes Debian
Veamos cómo instalar paquetes Debian:
- Qué es APT
- Programas para utilizar APT
- Cómo trabajar con APT
- Poderes de Super Vaca de APT
Qué es APT
APT (Advanced Package Tool) es el sistema de Debian para gestionar el software. Se encarga de mantener nuestra computadora sin software inservible o medio instalado e impedir conflictos entre librerías.
Busca ante todo la estabilidad del sistema y la facilidad de uso, y es en gran parte el responsable de la estabilidad de las máquinas Debian. Después de un tiempo te preguntarás cómo has podido vivir sin él.
¿Qué ocurre cuando instalamos un programa? APT se conecta a los repositorios de paquetes .deb que figuran en /etc/apt/sources.list y descarga el paquete según las instrucciones de /etc/apt/preferences, lo instala poniendo cada archivo en su sitio y actualiza la base de datos de paquetes añadiendo una entrada con el paquete instalado y su versión.
Es muy recomendable leer la documentación de Debian:
- APT HOWTO - Debian: debian.org/doc/manuals/apt-howto/
- Guía del nuevo desarrollador - Debian: debian.org/doc/manuals/maint-guide/
Atención
APT utiliza el sistema de criptografía GPG para validar los paquetes .deb descargados y asegurarse de que no han sido alterados. A esto se le llama Secure APT...
Leer más: APT seguro: Secure APT
Programas para utilizar APT
Disponemos de varios programas para utilizar APT, aunque el que hace todo el trabajo es dpkg (debian package), los demás son frontales que nos hacen la vida más fácil:
- dpkg, dpkg-reconfigure, apt-get, apt-cdrom, apt-cache y gdebi: comandos del shell.
- Aptitude: programa en modo texto con menús. Es el mejor, el que toma mejores decisiones, siendo el método recomendado por Debian tanto para instalar paquetes como para actualizar el sistema.
- Adept-manager (paquete adept), Kpackage (paquete kpackage) y Synaptic (paquete synaptic): como Aptitude pero en entorno gráfico.
- Adept-installer (paquete adept): asistente para la gestión de aplicaciones por categorías. Considera que un paquete es una aplicación cuando cumple el estándar FreeDesktop y contiene un archivo .desktop para generar una entrada en el menú.
Cómo trabajar con APT
- Versiones de Debian: Debian mantiene disponibles simultáneamente tres versiones,
stable, testing y unstable (para entendernos, tres sabores: "un poco
pasado de moda", "moderno" y "suicida"):
- stable (estable): está muy probada y se considera libre de errores críticos. A esta versión no se añaden nuevos paquetes ni se modifican los existentes, sólo se añaden parches de seguridad que se descargan automáticamente desde security.debian.org al actualizar el sistema. Por su estabilidad y seguridad es la más recomendable para servidores, nuevos usuarios y aquellos que dan preferencia a la estabilidad del sistema, aunque las versiones del software no sean las más actuales.
- testing (en pruebas): la versión testing pasará
a ser stable en un futuro no muy lejano, y contiene los paquetes sin
fallos de unstable. Esto tiene varias consecuencias:
- contiene más paquetes que stable.
- las versiones son bastante más modernas que las de stable.
- es mucho más estable que unstable aunque bastante menos que stable. De hecho es tan estable como las demás distribuciones y no nos dará problemas de inestabilidad.
- hay una cuestión muy importante a tener en cuenta: los fallos en testing no se corrigen con parches de seguridad, como ocurre en stable. Cuando se detecta un bug, se corrige el paquete correspondiente en unstable, y sólo cuando transcurra un cierto tiempo pasará el paquete corregido a testing y podremos disponer de él. Esto provoca una lenta solución de los fallos de seguridad en testing.
- dado que los paquetes están en constante revisión, cada vez que actualicemos el sistema se nos instalarán gran cantidad de paquetes, cosa que puede resultar pesada.
Todas estas características hacen que sea una versión interesante sólo para usuarios avanzados que necesitan las nuevas prestaciones de las últimas versiones del software, pero no para servidores en producción o nuevos usuarios.
- unstable (inestable): es la versión en desarrollo. Puede tener bugs porque lleva las últimas versiones de los programas, y se pone a disposición de los usuarios para que la prueben e informen sobre errores. Incluso puede fallar el sistema de gestión de paquetes por dependencias insatisfechas cuando en los repositorios de software se actualizan gran número de paquetes. Una vez corregidos los fallos iniciales los paquetes pasan a testing. En unstable tampoco hay parches de seguridad: cuando se detecta un bug se corrige directamente en el paquete, que se enviará a testing al cabo de algún tiempo. Al igual que en testing, cada vez que actualicemos el sistema se nos instalarán gran cantidad de paquetes. Por todo ello esta versión sólo es adecuada para desarrolladores y aventureros.
Resumiendo:
- stable significa muy estable.
- testing significa tan estable como las demás distribuciones.
- unstable significa realmente inestable.
- Fuentes de software: para poder instalar software APT necesita saber dónde encontrarlo.
El archivo donde figura la lista de fuentes de software es /etc/apt/sources.list. Su contenido
será similar a:
deb cdrom:[Debian 3.1 r1 _Sarge_ - i386]/ sarge main contrib deb ftp://ftp.debian.org/debian/ stable main non-free contrib deb-src ftp://ftp.debian.org/debian/ stable main non-free contrib deb ftp://ftp.debian.org/debian/ testing main non-free contrib deb-src ftp://ftp.debian.org/debian/ testing main non-free contrib deb http://security.debian.org/ stable/updates main
Para añadir nuevas fuentes de software editaremos /etc/apt/sources.list:
- los repositorios oficiales, mantenidos por Debian, figuran en la página debian.org/mirrors/list.
- un repositorio no oficial muy utilizado (imprescindible si utilizamos
aplicaciones multimedia), es el mantenido por Christian Marillat
(debian-multimedia.org):
deb http://www.debian-multimedia.org stable main
- otro es el repositorio Backports (backports.org):
contiene paquetes de testing (mayoritariamente) o unstable pero recompilados con
las librerías de stable. De esta manera, podemos instalar un paquete moderno
(testing) sin que se reinstale todo el sistema:
deb http://www.backports.org/debian/ sarge-backports main
- en apt-get.org encontraremos fuentes no oficiales de paquetes .deb: permite buscar un paquete y obtener las líneas a agregar en /etc/apt/sources.list.
- para añadir como fuente de software un CD ejecutaremos:
# apt-cdrom add
- Pinning: veamos cómo funciona el sistema de prioridades o Pin-Priority.
- Cada fuente de software que tengamos en /etc/apt/sources.list tiene asignada una prioridad (Pin).
- Cuando instalamos un paquete, si APT encuentra varios con el mismo nombre instalará el que proceda de la fuente con mayor prioridad (a igual prioridad instalará la última versión del paquete).
- Por defecto, la Pin-Priority de las fuentes de software es 500, pero podemos cambiarlo estableciendo otros valores en el archivo /etc/apt/preferences.
- Podemos saltarnos las prioridades e instalar un paquete desde una fuente de baja prioridad:
# apt-get install <paquete>/<fuente_baja_prioridad>
Para instalar desde una fuente de baja prioridad tanto el paquete como sus dependencias haremos:
# apt-get install -t <fuente_baja_prioridad> <paquete>
- Los significados de las Pin-Priority son:
- < 0: un paquete con esta prioridad nunca se instalará.
- 0-1000: el paquete se instalará si es una versión más moderna.
- > 1000: el paquete se instalará aunque sea una versión anterior.
- 100: prioridad de los paquetes instalados.
- 500: prioridad por defecto de las fuentes de software.
- 0-99: este paquete no actualizará a un paquete instalado.
- 990: prioridad de la opción -t.
- Para asignar una Pin-Priority a una fuente la identificaremos con los parámetros
release a=<archivo> y origin <dominio>. Algunos ejemplos:
- para dar prioridad a los paquetes de Marillat y que al actualizar no se
sobreescriban con los paquetes oficiales con el mismo nombre:
Package: * Pin: origin www.debian-multimedia.org Pin-Priority: 900
- para que Backports no tenga prioridad sobre los repositorios oficiales:
Package: * Pin: release a=sarge-backports Pin-Priority: 200
De esta manera, para instalar un paquete desde Backports tendremos que saltarnos la Pin-Priority:
# apt-get install <paquete>/sarge-backports
- para permanecer en stable, instalándose paquetes de testing
y unstable si no existen en stable:
Package: * Pin: release a=stable Pin-Priority: 500 Package: * Pin: release a=testing Pin-Priority: 60 Package: * Pin: release a=unstable Pin-Priority: 50
- para pasar a testing: stable 500, testing 600, unstable 50
- para pasar a unstable: stable 500, testing 600, unstable 700
- para volver a stable: stable 1100, testing 600, unstable 700
- si en vez de Package: * ponemos Package: <paquete> podemos
asignar una Pin-Priority específica a un paquete. Por ejemplo, para que la versión
prioritaria de Mutt sea unstable:
Package: mutt Pin: release a=unstable Pin-Priority: 900
- para dar prioridad a los paquetes de Marillat y que al actualizar no se
sobreescriban con los paquetes oficiales con el mismo nombre:
- Para consultar las Pin-Priority de cada fuente ejecutaremos el comando:
# apt-cache policy
- Actualizar la lista de paquetes: para sincronizar nuestra lista local de paquetes con los paquetes
disponibles en los servidores de software que figuran en /etc/apt/sources.list usaremos el comando:
# apt-get update
Atención
- Antes de instalar paquetes siempre debemos actualizar la lista ejecutando:
# apt-get update
- También debemos actualizar la lista de paquetes siempre que modifiquemos /etc/apt/sources.list o /etc/apt/preferences.
- Si tenemos muchas fuentes de software en /etc/apt/sources.list la cache de APT será
demasiado pequeña y obtendremos el error:
E: Dynamic MMap ran out of room
Para evitarlo, incluiremos en el archivo /etc/apt/apt.conf la línea:
APT::Cache-Limit "100000000";
- Antes de instalar paquetes siempre debemos actualizar la lista ejecutando:
- Buscar paquetes: podemos buscar por palabra clave dentro de la lista de paquetes
disponibles, en sus nombres y descripciones. Por ejemplo, para buscar editores de texto, haremos:
# apt-cache search text editor
Obtendremos una lista de paquetes con una pequeña descripción:
nano - free Pico clone with some new features kate - advanced text editor for KDE ...
- Instalar un paquete .deb local: si tenemos un paquete .deb en el disco
duro y queremos instalarlo usaremos dpkg, por ejemplo:
# dpkg -i aterm_1.0.0-4_i386.deb
Atención, dpkg no instala las dependencias, tendremos que hacerlo manualmente.
# apt-get -f install
Otra opción para instalar un paquete .deb local es Gdebi (paquete gdebi), que sí instala las dependencias:
# gdebi aterm_1.0.0-4_i386.deb
Gdebi dispone de un frontal gráfico (comando gdebi-gtk):
El file manager Xfe (X File Explorer, roland65.free.fr/xfe/, paquete xfe) dispone de un instalador integrado de paquetes .deb, Xfp (X File Package, xfilepackage).
- Instalar un paquete con sus dependencias: el mejor sistema es Aptitude. Tiene en cuenta
todas las dependencias (depende, sugiere, recomienda...) y las recuerda al desinstalar.
También podemos utilizar apt-get: es más rápido, pero sólo tiene en cuenta los depende:
# apt-get install <paquete>
Para reparar enlaces rotos usaremos la opción -f, que impide que queden dependencias sin cumplir (repetiremos hasta que deje de dar errores):
# apt-get -f install <paquete>
- Borrar los paquetes .deb de la caché: cuando APT instala un paquete, lo descarga y
lo almacena en una caché del disco duro, en el directorio /var/cache/apt/archives.
Para borrar la caché de paquetes haremos:
# apt-get clean
- Reconfigurar, reinstalar o actualizar un paquete: para repetir el proceso de configuración
de un paquete ya instalado haremos:
# dpkg-reconfigure <paquete>
Para reinstalar un paquete haremos:
# apt-get --reinstall <paquete>
Y para actualizar la versión instalada de un paquete a la última versión disponible, haremos:
# apt-get install <paquete>
Los paquetes traen archivos de configuración, normalmente con extensión .conf, que se ubican habitualmente bajo /etc/<paquete>. Al reconfigurar/reinstalar/actualizar un paquete, si los archivos .conf han sido modificados no se reinstalarán. Para obligar a que se sobreescriban haremos:
# dpkg -i -force-confnew <paquete-versión.deb>
- Actualizar todo el sistema: para actualizar completamente el sistema (excepto el kernel),
usaremos Aptitude:
# apt-get update # aptitude -f -r dist-upgrade
Nota
Existe otra forma de actualizar el sistema, pero es preferible Aptitude:
# apt-get update # apt-get upgrade # apt-get dist-upgrade
- Desinstalar
Para desinstalar un paquete usaremos Aptitude, ya que también desinstalará los paquetes que se instalaron por dependencias. Debemos tener en cuenta que Eliminar sólo borra los binarios y los scripts de arranque (no elimina los archivos de configuración). En el shell usaremos:
# apt-get remove <paquete>
Para desinstalar completamente todo lo relacionado con un paquete (binarios, scripts de arranque y archivos de configuración) usaremos Purgar:
# apt-get --purge remove <paquete>
Si intentamos borrar un paquete del que dependen otros, APT se quejará. Si insistimos, los desinstalará todos.
- Información sobre paquetes instalados
- Para obtener los nombres y el estado de todos los paquetes instalados en el sistema
(muy útil para reinstalar el sistema) haremos:
# COLUMNS=200 dpkg -l
- Para listar todos los archivos de un paquete, haremos:
# dpkg -L <paquete>
- Para encontrar el paquete que contiene <archivo> (muy útil si
tenemos un archivo y no sabemos de dónde vino) haremos:
# dpkg -S <archivo>
- Para obtener información sobre un paquete (por ejemplo, la línea Conffiles
nos dice cuáles son los archivos de configuración), haremos:
# dpkg --status <paquete>
- Para obtener los nombres y el estado de todos los paquetes instalados en el sistema
(muy útil para reinstalar el sistema) haremos:
- Instalar una selección de paquetes: para instalar una selección de
paquetes crearemos con equivs (paquete equivs) un paquete dummy que
únicamente contenga dependencias, de manera que al instalarlo éstas se instalen a su vez:
- creamos el archivo selections.control, cuyo contenido será:
Package: selections Depends: gpm, kscreensaver, kuser, kdf, kfloppy, kcron, gnome-nettool, etherape, ark, ksnapshot, nmap, nmapfe Description: Paquete dummy Selections. Paquete dummy para instalar una selección de paquetes.
- creamos el paquete selections_1.0_all.deb:
# equivs-build selections.control
Esto generará el paquete /tmp/selections_1.0_all.deb.
- instalamos selections_1.0_all.deb como un paquete normal:
# dpkg -i selections_1.0_all.deb
- creamos el archivo selections.control, cuyo contenido será:
Poderes de Super Vaca de APT
- Los poderes de Super Vaca de APT (Super Cow Powers) son un
huevo de Pascua:
$ apt-get apt 0.5.28.6 Uso: apt-get [opciones] orden apt-get [opciones] install|remove paq1 apt-get [opciones] source paq1 ... Este APT tiene poderes de Super Vaca.
Veamos esos super-poderes:
$ apt-get moo (__) (oo) /------\/ / | || * /\---/\ ~~ ~~ "Have you mooed today?"
- Aptitude dice que no tiene poderes de Super Vaca:
$ aptitude --help aptitude 0.2.15.9 Uso: aptitude [-S nombre_fichero] [-u|-i] ... Este aptitude no tiene poderes de Super Vaca.
Pero sí los tiene:
$ aptitude moo No hay ningún huevo de Pascua en este programa. $ aptitude -v moo Realmente no hay ningún huevo de Pascua en este programa. $ aptitude -vv moo ¿No le he dicho ya que no hay ningún huevo de Pascua en este programa? $ aptitude -vvv moo ¡Deje de hacer eso! $ aptitude -vvvv moo Vale, vale, si le doy un huevo de Pascua, ¿se irá? $ aptitude -vvvvv moo De acuerdo, usted gana. /----\ -------/ \ / \ / | -----------------/ --------\ ---------------------------------------------- ¿Contento? $ aptitude -vvvvvv moo ¿Qué es? Un elefante siendo devorado por una serpiente, por supuesto.
Recursos
- El principito - Saint-Exupéry: franciscorobles.com.ar/libros/principito/
9 Comentarios en “Instalar paquetes Debian”
Deja un comentario
Ha sido muy útil!! Tenía varias dudas, y lo de la Super Vaca no lo conocía :)
hola amigos,
tengo sarge 3.1,
quiero tener el servicio rshd,
solo encuentro paquetes pero son para versiones etch o lenny,
¿Me puede servir?
¿no se pueden instalar paquetes de versiones distintas?
gracias!
Soy practyicamente nuevo en Debian, lo lei y se ve bastante interesante. Espero esto solucione mis problemas. Saludos
Hola , les escribo porque tengo un problema con maquina resulta que tengo instalado DEBIAN lenny y no me deja instalar los paquetes ni por el gestor de paquetes ni por consola .
yo coloco en consola lo siguiente
r# apt-get install pgadmin3 , como usuario root y despues me aparece
¿Desea continuar [S/n]? s
AVISO: ¡No se han podido autenticar los siguientes paquetes!
pgadmin3-data pgadmin3 pgagent
¿Instalar estos paquetes sin verificación [s/N]? s
Err http://172.17.90.152 lenny/main pgadmin3-data 1.8.4-3
No pude conectarme a 172.17.90.152:80 (172.17.90.152), expiró tiempo para conexión
Err http://172.17.90.152 lenny/main pgadmin3 1.8.4-3
No pude conectarme a 172.17.90.152 http:
Err http://172.17.90.152 lenny/main pgagent 1.8.4-3
No pude conectarme a 172.17.90.152 http:
Imposible obtener http://172.17.90.152/lenny/pool/main/p/pgadmin3/pgadmin3-data_1.8.4-3_all.deb No pude conectarme a 172.17.90.152:80 (172.17.90.152), expiró tiempo para conexión
Imposible obtener http://172.17.90.152/lenny/pool/main/p/pgadmin3/pgadmin3_1.8.4-3_i386.deb No pude conectarme a 172.17.90.152 http:
Imposible obtener http://172.17.90.152/lenny/pool/main/p/pgadmin3/pgagent_1.8.4-3_i386.deb No pude conectarme a 172.17.90.152 http:
E: No se pudieron obtener algunos archivos, ¿quizás deba ejecutar
apt-get update o deba intentarlo de nuevo con –fix-missing?
y mi archivo etc/apt/sources.list
#
# deb cdrom:[Debian GNU/Linux 5.0.2a _Lenny_ - Official i386 DVD Binary-1 20090817-00:51]/ lenny contrib main
#deb cdrom:[Debian GNU/Linux 5.0.2a _Lenny_ - Official i386 DVD Binary-1 20090817-00:51]/ lenny contrib main
# Line commented out by installer because it failed to verify:
#deb http://security.debian.org/ lenny/updates main contrib
# Line commented out by installer because it failed to verify:
#deb-src http://security.debian.org/ lenny/updates main contrib
# Line commented out by installer because it failed to verify:
#deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib
# Line commented out by installer because it failed to verify:
#deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib
# deb cdrom:[Debian GNU/Linux 5.0.2a _Lenny_ - Official i386 DVD Binary-1 20090817-00:51]/ lenny contrib main
#deb cdrom:[Debian GNU/Linux 5.0.2a _Lenny_ - Official i386 DVD Binary-1 20090817-00:51]/ lenny contrib main
deb http://security.debian.org/ lenny/updates main contrib
deb-src http://security.debian.org/ lenny/updates main contrib
deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib
deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib
deb http://172.17.90.152/lenny lenny main contrib non-free
deb http://172.17.90.152/multimedia_l lenny main
deb http://172.17.90.152/security_l lenny/updates main contrib
en este ultimo se establece la direccion ip que el esta pidiendo, pero no me deja descargar paquetes , estoy nueva en linux plis ayudeme a solucionarlo plis
Gracias espero respuestas
primero verifica si en ets direccion hay repos para tu debian, pero pq no usas los repos oficiales? mirros.kernel.org por ejemplo saludos.
Excelente!!! no pudo ser mejor.. Felicitaciones
que bueno lo de los poderes de super vaca.. a mi me salía con aptitude
Me ha sido muy útil (a falta de probarlo) eso de no tener internet es un poco complicado para un novato.
Creo que ahora sí sabré instalar un paquete local. Gracias!
hola estoy trabajando en debian squazee, instale ANT manualmente(variables de entorno y codigo) pero me manda este error cuanto ejecuto desde el sh$ ant
Exception in thread “main” java.lang.NoClassDefFoundError: org/apache/tools/ant/launch/Launcher
Caused by: java.lang.ClassNotFoundException: org.apache.tools.ant.launch.Launcher
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: org.apache.tools.ant.launch.Launcher. Program will exit.
alguien podria ayudarme