Wie kann ich den Datensatz eines installierten Pakets entfernen, ohne Dateien zu löschen?

8

Ich habe den Fehler gemacht, Jenkins aus dem Ubuntu-Paket zu installieren, was hier im Update-Management endlosen Stress verursacht. Ich habe keinen Streit darüber, wie Ubuntu die Dateien auf der Festplatte angeordnet hat.

Für Neugierige verfügt Jenkins über einen internen Paketmanager, der Plugin-Updates herunterlädt. Eine sorgfältige Koordination der wichtigsten Jenkins-Installationen und Plugin-Upgrades ist erforderlich, um chaotische Bedingungen zu vermeiden. Wir müssen also Jenkins-Upgrades sorgfältig über ein Apt-Get-Upgrade blockieren, wenn wir nicht genau wissen, was mit den Plugins los ist.

Ich möchte also dpkg / apt-get davon überzeugen, zu vergessen, dass es ein Jenkins-Paket gibt, ohne dass vorhandene Dateien gelöscht werden.

Die 'Installation' besteht übrigens aus einer '.war'-Datei und den Links /etc/init.d.

Natürlich kann ich sichern, was mir wichtig ist, das Paket entfernen und wiederherstellen, aber ich hatte gehofft zu erfahren, dass es eine obskure dpkg-Option gibt, die vergessen hat, Dateien zu löschen.

Gibt es einen Weg?

bmargulies
quelle
Sie müssten es außerhalb von apt-get, von der Quelle (make install) oder durch Sichern aller Dateien, Entfernen des Pakets und Wiederherstellen der Dateien von der Sicherung installieren. Ich denke, dies ist eine miese Lösung für Ihr Problem. Wenn Sie das Problem besser beschreiben, können wir Ihnen vielleicht eine bessere Lösung geben.
Panther
er beschrieb das Problem gut. Pseudopakete können fast alles lösen. Sie könnten dies mit einem leeren Pseudopaket lösen.
RobotHumans
Wie würde ein leeres Pseudopaket irgendetwas reparieren? Er möchte, dass apt-get vergisst, dass das Paket installiert ist, damit es nicht aktualisiert wird.
tgm4883

Antworten:

9

Der "beste" Weg, dies zu tun, ist durch Manipulieren /var/lib/dpkg/status.

JEDOCH!

Diese Datei hat eine vertrauliche Syntax. Wenn Sie es falsch machen, kann dies Ihre Paketverwaltung beschädigen.

Folgendes müssen Sie tun:

Suchen Sie einen Block, der ein wenig so aussieht (Das tatsächliche Aussehen hängt möglicherweise von dem Paket ab, das Sie "unsichtbar" machen möchten):

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]>

Die erste Anweisung Package: <name>ist, wo Sie suchen müssen, wo <name>der Name des Pakets ist, das Sie entfernen möchten.

Jeder Block beginnt mit einer Package: <name>Zeile und endet mit der nächsten Package:Zeile, ABER entfernen Sie nicht die nächste Package:Anweisung!

Wenn Sie dies berücksichtigen, scheint das Paket nicht mehr auf dpkg installiert zu sein. obwohl alle Dateien noch verfügbar sind.

Dies ist bestenfalls ein schrecklicher Hack, funktioniert aber einwandfrei. Ich habe es in der Vergangenheit einige Male selbst gemacht, in einer Zeit, in der Ubuntu manchmal noch mit kaputten Paketen zu kämpfen hatte. Ich empfehle es nicht, es ist ein letzter Ausweg.


quelle
3

Immer noch sehr hilfreich, auch wenn ein Hack. Ein zusätzlicher Vorschlag besteht darin, das unerwünschte Paket auf ähnliche Weise aus / var / lib / dpkg / available zu entfernen und alle {package}. * -Dateien aus / var / lib / dpkg / info / zu entfernen.

Ich habe dies verwendet, als ich mich entschied, eine neuere Version einer Software aus dem Quellcode zu installieren, die zuvor als von Ubuntu veröffentlichte Version installiert worden war. Zuerst habe ich die neue Version heruntergeladen und erstellt / installiert, die ich wollte, und dann diesen Hack verwendet, um dpkg die ältere, von Ubuntu veröffentlichte Version vergessen zu lassen.

Norman Henderson
quelle