Tecnología

Cómo usar dpkg para reparar apt cuando se rompe – CloudSavvy IT

Bash Shell

Bash Shell

¿Alguna vez has roto apt? Para los profesionales experimentados de Linux, es bastante común (aproximadamente cada medio año) romper apt. Si conoce algunos comandos en dpkg, ¡a menudo puede solucionar el problema más fácilmente! Averiguar como.

Qué son apto y dpkg?

Si está usando una distribución basada en Debian como Ubuntu o Mint, su computadora usa apto para manejar paquetes. Apt significa Herramienta de embalaje avanzada, que le permite instalar, desinstalar, purgar y administrar paquetes Debian.

además apt (usado en la línea de comando), es probable que su computadora tenga un administrador de paquetes de escritorio de nivel superior / general, que simplemente usa apt, o quizás dpkg, en el fondo.

El administrador de paquetes para Debian dpkg es una alternativa a la gestión de paquetes en instalaciones basadas en Debian. Es un nivel mucho más bajo que apt, dándote más libertad, pero también presentando un mayor riesgo de romper cosas.

Esta es la razón por la que (a menos que sea un ingeniero de DevOps experimentado) te recomiendo que utilice apt en todo momento, aumentándolo con dpkg tan pronto como tenga problemas.

Adoptar este enfoque paso a paso le ofrece lo mejor de ambos mundos: la estabilidad y la facilidad de uso del apt gestor de paquetes, con el poder y la granularidad del dpkg Administrador de paquetes Debian, una vez que lo necesite.

Digamos, por ejemplo, que tiene un paquete que acaba de instalar, que de alguna manera terminó rompiendo el apt. O, quizás, la instalación de un paquete se interrumpió accidentalmente.

Cualquiera que sea la causa, apt ahora se considera roto, y ya has probado cosas como sudo apt update --fix-missing y sudo apt install --fix-broken en vano. Si es así, entonces …

Bienvenido a dpkg

Cuando tu apt está roto, no es divertido. Si es De Verdad roto, es aún menos divertido. Incluso si alguien sabe lo que está haciendo, a veces se necesita un cierto nivel de arte, y definitivamente, habilidad, para arreglar un sistema de empaque roto.

El término «arte» es bastante aplicable, ya que tiene una idea o sensación mientras realiza varios pasos de solución de problemas, especialmente si lo ha hecho con frecuencia, si algo funcionará o no durante un reinicio.

El riesgo siempre es que el sistema de empaquetado esté tan dañado que, si reinicia, es posible que su instancia de Linux no vuelva a aparecer y que se requiera una resolución de problemas adicional y potencialmente aún más compleja.

Me gustaría decir en este punto que todo esto se puede evitar fácilmente ejecutando algunos comandos simples, pero lamentablemente, ese no es el caso. El hecho es que cuanto más sepa, más fácil será arreglarlo y más confianza tendrá para saber si está listo para reiniciar el sistema o no.

Aquí es donde llegamos dpkg. La dpkg El programa nos permite un control mucho más granular sobre todos los paquetes instalados, y aunque existe un mayor riesgo de que algo salga mal, también hay mucho más poder para cambiar un sistema exactamente de la manera que queremos. Vamos a sumergirnos.

Si está interesado en Linux en general, también puede leer nuestra serie de tres partes Bash Automation & Scripting.

Básico dpkg Uso

Podemos ver los paquetes actualmente en el sistema simplemente ejecutando dpkg -l. Como es probable que la salida sea muy detallada (aunque normalmente está paginada), puede utilizar un grep para limitar los resultados.

dpkg -l | head -n5 && dpkg -l | grep 'gnome-calculator'
dpkg -l | grep 'gnome-calculator'

Nuestra primera ejecución de dpkg

El primer comando es en realidad una combinación de dos comandos (separados por &&, que literalmente significa: solo ejecute el segundo comando si el primero tiene éxito).

En el primero de estos dos comandos, tomamos las primeras cinco líneas (usando una tubería | y head -n5), y luego, en el segundo comando, buscamos enumerar la salida que estamos buscando. En este caso, estamos buscando el texto gnome-calculator.

La línea / comando secundario debajo muestra una versión que normalmente usaríamos. Una vez que alguien está familiarizado con la sintaxis del dpkg salida, las primeras cinco líneas suelen ser innecesarias. Tenga en cuenta que la primera columna se refiere a (visualmente) Desired=, con la segunda columna refiriéndose a Status=, y la tercera columna para Err?=. Si sigue visualmente las líneas, verá cómo se conectan rápidamente.

Como el nuestro gnome-calculator se ha instalado correctamente sin errores actuales, no hay un código de tercera columna debajo Err?=. También notamos aquí que uppercase=badestá escrito en la información breve relacionada con la tercera columna. Como se indicó anteriormente, en nuestro caso, está en blanco.

