Bagaimana saya bisa menghapus catatan paket yang diinstal tanpa menghapus file apa pun?

8

Saya membuat kesalahan dengan menginstal Jenkins dari paket ubuntu, yang menyebabkan stres tanpa akhir di sini dalam manajemen pembaruan. Saya tidak memiliki pertengkaran dengan bagaimana Ubuntu mengatur file pada disk.

Bagi yang penasaran, jenkins memiliki manajer paket internal yang mengunduh pembaruan plugin, dan koordinasi yang cermat dari pemasangan jenkins utama dan peningkatan plugin diperlukan untuk menghindari kondisi kacau. Jadi, kami harus hati-hati memblokir pemutakhiran jenkins melalui, oh, pemutakhiran apt-get ketika kami tidak tahu persis apa yang terjadi dengan plugin.

Jadi, yang ingin saya lakukan adalah membujuk dpkg / apt-get untuk lupa bahwa ada paket jenkins, tanpa membiarkannya menghapus file yang ada.

Omong-omong, 'instal' terdiri dari satu file '.war' plus tautan /etc/init.d.

Jelas, saya dapat mem-backup apa yang saya pedulikan, menghapus paket, dan mengembalikan, tetapi saya berharap mengetahui bahwa ada opsi dpkg yang tidak jelas yang lupa menghapus file.

Apakah ada cara?

bmargulies
sumber
Anda harus menginstalnya di luar apt-get, dari sumber (make install) atau dengan membuat cadangan semua file, menghapus paket, dan mengembalikan file dari membuat cadangan. Saya pikir ini adalah solusi buruk untuk masalah Anda, mungkin jika Anda menggambarkan masalahnya dengan lebih baik, kami dapat memberikan Anda solusi yang lebih baik.
Panther
dia menggambarkan masalahnya dengan baik. pseudo-paket dapat menyelesaikan hampir semua hal. Anda bisa menyelesaikan ini dengan pseudopackage kosong.
RobotHumans
Bagaimana pseudopackage kosong akan memperbaiki apa pun? Dia ingin melupakan bahwa paket telah diinstal sehingga tidak akan ditingkatkan.
tgm4883

Jawaban:

9

Cara 'terbaik' untuk melakukan ini, adalah dengan memanipulasi /var/lib/dpkg/status.

NAMUN!

File itu memiliki sintaks yang sensitif; Melakukannya dengan cara yang salah dapat merusak manajemen paket Anda.

Inilah yang harus Anda lakukan:

Temukan blok yang terlihat sedikit seperti ini (Tampilan sebenarnya mungkin tergantung pada paket yang Anda coba buat 'tidak terlihat'):

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

Pernyataan pertama Package: <name>adalah di mana Anda harus mencari, di mana <name>nama paket yang ingin Anda hapus.

Setiap blok dimulai dengan satu Package: <name>baris, dan diakhiri dengan Package:baris berikutnya , TAPI jangan hapus Package:pernyataan berikutnya !

Jika Anda mengingatnya, paket itu tidak lagi tampak diinstal ke dpkg; meskipun semua file masih tersedia.

Ini adalah hack yang mengerikan, tetapi bekerja dengan baik, saya telah melakukannya sendiri beberapa kali di masa lalu, di saat Ubuntu masih berjuang dengan paket yang rusak kadang-kadang. Saya tidak merekomendasikannya, ini pilihan terakhir.


sumber
SANGAT bagus (retas) untuk ada di kotak peralatan! ... Menyelamatkan saya berjam-jam berjuang dengan paket vendor (zoom + libxcb-xtest0 deps) <sigh>
Tweeks
3

Masih sangat membantu bahkan jika diretas. Saran tambahan adalah menghapus paket yang tidak diinginkan dari / var / lib / dpkg / yang tersedia dan menghapus semua {package}. * File dari / var / lib / dpkg / info /

Saya menggunakan ini ketika saya memutuskan untuk menginstal versi perangkat lunak dari sumber yang lebih baru, yang sebelumnya telah diinstal sebagai versi yang dirilis Ubuntu. Pertama saya mengunduh dan membuat / menginstal versi baru yang saya inginkan, kemudian menggunakan peretasan ini untuk membuat dpkg melupakan versi Ubuntu yang lama.

Norman Henderson
sumber