Custom Search
Bloggers Activos
Chavez y su paranoia. blacksoul
Spanish for Gringos! rnstux
Etapas de un Peda rnstux
Aprenda japonés: rnstux
Debian testing sin entorno gráfico en Think Pad koquemon
Rucotrivia rnstux
Hardcore “Got Milk?” asarch
LyX asarch
Kernel “combinado” de NetBSD (reloaded) asarch
80's-90's rnstux
Last Download
Segunda Fundación
Segunda Fundación
Dell se pone las pilas
vendaval
¡¡¡Chhaaaaconaaaazoooo!!!
asarch
The Mythical 4.4
vendaval
Creel, el borrado
aarkerio
1er Micro-Howto, sobre Base de Datos.
rnstux
2do.
rnstux
3ero.Base de datos
rnstux
Los desarrolladores de OpenBSD: un montón de monos masturbándose. Linus
asarch
La economía mexicana sigue cayendo
aarkerio
Nocaseglobal
rnstux
Google Groups Karamelo
Visit this group
GNU/Linux
GNU/Linux
Hacktivismo
Hacktivismo
Debian
Debian
NetBSD
NetBSD
WWW
WWW
Guia Linux
Guia Linux
Server Side
Server Side
Ofimatica
Ofimatica
Despabilando...
Despabilando...
Mundo Maya
Mundo Maya
Literatura
Literatura
Agora
Agora
Psicologia
Psicologia
Economia
Economia
Ambientalismo
Ambientalismo
Desarrollo
Desarrollo
Biologia
Biologia
Tú. Conocimiento
Tú. Conocimiento

Hacktivism

LinuxChix button

Debian \ Apt-get en Debian
Debian
Apt-get en Debian

Este artículo ha sido consultado en 2,300 ocasiones.

La distribución Debian se basa en paquetes .deb, incluso el kernel se instala a través de un paquete deb.

Las herramientas dpkg y apt-get son las responsables de que mucha gente elija a Debian como su distribución por su configurabilidad y potencia. apt-get y dpkg no instalan binarios abandonados a su suerte como otros sistemas de paquetes, sino que poseen verdaderas rutinas inteligentes pre-install y post-install que modifican la configuración según el ambiente y "guian" al programa para lograr una buena instalación. Estos scripts se pueden ejecutar de nuevo si deseamos cambiar la configuración de un programa. Es esta flexibilidad detrás de cada paquete lo que hace de dpkg y apt-get unas herramientas hasta la fecha insuperadas.

El sistema de paquetes de Debian se maneja a través de una base de datos que es consultada cada vez que se desea instalar, actualizar o remover un paquete. Cuando se lleva a cabo una de estas operaciones, la base de datos se bloquea para asegurar su integridad, una vez que el proceso a concluido satisfactioriamente, la base de datos se desbloquea. Esto significa que no se pueden ejecutar dos instancias del comando dpkg o apt-get simultáneamente.

apt-getenacción
apt-get en acción

DPKG

El comando dpkg fue el primer comando desarrollado para instalar y desinstalar paquetes individuales en Debian, dado que afecta a todo el sistema solo el usuario root puede ejecutarlo. La sintaxis básica del comando es la siguiente:

#dpkg -i nombre_del_paquete.deb

La opción -i (install) instala el paquete mientras que la opción -r (remove) lo elimina del sistema. Al usar dpkg es necesario incluir la extensión .deb, lo cual es molesto cuando queremos instalar un paquete como libc6-dbg_2.3.2.ds1-12_i386.deb. Si, los nombres de paquete son largos, pero dpkg acepta el asterisco (*) como comodín para el conjunto de caracteres, de modo que una manera sencilla de instalar este paquete sería:

# dpkg -i libc6-dbg*.*

Además de esta facilidad, cuando existe un nombre de archivo o directorio largo, el BASH de Linux autocompletará el nombre si teclamos las primeras letras del paquete y luego presionamos la tecla tab.

