"Después del juego es antes del juego"
Sepp Herberger

miércoles, 21 de octubre de 2015

¿Y tú de quién eres?

Más de una vez he necesitado saber la procedencia de un fichero que encontramos dentro de nuestro sistema Debian y no se de dónde ha salido. Los pasos que sigo son:

1) Averiguar a que paquete pertenece el fichero.

Eso lo hago con:
# dpkg -S /usr/lib/x86_64-linux-gnu/libavformat.so.54
libavformat54:amd64: /usr/lib/x86_64-linux-gnu/libavformat.so.54
Como vemos, el fichero en cuestión vino con el paquete libavformat54:amd64.

Si nos dice:
dpkg-query: no se ha encontrado ningún paquete que corresponda con el patrón ....
entonces el fichero no ha venido dentro de un paquete del sistema y va a ser bastante mas complicado saber su procedencia.

2) Averiguar de dónde proviene el paquete.

Los paquetes de nuestro sistema pueden venir de distintos repositorios o haber sido instalados a mano, ¿cómo sabemos su origen?, pues con:
# apt-cache policy libavformat54:amd64
libavformat54:
 Instalados: 8:1.0.10-dmo1
 Candidato:  8:1.0.10-dmo1
 Tabla de versión:
     *** 8:1.0.10-dmo1 0
              500 http://ldap/mirrors/multimedia-wheezy/ wheezy/main amd64 Packages
              100 /var/lib/dpkg/status
Segun se ve, viene de multimedia-wheezy. En mi caso de un mirror local que hago cada noche en mi servidor "ldap". De no tener mirror su origen seria el repositorio oficial de Debian Multimedia: http://www.deb-multimedia.org/dists/oldstable/main/.

Si el paquete ha sido instalado a mano habría que busca el origen del .deb por Internet. A las malas, podemos usar dpkg-repack para "reconstruir" el paquete .deb desde el sistema donde está instalado, de tal forma que tenemos el .deb tal y como lo descargamos originalmente, con la ventaja de que podremos guardar una copia del mismo y reinstalarla cuando y donde queramos.

Bueno, pues con esto ya se de donde vino el fichero y puedo instalar el paquete que lo trajo cuando me haga falta tener el mismo fichero en otra máquina.

3) ¿Y si el fichero no está en nuestro sistema, pero queremos saber en que paquete de los repositorios está?.

Si queremos buscar un fichero en paquetes no instalados en el sistema usamos apt-file:
# apt-get install apt-file
# apt-file update
# apt-file find kwallet.h
kdelibs5-dev: /usr/include/kwallet.h
libkf5wallet-dev: /usr/include/KF5/KWallet/kwallet.h
Ojo: esto sólo buscará el fichero en los repositorios que tenemos configurados en el sources.list y sources.list.d de nuestra máquina, no mas allá.

Bueno, pues con estos consejos podremos localizar el origen de los ficheros que rulan por nuestro sistema, de igual manera que se puede hacer con la herramienta equivalente de Windows....



Y así es como tenemos identificado cualquier fichero que ande por nuestros discos duros.

No hay comentarios:

Publicar un comentario