La primera columna muestra el estado deseado y la segunda columna muestra el estado actual. Ambos se muestran como i (Install[ed] y Inst[alled] respectivamente, y este (ii) es la secuencia más común que (querrá) ver. Básicamente significa que everything is fine, that the package is installed, and that there are no issues.

También tenga en cuenta que, en las descripciones de las columnas entre paréntesis, la letra mayúscula indica la conexión entre cualquier letra posible vista y el término relevante. Por ejemplo, considere cómo f se refiere a halF-conf, notando las mayúsculas F en el mismo.

Ahora echemos un vistazo a otra salida para comparar. Esta vez, dejaremos las primeras cinco líneas y podrá acostumbrarse un poco más a leer el resultado incluso sin los encabezados.

dpkg -l | grep 'mintwelcome'

dpkg -l |  salida grep 'mintwelcome'

Aquí vemos el interesante resultado de rc, dónde ii solía ser para el gnome-calculator. Si busca el r en el primero Desired= descripción de la columna que vimos arriba, puede ver que significa Remove[d], y eso c en la segunda columna representa Conf-files.

¡Ajá! Esto (mintwelcome, un paquete de bienvenida en Mint) es un paquete que desinstalamos en algún momento, pero los archivos de configuración del mismo permanecen. ¡Vamos a purgarlo!

dpkg --purge 'mintwelcome'
sudo dpkg --purge 'mintwelcome'
dpkg -l | grep 'mintwelcome'

Purga de archivos de configuración 'mintwelcome' con dpkg

Tenga en cuenta que también puede utilizar el -P taquigrafía en lugar de usar --purge.

En el primer comando, podemos intentar purgar mintwelcome sin uso sudo. Sin embargo, esto no funcionará. Necesita privilegios de superusuario / nivel raíz para desinstalar (o instalar o purgar) paquetes. Podemos correr de nuevo usando sudo, y nuestro paquete será purgado.

Tenga en cuenta que el término purga es usado por ambos apt así como por dpkg para indicar que queremos purgar completamente un paquete en lugar de simplemente desinstalarlo, lo que dejará los archivos de configuración.

Asegurándose

Confío en que empiece a apreciar el poder, el control y la granularidad que dpkg puede proporcionarle al administrar paquetes en su distribución basada en Debian, como Ubuntu o, en este caso, Mint. Sería fácil, por ejemplo, buscar restos de archivos de configuración de paquetes previamente desinstalados simplemente ejecutando:

dpkg -l | grep '^rc'

Salida de listado de dpkg para archivos de configuración comunes de javascript

Antes de eliminar cualquiera de estos archivos de configuración, querrá asegurarse doblemente de que no haya paquetes instalados con un nombre similar. Por ejemplo, en este caso, podemos ejecutar:

dpkg -l | grep 'javascript'

dpkg -l |  salida grep 'javascript'

Observe cómo eliminamos la segunda parte de 'javascript-common' buscar 'javascript'.

¿Es seguro eliminarlo o no? Puedes ver cómo un gran poder conlleva una gran responsabilidad, como siempre en la vida. La decisión de eliminarlo o no es tuya. Por lo general, hay tres cosas que debe tener siempre en cuenta al trabajar con dpkg:

primeramente, querrá verificar, verificar dos veces y verificar tres veces para estar seguro. Por ejemplo, en la primera salida anterior, podríamos haber seguido adelante y haber eliminado con indiferencia javascript-common sin comprobar si había otros paquetes de Javascript en el sistema.

¿Fue el mejor curso de acción? Quizás, pero el nivel de seguridad / confianza seguramente bajó tan pronto como hicimos nuestra primera verificación, ya que definitivamente hay otros paquetes de Javascript en el sistema.

Además, tenga en cuenta que realmente no hay nada roto aquí. Está bien dejar los archivos de configuración para este paquete aparentemente eliminado. El viejo adagio “Si no está roto, no lo arregles” seguramente parecería aplicarse en este caso. Es bueno tenerlo en cuenta al usar dpkg.

en segundo lugar, es importante recordar que apt es un administrador de paquetes que mantiene todas las conexiones (es decir, versiones y dependencias) entre paquetes en mente al instalar, desinstalar o depurar paquetes.

Este no es el caso de dpkg, que está mucho más basado en paquetes. Hay más granularidad, pero también más riesgo de romper cosas. Si un paquete se basa en otro o en una biblioteca, alguien seguramente romperá las cosas simplemente desinstalando el paquete principal usando dpkg.

En tercer lugar, la mayoría de los paquetes de Linux tienen muchos dependencias. Por lo tanto, no se recomienda usar simplemente dpkg para la gestión de paquetes estándar, reiterando nuestro consejo original de utilizar apt por defecto y cambiar a dpkg cuando sea necesario.

Para eliminar / desinstalar un paquete en lugar de purgarlo (es decir, dejar los archivos de configuración), puede utilizar el --remove (o -r) opción a dpkg. Para verificar un paquete, use --verify (o -V). La --audit (o -C) contra un paquete comprueba la coherencia y la cordura de la base de datos para el paquete (o para todos los paquetes si no se especifica ningún paquete).

Para obtener más opciones, consulte man dpkg ejecutado desde su terminal. También hay comandos específicos y más complejos que se pueden usar para varios problemas del sistema de empaque. Para estos, generalmente es mejor emplear su motor de búsqueda favorito para el problema o situación específica que se observa en el momento en que ocurre. A menudo, alguien más ya se ha encontrado con él y ha documentado los detalles. Si descubre algo nuevo, tómese unos minutos para registrar sus hallazgos en algún foro o hilo de discusión relevante.

Terminando

En este artículo, comenzamos a explorar dpkg y cómo puede ayudarnos con la gestión granular de paquetes, a diferencia de apt, que manejará paquetes y todas sus dependencias. Recuerde, en estas situaciones complejas de depuración de problemas de administración de paquetes, un gran poder conlleva una gran responsabilidad.

También vimos cómo seguir un enfoque más reacio al riesgo mientras nos dimos cuenta de que la depuración en profundidad de la gestión de paquetes es similar al arte, y cuanto mejor sea un pintor, más exitosa será la pintura; ejem, el reinicio será.

Leave a Comment

You may also like