ローカルAptリポジトリー(reprepro)には、多数の(fpmおよびjenkinsを使用して)手動で作成された.debファイルがあります。これらの.debsには、post-instスクリプトでxdg-desktopによって取得される.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
)は、各シナリオのいずれかの異なる結果を生成しますか?異なる実行順序がスローされる場合があります。