¿Cómo puedo eliminar el registro de un paquete instalado sin eliminar ningún archivo?

8

Cometí el error de instalar Jenkins desde el paquete ubuntu, lo que causa un estrés interminable por aquí en la administración de actualizaciones. No tengo nada en contra de cómo Ubuntu organizó los archivos en el disco.

Para los curiosos, jenkins tiene un administrador de paquetes interno que descarga actualizaciones de complementos, y se requiere una cuidadosa coordinación de las principales instalaciones de jenkins y actualizaciones de complementos para evitar condiciones caóticas. Así que tenemos que bloquear cuidadosamente las actualizaciones de jenkins mediante, oh, apt-get upgrade cuando no sabemos exactamente qué está pasando con los complementos.

Entonces, lo que me gustaría hacer es convencer a dpkg / apt-get de que olvide que hay un paquete jenkins, sin dejar que elimine ningún archivo existente.

Por cierto, la 'instalación' consiste en un archivo '.war' más los enlaces /etc/init.d.

Obviamente, puedo hacer una copia de seguridad de lo que me importa, eliminar el paquete y restaurar, pero esperaba saber que había una oscura opción dpkg que olvidó eliminar archivos.

¿Hay alguna manera?

bmargulies
fuente
Tendría que instalarlo fuera de apt-get, desde la fuente (hacer la instalación) o haciendo una copia de seguridad de todos los archivos, eliminando el paquete y restaurando los archivos de la copia de seguridad. Creo que esta es una pésima solución a su problema, tal vez si describió mejor el problema, podemos darle una mejor solución.
Panther
Describió bien el problema. Los pseudopaquetes pueden resolver casi cualquier cosa. podrías resolver esto con un pseudopaquete vacío.
RobotHumans
¿Cómo solucionaría algo un pseudopaquete vacío? Quiere que apt-get olvide que el paquete está instalado para que no se actualice.
tgm4883

Respuestas:

9

La "mejor" forma de hacerlo es manipulando /var/lib/dpkg/status.

¡SIN EMBARGO!

Ese archivo tiene una sintaxis sensible; Hacerlo de manera incorrecta puede dañar la administración de su paquete.

Esto es lo que tienes que hacer:

Encuentre un bloque que se parezca un poco a esto (el aspecto real puede depender del paquete que está tratando de hacer 'invisible'):

Package: xserver-xorg-input-vmmouse
Status: install ok installed
Priority: optional
Section: x11
Installed-Size: 136
Maintainer: Ubuntu Developers <[email protected]>
Architecture: amd64
Version: 1:12.7.0-2
Provides: xorg-driver-input
Depends: libc6 (>= 2.7), xorg-input-abi-12, xserver-xorg-core (>= 2:1.10.0-0ubuntu1~), xserver-xorg-input-mouse, udev
Description: X.Org X server -- VMMouse input driver to use with VMWare
 This package provides the driver for the X11 vmmouse input device.
 .
 The VMMouse driver enables support for the special VMMouse protocol
 that is provided by VMware virtual machines to give absolute pointer
 positioning.
 .
 The vmmouse driver is capable of falling back to the standard "mouse"
 driver if a VMware virtual machine is not detected. This allows for
 dual-booting of an operating system from a virtual machine to real hardware
 without having to edit xorg.conf every time.
 .
 More information about X.Org can be found at:
 <URL:http://www.X.org>
 .
 This package is built from the X.org xf86-input-vmmouse driver module.
Original-Maintainer: Debian X Strike Force <[email protected]>

La primera declaración Package: <name>es dónde debe buscar, dónde <name>está el nombre del paquete que desea eliminar.

Cada bloque comienza con una Package: <name>línea y termina con la siguiente Package:línea, ¡ PERO no elimine la siguiente Package:declaración!

Si tiene eso en cuenta, el paquete ya no aparecerá instalado en dpkg; a pesar de que todos los archivos aún están disponibles.

Este es un truco terrible en el mejor de los casos, pero funciona bien, lo he hecho algunas veces en el pasado yo mismo, en un momento en que Ubuntu todavía tenía problemas con los paquetes rotos a veces. No lo recomiendo, es una opción de último recurso.


fuente
¡MUY agradable (hackear) en la caja de herramientas! ... Me ahorró horas de batallas con un paquete de proveedor (zoom + libxcb-xtest0 deps) <
sigh
3

Sigue siendo muy útil incluso si es un hack. Una sugerencia adicional es eliminar de manera similar el paquete no deseado de / var / lib / dpkg / available y eliminar todos los archivos {package}. * De / var / lib / dpkg / info /

Usé esto cuando decidí instalar una versión más nueva de un software desde la fuente, que previamente se había instalado como la versión lanzada por Ubuntu. Primero descargué y construí / instalé la nueva versión que quería, luego usé este truco para hacer que dpkg olvidara la versión anterior lanzada por Ubuntu.

Norman Henderson
fuente