Chúng tôi có một số tệp .deb được xây dựng bằng tay (với fpm và jenkins) trong kho lưu trữ Apt cục bộ (reprepro). Các .deb này chứa tệp .desktop sẽ được xdg-desktop chọn trong tập lệnh post-inst.
Nếu chúng ta cài đặt tệp deb bằng tay, trên một hệ thống mới, mọi thứ đều ổn.
Nếu chúng tôi cài đặt phiên bản mới với cài đặt apt-get, chúng tôi sẽ gặp lỗi này
xdg-desktop-menu: file '/usr/local/share/applications/customthingy.desktop' does not exist
Nếu tôi tải xuống tệp gỡ lỗi với apt-get install -d customthingy và chạy
dpkg -i /var/cache/apt/archives/customthingy_2-r3_all.deb
Tôi nhận được, xdg-desktop
lỗi như trước. Vì vậy, quy tắc ra một vấn đề với apt.
Nếu tôi liệt kê nội dung của bản tải xuống
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
Bạn có thể thấy các tập tin tồn tại.
Tuy nhiên .. Nếu chúng tôi thanh lọc trước khi cài đặt lại,
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 ...
Và sau đó
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: Nội dung của kịch bản 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
Không có lỗi. Vì vậy, các câu hỏi là:
- Đây có phải là hành vi dự kiến, hoặc một lỗi trong apt / dpkg?
- Chúng ta có gói không đúng định dạng với customthingy.deb đang ngăn không cho cài đặt lại trong tương lai chạy không?
- Có an toàn không khi cho rằng post-inst sẽ luôn xảy ra vào cuối quá trình cài đặt và chúng ta có thể giả định một cách an toàn rằng tất cả các tệp sẽ được trích xuất trước thời điểm này?
- Có phải chúng ta đang làm một cái gì đó ồ ạt kỳ lạ?
postinst
?
dpkg -D101 -i <package>
(hoặc thậm chídpkg -D1101
) tạo ra bất kỳ kết quả khác nhau trong mỗi kịch bản? Nó có thể đưa ra một thứ tự thực hiện khác nhau.