Depois de criar um .deb: dpkg: aviso ao remover, diretório / usr / local / bin não vazio por isso não foi removido

5

Eu criei um pacote do zsh 5.0.7 a partir de fontes e agora posso instalá-lo com sucesso, mas quando tento removê-lo, recebo isto:

$ sudo dpkg -i zsh_5.0.7_amd64.deb
Selecting previously unselected package zsh.
(Reading database ... 177638 files and directories currently installed.)
Preparing to unpack zsh_5.0.7_amd64.deb ...
Unpacking zsh (5.0.7) ...
Setting up zsh (5.0.7) ...
Processing triggers for man-db (2.7.0.2-2) ...
Reading package lists...
Building dependency tree...
$ sudo apt-get purge zsh
Reading state information...
The following packages will be REMOVED:
  zsh*
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 6473 kB disk space will be freed.
Do you want to continue? [Y/n] (Reading database ... 178746 files and directories currently installed.)
Removing zsh (5.0.7) ...
dpkg: warning: while removing zsh, directory '/usr/local/bin' not empty so not removed
dpkg: warning: while removing zsh, directory '/usr/local/lib' not empty so not removed
dpkg: warning: while removing zsh, directory '/usr/local/share/man/man1' not empty so not removed
Processing triggers for man-db (2.7.0.2-2) ...

O que posso alterar no empacotamento ( debian/{control,rules} ou outros arquivos) para que esse aviso desapareça?

debian/control

Source: zsh
Section: unknown
Priority: optional
Maintainer: Patryk <[email protected]>
Build-Depends: debhelper (>= 8.0.0), autotools-dev
Standards-Version: 3.9.4
Homepage: http://zsh.sourceforge.net/

Package: zsh
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, libc6
Description: ZSH shell
 Zsh is a shell designed for interactive use, although it is also a powerful scripting language. Many of the useful features of bash, ksh, and tcsh were incorporated into zsh; many original features were added.

debian/rules

#!/usr/bin/make -f
# -*- makefile -*-

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

%:
        dh $@  --with autotools-dev
override_dh_auto_configure:
        ./configure
override_dh_usrlocal:

EDITAR

Eu bifurquei fontes zsh e adicionei o diretório debian para o empacotamento:

link

    
por Patryk 26.10.2014 / 15:48

1 resposta

9

Em geral, esse aviso é completamente inofensivo e normal. Quando dpkg está removendo (ou tentando remover) um pacote, ele remove todos os arquivos e diretórios que foram criados como parte da instalação desse pacote. Agora, suponha que haja alguns arquivos em um diretório candidato à remoção nesse cenário e dpkg não saiba sobre esses arquivos. Isso pode acontecer porque eles foram gerados por máquina, durante ou após a instalação, ou porque foram criados por um usuário. Em seguida, a menos que instruído, dpkg não removerá esses arquivos. Como, por padrão, não removerá um diretório não vazio, nesse caso, o diretório que contém esses arquivos não será removido. Então, em resumo, depois que o pacote é removido, você pode acabar com um diretório (ou diretórios) basicamente vazio com alguns arquivos gerados por máquina ou algo assim. Isto não é um problema - você pode simplesmente remover estes manualmente.

Note que os padrões acima são todos padrões sensíveis. Não há bugs aqui.

No seu caso, você está instalando arquivos em /usr/local como parte de seu pacote binário Debian, o que é uma violação do Padrão de Hierarquia de Arquivos, e está errado . Não faça isso. Os binários do usuário devem entrar em /usr/bin , por exemplo, as bibliotecas devem entrar em /usr/lib , etc. Eu suponho que seu pacote crie /usr/local/bin , porque dpkg , naturalmente, não sabe sobre isso já. (Já que um pacote Debian contendo arquivos / diretórios em /usr/local é uma violação do FHS e, portanto, da Política Debian). Portanto, ele tenta remover esse arquivo quando remove o pacote. Pare de instalar em /usr/local e seu problema desaparecerá.

Dê-nos um pouco mais de contexto, talvez? Por que você está tentando construir o seu próprio pacote Debian zsh ao invés de usar o seu pacote de distribuição, e qual distribuição você está usando mesmo assim?

Se você realmente quer fazer isso, aqui está uma dica simples. Verifique como sua distribuição (ou mesmo Debian) empacota zsh, e apenas reutilize a embalagem. Deve funcionar bem. Não há razão para tentar escrever o seu próprio, a menos que você esteja tentando aprender como empacotar, o que eu assumo não é o caso aqui.

    
por 26.10.2014 / 16:49