Kami memiliki sejumlah file .deb buatan tangan (dengan fpm dan jenkins) dalam repositori Apt lokal (reprepro). Deb. Ini berisi file .desktop yang akan diambil oleh xdg-desktop dalam skrip post-inst.
Jika kita menginstal file deb dengan tangan, pada sistem baru, semuanya baik-baik saja.
Jika kami memasang versi baru dengan apt-get install, kami mendapatkan kesalahan ini
xdg-desktop-menu: file '/usr/local/share/applications/customthingy.desktop' does not exist
Jika saya mengunduh file deb dengan apt-get install -d customthingy, dan jalankan
dpkg -i /var/cache/apt/archives/customthingy_2-r3_all.deb
Saya mendapatkan xdg-desktop
kesalahan yang sama seperti sebelumnya. Sehingga mengesampingkan masalah dengan apt.
Jika saya daftar isi deb yang diunduh,
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
Anda dapat melihat file tersebut ada.
Namun .. Jika kita membersihkan sebelum menginstal ulang,
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 ...
Lalu
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) ...
EDIT: Isi skrip 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
Tidak ada kesalahan. Jadi .. Pertanyaannya adalah ini:
- Apakah perilaku yang diharapkan ini, atau bug di apt / dpkg?
- Apakah kita memiliki paket cacat dengan customthingy.deb yang mencegah menjalankan instalasi ulang di masa depan?
- Apakah aman untuk mengasumsikan bahwa post-inst akan selalu terjadi pada akhir instalasi, dan kita dapat dengan aman berasumsi bahwa semua file akan diekstraksi sebelum titik waktu ini?
- Apakah kita melakukan sesuatu yang sangat aneh?
postinst
?
dpkg -D101 -i <package>
(atau bahkandpkg -D1101
) menghasilkan hasil yang berbeda dalam setiap skenario? Mungkin memunculkan urutan eksekusi yang berbeda.