로컬 Apt 저장소 (reprepro)에 수많은 직접 빌드 한 (fpm 및 jenkins) .deb 파일이 있습니다. 이 .deb에는 xdg-desktop이 post-inst 스크립트에서 선택할 수있는 .desktop 파일이 포함되어 있습니다.
새로운 시스템에 deb 파일을 직접 설치하면 모든 것이 정상입니다.
apt-get install로 새 버전을 설치하면이 오류가 발생합니다
xdg-desktop-menu: file '/usr/local/share/applications/customthingy.desktop' does not exist
apt-get install -d customthingy로 deb 파일을 다운로드하고 실행하면
dpkg -i /var/cache/apt/archives/customthingy_2-r3_all.deb
xdg-desktop
이전 과 같은 오류가 발생합니다. 따라서 apt와 관련된 문제를 배제합니다.
다운로드 한 deb의 내용을 나열하면
tom.oconnor@charcoal-black:~$ dpkg --contents /var/cache/apt/archives/customthingy_2-r3_all.deb |grep ".desktop"
-rw-r--r-- root/root 201 2011-07-28 20:02 ./usr/local/share/applications/customthingy.desktop
파일이 존재하는 것을 볼 수 있습니다.
그러나 .. 다시 설치하기 전에 제거하면
tom.oconnor@charcoal-black:~$ sudo apt-get purge customthingy
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED
customthingy*
0 upgraded, 0 newly installed, 1 to remove and 84 not upgraded.
After this operation, 0B of additional disk space will be used.
Do you want to continue [Y/n]? y
(Reading database ... 219342 files and directories currently installed.)
Removing customthingy ...
Purging configuration files for customthingy ...
그리고
tom.oconnor@charcoal-black:~$ sudo apt-get install customthingy
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed
customthingy
0 upgraded, 1 newly installed, 0 to remove and 84 not upgraded.
Need to get 0B/4,030B of archives.
After this operation, 0B of additional disk space will be used.
Selecting previously deselected package customthingy.
(Reading database ... 219319 files and directories currently installed.)
Unpacking customthingy (from .../customthingy_2-r3_all.deb) ...
Setting up customthingy (2-r3) ...
편집 : Postinst 스크립트의 내용
#!/bin/sh
# Add an entry to the system menu
XDG_DESKTOP_MENU="`which xdg-desktop-menu 2> /dev/null`"
if [ ! -x "$XDG_DESKTOP_MENU" ]; then
echo "WARNING: Could not find xdg-desktop-menu" >&2
else
"$XDG_DESKTOP_MENU" install --mode system /usr/local/share/applications/customthingy.desktop
"$XDG_DESKTOP_MENU" forceupdate --mode system
fi
오류가 없습니다. 질문은 다음과 같습니다.
- 이것이 예상되는 동작입니까, apt / dpkg의 버그입니까?
- 향후 재설치 실행이 작동하지 못하게하는 customthingy.deb가있는 잘못된 패키지가 있습니까?
- post-inst는 항상 설치가 끝날 때 항상 발생한다고 가정하는 것이 안전합니까? 그리고이 시점 이전에 모든 파일이 추출 된 것으로 가정 할 수 있습니까?
- 우리는 뭔가 이상한 일을하고 있습니까?
postinst
있습니까?
dpkg -D101 -i <package>
(또는dpkg -D1101
)은 각 시나리오의 어떤 다른 결과를? 다른 순서로 실행될 수 있습니다.