El orden de la instalación de los paquetes es importante, aún cuando tenga todos los paquetes necesarios en un directorio. Un simple:

#dpkg -i *.*

No es garantía de que funcione, pero no hay de que preocuparse, dpkg le guiará en el proceso indicándole que paquetes debe instalar antes y cuales después.

Hay casos (sobre todo en las versiones unstable) en las que nos encontramos en una situación irritante: dpkg envia el mensaje de que el paquete A no puede instalarse porque falta el paquete B y al intentar instalarlo dpkg envia el mensaje de que el paquete B no puede instalarse porque falta el paquete A. Si usted es un usuario con experiencia y sabe cual paquete debe instalarse para destrabar la situación, puede forzar la instalación del paquete con

# dpkg --force-all -i nom_paquete.deb

Antes de hacer esto revise que sus repositorios no esten mezclados y que ha hecho un dist-upgrade. Padawan: usa esta opción de forzado de paquetes con sabiduría y prudencia :-).

Para que se nos presente una lista de todos los paquetes que tenemos instalados en nuestro sistema:

# dpkg -l

Si queremos saber si ya está instalado algún programa, por ejemplo Gimp, tecleamos:

# dpkg -l | grep gimp

Este comando nos devolverá los paquetes que contegan el string "gimp" y sus versiones de paquete.

APT-GET

Las dependencias son paquetes adicionales que se deben instalar (o remover) antes de instalar un paquete. Por ejemplo, para instalar el paquete apache necesitara entre otros, el paquete apache-common, pero a su vez este paquete tiene una dependencia con apache-utils. Esto se conoce como el infierno de las dependencias. Un problema con el comando dpkg es que no resuelve dependencias, las enumera, pero no las resuelve. Los desarrolladores de Debian solucionaron brillantemente el problema con la creación de repositorios de paquetes y del programa apt-get, una joya insuperada del mundo Debian.

En el archivo /etc/apt/sources.list se encuentra la lista de repositorios que usa apt-get para descargar paquetes de la red.

Un repositorio es simplemente un directorio (generalmente en Internet) donde se encuentran los paquetes que los desarrolladores de Debian crean día con día. Los repositorios poseen tres ramas, las ramas identifican el tipo de licencia de los paquetes:

  1. main: es donde se encuentran la gran mayoría de los paquetes, todos los paquetes de esta rama son paquetes de código abierto cuya licencia es compatible con las estipuladas por la Free Software Foundation.
  2. contrib: son paquetes de contribución, muchos de estos paquetes son de código abierto, pero su licencia no es compatible con las de la FSF.
  3. non-free: son paquetes de licencia propietaria aunque se pueden usar gratis por tiempo indefinido.

Bien, dicho en sencillas palabras, el programa apt-get consulta el archivo /etc/apt/sources.list, compara la lista de paquetes del repositorio con la base de datos de su sistema y, si existen diferencias, instala los paquetes nuevos. Veamos dos ejemplos de repositorios típicos:

deb http://debian.lcs.mit.edu/debian testing main contrib non-free
deb http://debian.rutgers.edu/ sarge main

La línea con el inicio deb indica que se trata de paquetes binarios ya compilados, la sección http:// indica que ese es el protocolo que se debe usar para descargar los archivos, la sección debian.lcs.mit.edu/debian y debian.rutgers.edu/ indica en que servidor y que ruta en ese servidor debe tomar apt-get para encontrar los paquetes, testing le dice a apt-get que se trata de la versión de desarrollo de Debian, también puede usar el nombre clave Sarge. Las secciones main, contrib y non-free (como ya hemos visto) indican que apt-get debe buscar en todos los tipos de licencia.

Otro ejemplo de línea en el archivo sources.list:

deb-src ftp://debian.lcs.mit.edu/debian stable main

