Archivo para la Shell script categoría

Contigo no, Windows (o las bondades de Linux)

Publicado en GNU/Linux, Informática, Shell script con etiquetas , , el 20 Septiembre 2008 por orensbruli

Si alguien que no me conoce leyera lo que va de este blog pensaría que me dedico a la fotografía o que es mi única afición. Por fortuna o por desgracia, en realidad mi formación está centrada en la informática y mi experiencia laboral en la programación y la administración de sistemas Linux. Por eso este será mi primer, pero casi seguro que no único, post sobre estas cuestiones.

Probablemente es cierto que Linux (o GNU/Linux para que D. Richard Stallman no venga a buscarme) no es un sistema enfocado al usuario medio (aunque la gente de ubuntu esté haciendo mucho para limar estas asperezas). Pero de lo que no cabe ninguna duda, al menos para mi, es de que este sistema es la ostia, por decirlo mal y pronto.

Richar Stallman

Richard Stallman

A uno que es así de enreda, le ha dado esta noche de sabado por ver que paquetes tenía pendientes de actualizar en su Debian. Pero no contento con tener que instalar todos esos paquetes que aparecian en mi apt-get upgrade, he concretado más mis intenciones: “solo quiero actualizar los paquetes que estén relacionados con los sensores de la placa base”. Así que, teniendo en mente el programa ksysguard que me permite ver el estado de la máquina (gracias a estos sensores de la placa) me he puesto a escribir un “pequeño” comando de una sola línea para instalar los paquetes que quería. Lo voy explicando por pasos:

Compruebo las librerías de las que hace uso ksysguard con el comando ldd:

ldd /usr/bin/ksysguard

Como la salida de este comando me da más información de la que quiero utilizo cut para quedarme solo con el nombre de la librería:

ldd /usr/bin/ksysguard | cut -d’ ‘ -f 1

Utilizo la salida de este comando para localizar los paquetes en los que se encuentran estas librerías haciendo uso de dpkg -S (las comillas “ permiten utilizar la salida de lo que va dentro como parametro de dpkg):

dpkg -S `ldd /usr/bin/ksysguard | cut -d’ ‘ -f 1`

Vuelvo a quedarme con la parte que me interesa de la salida de este comando con cut:

dpkg -S `ldd /usr/bin/ksysguard | cut -d’ ‘ -f 1` | cut -d’:’ -f1

Elimino los elemento repetidos con uniq:

dpkg -S `ldd /usr/bin/ksysguard | cut -d’ ‘ -f 1` | cut -d’:’ -f1 | uniq

Y la salida de este comando (que son los paquetes que contienen las librerías que utiliza ksysguard), la utilizo para instalar los paquetes que quería (esta vez uso $(  ) en vez de las comillas):

apt-get install $(dpkg -S `ldd /usr/bin/ksysguard | cut -d’ ‘ -f 1` | cut -d’:’ -f1 | uniq)

Y listo. Ya tenemos un comando que nos permite instalar las librerías de las que depende un programa. Aunque puede parecer una chorrada, lo cierto es que comandos como este me han solucionado alguna violación de segmento por dependencias en programas que por algún motivo no se cumplian.

Seguro que hay una forma más sencilla de hacerlo (y si alguien la sabe es bienvenida), pero a mi esta me ha resultado entretenida.

A alguien se le ocurre una línea como esta en para la “shell” de windows? ;)