Como posso remover o registro de um pacote instalado sem excluir nenhum arquivo?


8

Cometi o erro de instalar o Jenkins a partir do pacote ubuntu, o que causa um estresse infinito por aqui no gerenciamento de atualizações. Não tenho nenhuma discussão sobre como o Ubuntu organizou os arquivos em disco.

Para os curiosos, o jenkins possui um gerenciador de pacotes interno que baixa atualizações de plug-ins, e é necessária uma coordenação cuidadosa das principais instalações e atualizações de plug-ins do jenkins para evitar condições caóticas. Portanto, temos que bloquear cuidadosamente as atualizações do jenkins via, oh, apt-get upgrade quando não sabemos exatamente o que está acontecendo com os plugins.

Então, o que eu gostaria de fazer é convencer o dpkg / apt-get a esquecer que existe um pacote jenkins, sem permitir que ele exclua os arquivos existentes.

A propósito, a 'instalação' consiste em um arquivo '.war' mais os links /etc/init.d.

Obviamente, posso fazer backup do que me interessa, remover o pacote e restaurar, mas esperava aprender que havia uma opção obscura do dpkg que esqueceu de excluir os arquivos.

Há algum jeito?


Você precisaria instalá-lo fora do apt-get, da fonte (make install) ou fazendo backup de todos os arquivos, removendo o pacote e restaurando os arquivos do backup. Penso que esta é uma péssima solução para o seu problema, talvez se você descreveu o problema melhor, podemos oferecer uma solução melhor.
Panther

ele descreveu o problema bem. pseudo-pacotes podem resolver quase tudo. você pode resolver isso com um pseudopacote vazio.
precisa saber é o seguinte

Como um pseudopacote vazio consertaria alguma coisa? Ele quer que o apt-get esqueça que o pacote está instalado para que não seja atualizado.
precisa saber é o seguinte

Respostas:


9

A melhor maneira de fazer isso é manipulando /var/lib/dpkg/status.

CONTUDO!

Esse arquivo tem uma sintaxe sensível; Fazer isso da maneira errada pode prejudicar o gerenciamento de pacotes.

Aqui está o que você deve fazer:

Encontre um bloco parecido com este (a aparência real pode depender do pacote que você está tentando tornar 'invisível'):

Package: xserver-xorg-input-vmmouse
Status: install ok installed
Priority: optional
Section: x11
Installed-Size: 136
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
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 <debian-x@lists.debian.org>

A primeira declaração Package: <name>é onde você deve procurar, onde <name>está o nome do pacote que deseja remover.

Cada bloco começa com uma Package: <name>linha e termina com a próxima Package:linha, MAS não remova a próxima Package:instrução!

Se você tiver isso em mente, o pacote não parecerá mais instalado no dpkg; apesar de todos os arquivos ainda estarem disponíveis.

Este é um truque terrível, na melhor das hipóteses, mas funciona muito bem, eu já fiz isso algumas vezes no passado, em uma época em que o Ubuntu ainda estava lutando com pacotes quebrados às vezes. Eu não recomendo, é uma opção de último recurso.


MUITO legal (hack) de ter na caixa de ferramentas! ... Economizei horas lutando com um pacote de fornecedores (zoom + libxcb-xtest0 deps) <sigh>
Tweeks

3

Ainda é muito útil, mesmo que seja um hack. Uma sugestão adicional é remover similarmente o pacote indesejado de / var / lib / dpkg / available e remover todos os arquivos {package}. * De / var / lib / dpkg / info /

Usei isso quando decidi instalar uma versão mais recente de um software a partir da fonte, que havia sido instalada anteriormente como a versão lançada pelo Ubuntu. Primeiro baixei e construí / instalei a nova versão que eu queria, depois usei esse hack para fazer o dpkg esquecer a versão mais antiga do Ubuntu.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.