Esta línea señala que se trata de código fuente deb-src es decir que no son paquetes binarios, que debe usarse el protocolo ftp para traer estos paquetes, que la versión es la estable y que sólo busque paquetes de la sección principal (main) que es con mucho la más grande de Debian. Si se és un usuario nuevo en Linux es improbable que necesitemos un repositorio de fuentes, lo he puesto en el ejemplo para que el usuario conozca los diferentes tipos de repositoros. Mi archivo sources.list luce así, (las líneas que comienzan con un sostenido ( # ) son ignoradas):

#Mi repositorio principal: un mirror en la UNAM, México
deb http://nisamox.fciencias.unam.mx/debian/ unstable main contrib non-free

Una vez que el archivo del repositorio está creado se debe actualizar la lista de paquetes disponibles y sus dependencias, para ello usamos el comando apt-get así:

#apt-get update

Por supuesto, usted debe estar conectado a Internet para que sea posible actualizar la base de datos de paquetes. Luego de que la opción update ha actualizado los paquetes debemos actualizar nuestro sistema con:

# apt-get -f dist-upgrade

Lo que hace este comando es decirlo a apt-get "ve, busca y trae los paquetes más nuevos si es que los hay". La opción -f forza la continuación de la actualizacion si algo sucede. Después de la actualización podemos descargar el programa que deseemos con el comando:

#apt-get install nombre_del_paquete

A diferencia de dpkg, con apt-get no se debe poner el .deb al final del nombre del paquete. Para saber el nombre exacto de un paquete podemos entrar en http://packages.debian.org y buscarlo o con el comando:

# apt-cache search nombre_del_paquete

Por ejemplo, si estamos buscando un quemador de CDs podemos teclear:

# apt-cache search burning

que nos devolverá una lista de programas relacionados con la palabra “burning”, entre ellos K3B, un excelente quemador para KDE. Si queremos ver más detalles de este paquete tecleamos:

# apt-cache show k3b

que nos mostrará otros aspectos del paquete como el tamaño, dependencias, la versión y una mayor descripción. Si después de ver la información hemos decidido instalarlo, lo hacemos con:

# apt-get install k3b

esto creará dependencias como el programa mkisofs y cdrecord que también serán instalados ¡apt-get rules!

Al instalar un paquete, apt-get le mostrará paquetes recomendados (recommended packages) y paquetes sugeridos (suggested packages). Los paquetes recomendados son aquellos sin los cuales alguna funcionalidad del programa se pierde (aunque esa funcionalidad no es requerida por la gran mayoría de los usuarios). Por otra parte, los paquetes sugeridos son aquellos que se relacionan de manera menos importante con el programa que se va a instalar. Es decir que los recomendados poseen mayor preeminencia que los sugeridos, de hecho, algunas herramientas como "aptitude", instalan los paquetes recomendados junto con las dependencias de manera automática. Conclusión: si algo no funciona con su programa, instale los paquetes recomendados.

Al igual que con dpkg, podemos usar el asterisco para instalar y remover paquetes:

# apt-get remove mozill*

Por omisión, apt-get no desinstala la documentación ni los archivos de configuración de los paquetes. Para evitar esto y borrar totalmente un paquete use la opción "--purge":

# apt-get remove --purge apache*

Todos los paquetes que son instalados con apt-get, primero se descargan en el directorio "/var/cache/apt/archives". Luego de varias actualizaciones puede tener hasta un gigabyte de espacio ocupado por las varias versiones de los programas que se han instalado. Si desea dejar sólo las versiones más modernas en "/var/cache/apt/archives" teclee:

# apt-get autoclean

Si desea borrar todos los paquetes de "/var/cache/apt/archives" para liberar espacio en disco:

# apt-get clean

Algunas veces, al instalar un paquete se nos preguntará si deseamos manejarlo con debconf, una herramienta de configuración exclusiva de Debian que modifica las configuraciones de los paquetes ejecutando la sección postinstall de los paquetes. Debemos contestar que si a esta pregunta y asì cada vez que queramos modificar una configuración podemos ejecutar el comando:

# dpkg-reconfigure nombre-del-paquete

Por ejemplo, de lunes a viernes obtengo la dirección IP de mi laptop de manera dinámica con el DHCP de la oficina, mientras los fines de semana la IP es estática para poder usar el viejo proxy/firewall que tengo en mi casa, así que cada lunes en la mañana y cada sábado a mediodía ejecuto el comando:

#dpkg-reconfigure etherconf

que actualiza la configuración de mi tarjeta de red. (Por supuesto, para que esto funcione antes debió instalar el paquete etherconf).

El programa Midnight Commander (mc) nos ayuda a trabajar con archivos, a hacer ligas simbólicas, tiene un excelente editor integrado, puede descomprimir archivos con su sistema de archivos virtuales (virtual file system) y puede usarse como cliente de ftp, es toda una joya, si aún no lo tiene instalado instálelo ahora y pronto descubrirá lo útil y poderoso que es:

#apt-get install mc

Para mantener un sistema Debian actualizado con una sola línea debe ejecutar:

#apt-get update && apt-get -f dist-upgrade && apt-get clean

por lo menos una vez a la semana, esto es muy importante por cuestiones de seguridad. La mayoría de los agujeros de seguridad se abren cuando el administrador del sistema no actualiza con la suficiente frecuencia.

El paquete deborphan nos sirve para remover los paquetes inútiles que se han ido acumulando en nuestro disco, estos paquetes "colgados" (generalmente librerías auxiliares de extraños nombres) fueron dependencias que se instalaron con algún paquete principal y luego no fueron removidas. Instale deborphan y posteriormente ejecute el siguiente comando para remover los paquetes colgados de su equipo (note las comillas inclinadas): .

#apt-get --purge remove `deborphan`

¡apt-get no encuentra los paquetes
porque estoy detrás de un proxy!

Si se esta detrás de un proxy es necesario indicarle a apt-get la dirección IP y el puerto de salida del proxy, con un editor de texto habrá los archivos ocultos /root/.bashrc y /root/.bash_profile (los archivos y directorios ocultos comienzan con un punto):

# mc -e /root/.bash_profile

y agregue las líneas que indican los datos del proxy, en mi caso he agregado estás dos líneas:

export http_proxy=http://128.19.54.25:8080/
export ftp_proxy=http://128.19.54.25:8021/

Cierre y abra la consola, para asegurarse que el proxy ya está definido escriba:

# echo $http_proxy

En caso de que cuente con un proxy transparente no es necesario agregar estás líneas, si no sabe cual es la dirección IP ni el puerto de su proxy revise las opciones de conexión de un navegador que salga a internet o más sencillo, pregunte a su administrador de redes.

Cuando el repositorio se cae

En algunas ocasiones, sobre todo los domingos y días festivos, nuestro repositorio habitual de paquetes se cae o no responde cuando necesitamos un paquete. En estos casos muchos acostumbramos buscar en google un ejemplo de archivo /etc/apt/sources.list para copiar y pegar. ¿Pero no sería mejor encontrar el mejor repositorio?

Debian cuenta con dos herramientas, apt-setup, un programa contenido en el paquete base-config, y netselect-apt, que puede bajarse con "apt-get install netselect-apt". El primer programa, apt-setup, nos pregunta cómo deseamos acceder a los paquetes: por http, ftp, directorios locales o CDROM. Luego nos pregunta en qué país estamos y al seleccionar uno nos da a elegir varios repositorios cercanos de cuya existencia quizás no estábamos enterados. Luego de seleccionar el repositorio se realiza un update y todo queda listo. Si no estamos en woody debemos editar el sources.list y cambiar en donde dice "stable" por "testing" o "unstable", según la rama en la que estemos, o queramos estar.

netselect-apt, por otra parte, descarga las lista de repositorios debian en todo el mundo, hace un escaneo y diagnóstico de velocidad y escribe un archivo sources.list en el directorio donde se ejecuto (debido a lo cual no debemos correrlo en /etc/apt ya que sobreescribiría nuestro archivo). En mi caso apt-setup y netselect-apt concuerdan en que el repositorio de la Universidad de México es el más cercano, pero habrá ocasiones en que no sea asi. En esos casos debemos probar primero con el repositorio de nuestro país, y si notamos una lentitud no acostumbrada probaremos con el que nos dice netselect-apt.

Con estos pasos siempre tendremos nuestros sistemas actualizados y con los parches de seguridad al día.


¿Dudas o preguntas? Suscríbase a la lista de correo Debian-Knoppix-Ubuntu

Ficha del autor:

manuel_ARRROBA_mononeurona.org
Manuel Montoya estudió neuropsicología en la facultad y en el Instituto de Biomédicas de la UNAM. Trabajó en Compaq de México como diseñador de software, tiene diez años de experiencia en Java, PHP y SQL. Le interesan muchas cosas y neciamente le da por escribir sobre todas ellas. Actualmente trabaja en Chipotle Software, desarrollando Karamelo, una herramienta de e-Learning. Jedit.org y WindowMaker son su editor y escritorio favoritos.
aarkerio
The most effective way to restrict democracy is to transfer decision making from the public arena to unaccountable institutions. Chomsky.
Ver todos los articulos de aarkerio

Última actualización: 2007-04-29 10:57:00-05

Printable version

on 15/7/07 Master_Mix wrote:
Orale, pues muy bueno tu artículo, yo he usado las instrucciones que mencionas pero sin adentrarme mucho en su verdadero funcionamiento, ahora que leí esto me doy cuenta que son mucho más poderosas de lo que aparentan a primera vista.
on 4/9/07 Magabu wrote:
Gracias. Muy bueno el material. Claro y al punto. Deberia estar en los how-to de Linux

Un Abrazo
Magabu

Add comment:



Captcha




Que estas haciendo?
der_teufelder_teufel está:
http://www.consultae nergetica.df.gob.mx/
8 hours, 12 minutes ago

der_teufelder_teufel está:
Julio 27, yo decido en la consulta sobre la reforma energética. PARTICIPA!!!
8 hours, 14 minutes ago

teoshoteosho está:
Alguno de ustedes ha jugado al World of Warcraft??
11 hours, 44 minutes ago

teoshoteosho está:
Buscando a Boro Boroboy
11 hours, 44 minutes ago

tonathiutonathiu está:
formateando una internet box
14 hours, 54 minutes ago

rnstuxrnstux está:
Otra día mas comiendo memelas! :(
19 hours, 40 minutes ago

Que estuvimos haciendo >>
Chipotle Software

Uso OpenOffice.org
Una vez a la semana
Nunca
Uso otra ofimática
Todos los días
Una vez al mes
Rapiditas
Problemas de Lenguaje en niños
14397 lecturas
Anticoncepción de Emergencia
12291 lecturas
Sexualidad infantil y juvenil
11316 lecturas
Rompiendo cualquier clave WEP en unos pocos minutos
9076 lecturas
Sinapsis y exocitosis
8317 lecturas
Mi primer CakePHP, mmmmm cakeee
6600 lecturas
Evolución filética en las hepáticas
6161 lecturas
BASH y Primeros Comandos
5083 lecturas
CakePHP II Active Record
4885 lecturas
Cómo convertirse en hacker
4339 lecturas
Add to Technorati Favorites

ir arriba
La monogamia es un problema social que la ciencia no ha podido resolver. Kinsey

The Queen is here Mozilla Firefox The Best DataBase CakePHP Framework XHTML GNU Hacker Chipotle Software

Too Cool for Internet Explorer