소스에서 zsh 5.0.7 패키지를 만들었고 이제 성공적으로 설치할 수 있지만 제거하려고 하면 다음과 같은 메시지가 나타납니다.
$ 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) ...
이 경고를 없애려면 패키지(또는 다른 파일)에서 debian/{control,rules}
무엇을 변경해야 합니까?
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:
편집하다
zsh 소스를 포크하고 패키징을 위해 debian 디렉터리를 추가했습니다.
답변1
일반적으로 이 경고는 전혀 무해하며 정상입니다. 패키지를 제거(또는 제거하려고 시도) 하면 dpkg
패키지 설치의 일부로 생성된 모든 파일과 디렉터리가 삭제됩니다. 이제 이 경우 디렉터리에 삭제할 수 있는 일부 파일이 있지만 dpkg
해당 파일에 대해 알려지지 않았다고 가정합니다. 이는 설치 중이나 설치 후에 시스템에서 생성되었거나 사용자가 생성했기 때문에 발생할 수 있습니다. dpkg
이러한 파일은 별도의 지시가 없는 한 삭제되지 않습니다 . 기본적으로 비어 있지 않은 디렉터리는 삭제되지 않으므로 이러한 파일이 포함된 디렉터리는 이 경우 삭제되지 않습니다. 따라서 요약하자면, 패키지를 제거한 후에는 일부 기계 생성 파일이나 기타 콘텐츠가 포함된 대부분 빈 디렉터리(또는 디렉터리)가 생길 수 있습니다. 이는 문제가 되지 않습니다. 수동으로 삭제할 수 있습니다.
위의 기본값은 합리적인 기본값입니다. 여기에는 오류가 없습니다.
귀하의 경우 /usr/local
파일 계층 표준을 위반하는 데비안 바이너리 패키지의 일부로 파일을 설치했으며잘못된. 이렇게 하지 마십시오. 사용자 바이너리는 에 들어가야 합니다 /usr/bin
. 예를 들어 라이브러리는 에 들어가야 합니다 /usr/lib
. 나는 당신의 패키지가 그것을 생성했다고 가정합니다 /usr/local/bin
. 왜냐하면 dpkg
당연히 그것에 대해 아직 모르기 때문입니다. (데비안 패키지에 파일/디렉토리를 포함하는 것은 FHS를 위반하므로 데비안 정책을 위반하는 것입니다 /usr/local
). 그래서 패키지를 제거할 때 파일을 삭제하려고 시도합니다. 설치를 중지 /usr/local
하면 문제가 해결됩니다.
좀 더 자세한 배경 정보를 제공해 주시겠습니까? 배포판과 함께 제공되는 패키지를 사용하는 대신 자체 zsh Debian 패키지를 구축하려는 이유는 무엇입니까? 어떤 배포판을 사용하고 있습니까?
정말로 이 작업을 수행하고 싶다면 여기에 간단한 팁이 있습니다. 배포판(Debian 포함)이 zsh를 어떻게 패키징하는지 확인하고 해당 패키징을 재사용하세요. 잘 작동할 겁니다. 패키징 방법을 배우고 싶지 않다면 직접 코드를 작성하려고 할 이유가 없지만 여기서는 그렇지 않다고 생각합니다.