Ir al contenido

Entradas etiquetadas como ‘consola’

23
feb

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

13
feb

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.

22
ene

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

23
nov

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

20
nov

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.