Equivalencias entre DPKG/RPM y APT/YUM
Las distribuciones basadas en Red Hat usan rpm como el formato de sus paquetes binarios y rpm / yum para administrarlos. Por otro lado, las basadas en debian usan deb y dpkg / apt-get. En la siguiente tabla presento las equivalencias para los usuarios que estén acostumbrado a uno de ellos y se muevan al otro.
Comparación entre dpkg y rpm
| DPKG | RPM | Descripción |
| dpkg -Gi paquete(s).deb | rpm -Uvh packages(s).rpm | Instalar/Upgradear archivo(s) del/de los paquete(s) |
| dpkg -r paquete | rpm -e paquete | Eliminar paquete |
| dpkg -l *palabra* | rpm -qa *palabra* | Mostrar todos los paquetes cuyo nombre contenga “palabra” |
| dpkg -l paquete | rpm -q paquete | Mostrar la versión del paquete instalada |
| dpkg -s paquete | rpm -q -i paquete | Mostrar todos los metadatos del paquete |
| dpkg -I paquete.deb | rpm -q -i -p paquete.rpm | Mostrar todos los metadatos de los archivos del paquete |
| dpkg -S /path/archivo | rpm -q -f /path/archivo | A que paquete pertenece el archivo |
| dpkg -L paquete | rpm -q -l paquete | Lista dónde se instalaron los archivos |
| dpkg -c paquete.deb | rpm -q -l -p paquete.rpm | Lista dónde los archivos serían instalados |
| dpkg -x paquete.deb | cpio -id | Extrae los archivos del paquete al directorio actual |
| dpkg –purge –dry-run paquete | rpm -q –whatrequires paquete | Lista los paquetes que requiere paquete (ver también whatrequires) |
Comparación entre apt-get y yum
| APT-GET | YUM | Descripción |
| apt-get dist-upgrade | yum update [lista de paquetes] | Upgradea todos los paquetes del sistema (en el caso de yum se puede especificar sólo algunos) |
| apt-get install | yum install | Instala la última versión del/de los paquete(s) |
| apt-get remove | yum remove | Elimina los paquetes del sistema |
| apt-cache list [lista de paquetes] | yum list [lista de paquetes] | Lista los paquetes disponibles en los repositorios |
Dpkg: el administrador de paquetes de Debian
Las diferentes distribuciones de Linux suelen incluir un software específico para administrar los paquetes del sistema. En el caso de Debian y sus derivados (como Ubuntu) se trata del popular apt-get y de dpkg. Este último se controla por medio de la línea de comandos o, incluso, utilizando interfaces gráficas. Nosotros veremos el primer caso.
Dpkg permite administrar, construir, instalar y remover paquetes del sistema. Para llevar a cabo su tarea mantiene cierta información sobre los paquetes disponibles que son su estado, el estado de selección y sus flags. En el caso de los estados pueden alterarse manualmente mediante un comando.
La tabla de paquetes que mantiene dpkg se vería como la siguiente:
| PAQUETE 1 | ESTADO | ESTADO DE SELECCION | FLAGS |
| PAQUETE 2 | ESTADO | ESTADO DE SELECCION | FLAGS |
| PAQUETE … | ESTADO | ESTADO DE SELECCION | FLAGS |
| PAQUETE N | ESTADO | ESTADO DE SELECCION | FLAGS |
El estado representa precisamente en qué estado se encuentra en el sistema. Algunos estados disponibles hasta la versión actual son:
| installed | Instalado. |
| not-installed | No fue instalado. |
| config-files | Sólo existe la configuración del paquete en el sistema. |
| unpacked | Sólo ha sido desempaquetado pero no configurado. |
| half-installed | La instalación había comenzado pero no fue completada por alguna razón. |
| half-configured | Se desempaquetó y la configuración había empezado pero finalizó por alguna razón. |
| triggers-awaited | Está esperando de alguna activación. |
| triggers-pending | El paquete ha sido activado. |
El estado de la selección representa la acción a realizar sobre el paquete en cuestión. Los mismos pueden ser:
| install | El paquete fue seleccionado para instalar. |
| hold | Se marcó en espera y no va a ser manipulado por dpkg. |
| deinstall | El paquete es seleccionado para su desinstalación aunque se mantendrán los archivos de configuración. |
| purge | El paquete es seleccionado para su desinstalación, incluyendo sus archivos de configuración. |
Los flags son banderas o etiquetas que avisan sobre el estado de un paquete. Por ejemplo, si el flag reinst-required está activado significa que el paquete necesita de una reinstalación.
Wall: chat en una consola Unix
Wall es una utilidad estándar de Unix que permite comunicar usuarios de un mismo sistema vía consola. Es bastante primitivo pero puede sernos de utilidad en más de una oportunidad. Al enviar un mensaje lo reciben todos los usuarios logueados que tengan una consola abierta logueada en el sistema. Además, el mensaje les aparece en pantalla sobre cualquier cosa que estén viendo, con lo cuál se debe tener cierta consideración al utilizarlo. A continuación un ejemplo:
Consola del usuario que envía el mensaje
sh-3.2# wall
esto es un mensaje con wall
Broadcast Message from leandro@scarlet
(/dev/ttys000) at 16:11 BRT...
esto es un mensaje con wall
Consola del usuario que recibe el mensaje
Broadcast Message from leandro@scarlet
(/dev/ttys000) at 16:11 BRT...
esto es un mensaje con wall
Comandos de Unix: apropos
Es muy común olvidar el nombre de una aplicación o un comando en Unix, sobre todo si no lo usamos frecuentemente. El comando apropos, estándar en Unix, nos permite encontrar aquellos programas que coincidan con la cadena de caracteres que le pasamos como argumentos. En realidad, lo que hace el mencionado comando es buscar en las páginas de los manuales aquellas aplicaciones que coincidan con nuestra búsqueda y las lista en pantalla. Por ejemplo, deseo buscar los programas que contengan web browser en su descripción:
leandro@megan:~$ apropos "web browser"
google-chrome (1) - the web browser from Google
w3m (1) - a text based Web browser and pager
www-browser (1) - a text based Web browser and pager
Strace: analizar llamadas al sistema de un proceso
El comando strace nos va a permitir realizar un diagnostico sobre la ejecución de una aplicación, generando una salida con todas las llamadas al sistema que invoque la aplicación durante su ejecución.
Por ejemplo, supongamos que necesitamos analizar el comando host (comando para resolver dns) y que particularmente nos interesa saber qué archivo/s abre para poder devolvernos la IP dado un dominio. Para este caso, probemos con Google.
matias ~ $ host www.google.com.ar
www.google.com.ar is an alias for www.google.com.
www.google.com is an alias for www.l.google.com.
www.l.google.com has address 64.233.163.147
www.l.google.com has address 64.233.163.99
www.l.google.com has address 64.233.163.103
www.l.google.com has address 64.233.163.104
Ahora ejecutemos el comando strace pasándole como parámetro el que acabamos de ejecutar. La salida generada es bastante extensa por lo cual para el ejemplo la recorto y dejo solamente la parte que nos interesa.
matias ~ $ strace host www.google.com.ar
futex(0x27a2c0, FUTEX_WAKE_PRIVATE, 2147483647) = 0
time(NULL) = 1258589891
open("/etc/resolv.conf", O_RDONLY|O_LARGEFILE) = 6
fstat64(6, {st_mode=S_IFREG|0644, st_size=53, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7709000
read(6, "# Generated by NetworkManager\nna"..., 4096) = 53
read(6, "", 4096) = 0
close(6)
Si analizamos un poco esta salida detectamos en este caso que llama a la system call open, abre el archivo /etc/resolv.conf como readonly y lo identifica con el número 6. Después lee dos líneas del archivo 6, la primera está comentada y la segunda contiene el servidor dns al cuál le debe realizar la consulta por el dominio www.google.com.ar. Por último cierra el archivo identificado con la llamada close.
El ejemplo visto es muy sencillo, pero la idea es que a partir del mismo se imaginen otros muchísimos casos donde sería de ayuda aplicar el comando strace.



