jueves, 10 de noviembre de 2016

debootstrap y chroot lo mejor para solucionar sistemas Debian dañados

Me he encontrado con el siguiente problema:
He borrado por error los paquetes críticos:

gzip, tar de un sistema Debian Jessie

para solucionar esto, en otro equipo Debian hice lo siguiente:

a) instalar debootstrap
# apt-get install debootstrap

b) Crear un directorio con un sistema base funcional similar al equipo dañado:
# debootstrap --verbose --arch=amd64 jessie fufo-deboostrap/
http://ftp.us.debian.org/debian/

c) Concatenar todos los ficheros ya que existen links simbólicos en el
directorio:
# tar -cvf /media/tavo/fufo-debootstrap.tar fufo-deboostrap/

d) Copiar el fichero .tar a un pendrive

e) Copiar el fichero .tar desde el pendrive, a la partición root del
disco donde está el sistema dañado, en caso de usar el modo de rescate
del instalador de Debian, iniciando un chroot en el entorno del
instalador, debería estar en: /target/media/fufo-deboostrap/

e.1) extraer el contenido del fichero .tar

f) salir del chroot del entorno del instalador e iniciar el chroot en
el entorno del sistema dañando.

g) Agregar al $PATH de root las siguientes ubicaciones:
echo $PATH
/usr/sbin:/usr/bin:/sbin:/bin
export PATH=$PATH:/media/fufo-deboostrap/usr/sbin:/media/fufo-deboostrap/usr/bin:/media/fufo-deboostrap/sbin:/media/fufo-deboostrap/bin

h) para verificar la ubicación de los comandos esenciales:
whereis gzip
whereis tar
whereis dpkg

i) Ahora sí, ya se puede continuar con la instalación:
# apt-get install -f

Fuentes consultadas:
[0] https://forums.bunsenlabs.org/viewtopic.php?id=1192
[1] http://shallowsky.com/blog/linux/install/update-via-chroot.html
[2] https://wiki.debian.org/Debootstrap
[3] http://unix.stackexchange.com/questions/97233/fixing-a-broken-packet-system-apt-get
[4] https://help.ubuntu.com/community/Installation/FromLinux#Debootstrap

¡que lo disfruten!

--
§~^Calabaza^~§ from Paraguay

miércoles, 9 de noviembre de 2016

Solucionando - dpkg-query: error: --listfiles necesita un nombre de paquete legal, pero `python-pil' no lo es: nombre ambiguo de paquete 'python-pil' con más de una instancia instalada

Haciendo un crossgrade[0] de Jessie desde i386 a amd64 me encontré que
no podía desinstalar un paquete por el siguiente error [1]:

--------------------------- INICIO ERROR
------------------------------------------
Leyendo lista de paquetes...
Creando árbol de dependencias...
Leyendo la información de estado...
Corrigiendo dependencias... Listo
Los paquetes indicados a continuación se instalaron de forma
automática y ya no son necesarios.
fuseiso9660 libumlib0
Utilice «apt-get autoremove» para eliminarlos.
Los siguientes paquetes se ELIMINARÁN:
python-pil:i386
0 actualizados, 0 nuevos se instalarán, 1 para eliminar y 9 no actualizados.
7 no instalados del todo o eliminados.
Se liberarán 1157 kB después de esta operación.
¿Desea continuar? [Y/n] E: No se pudo escribir el informe (¿Está
montado «/dev/pts»?) - posix_openpt (2: No existe el fichero o el
directorio)
(Leyendo la base de datos ... 235257 ficheros o directorios instalados
actualmente.)
Desinstalando python-pil:i386 (2.6.1-2+deb8u2) ...

dpkg-query: error: --listfiles necesita un nombre de paquete legal,
pero `python-pil' no lo es: nombre ambiguo de paquete 'python-pil' con
más de una instancia instalada

Utilice --help para obtener ayuda de la consulta de paquetes.
Traceback (most recent call last):
File "/usr/bin/pyclean", line 117, in <module>
main()
File "/usr/bin/pyclean", line 101, in main
pfiles = set(dpf.filter_out_ext(pfiles, ('.so',)))
File "/usr/share/python/debpython/files.py", line 77, in filter_out_ext
for fn in files:
File "/usr/share/python/debpython/namespace.py", line 77, in
add_namespace_files
for fn in files:
File "/usr/share/python/debpython/files.py", line 53, in from_package
raise Exception("cannot get content of %s" % package_name)
Exception: cannot get content of python-pil
dpkg: error al procesar el paquete python-pil:i386 (--remove):
el subproceso instalado el script pre-removal devolvió el código de
salida de error 1
dpkg-query: error: --listfiles necesita un nombre de paquete legal,
pero `python-pil' no lo es: nombre ambiguo de paquete 'python-pil' con
más de una instancia instalada

Utilice --help para obtener ayuda de la consulta de paquetes.
Traceback (most recent call last):
File "/usr/bin/pycompile", line 289, in <module>
main()
File "/usr/bin/pycompile", line 262, in main
options.force, options.optimize, e_patterns)
File "/usr/bin/pycompile", line 154, in compile
for fn, versions_to_compile in filter_files(files, e_patterns, versions):
File "/usr/bin/pycompile", line 109, in filter_files
for fn in files:
File "/usr/share/python/debpython/files.py", line 77, in filter_out_ext
for fn in files:
File "/usr/share/python/debpython/namespace.py", line 77, in
add_namespace_files
for fn in files:
File "/usr/share/python/debpython/files.py", line 69, in filter_public
for fn in files:
File "/usr/share/python/debpython/files.py", line 53, in from_package
raise Exception("cannot get content of %s" % package_name)
Exception: cannot get content of python-pil
dpkg: error al reorganizar:
el subproceso instalado el script post-installation devolvió el
código de salida de error 1
Se encontraron errores al procesar:
python-pil:i386
E: Sub-process /usr/bin/dpkg returned an error code (1)
---------------------------- FIN ERROR
---------------------------------------------

y haciendo un dpkg -l | grep python-pil

iF python-pil:amd64 2.6.1-2+deb8u2
amd64 Python Imaging Library (Pillow fork)
rF python-pil:i386 2.6.1-2+deb8u2
i386 Python Imaging Library (Pillow fork)


la solución fue:

a) Hacer copia de seguridad del fichero:
/var/lib/dpkg/status

b) editar el fichero arriba mencionado y buscar el paquete:
python-pil y renombrar la entrada del paquete amd64 a python-pil2

c) luego hacer el apt-get install -f fallido

d) luego volver a la normalidad el nombre del paquete cambiado previamente

Espero les sirva.

Fuentes consultadas:
[0] https://wiki.debian.org/CrossGrading
[1] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=810551

--
§~^Calabaza^~§ from Paraguay