นี่คือการจำลองแบบมากขึ้นหรือน้อยกว่าของคำถามนี้ ฉันหวังว่า AskUbuntu เป็นสถานที่ที่เหมาะสมกว่าสำหรับมัน
คำอธิบายสั้น:
apt
ไม่สามารถอัพเกรดแพ็คเกจหากการพึ่งพาบางอย่างหายไป (มันก็โอเค) แต่สิ่งที่ฉันสังเกตเห็นใน Ubuntu 14.04 คือมันทำเช่นนั้นด้วยรหัสทางออก 0 (ปัญหา 1) และไม่มีการรายงานว่า 'การพึ่งพาไม่ได้' (ฉบับที่ 2)
คำอธิบายโดยละเอียด:
ฉันใช้ Ubuntu 14.04 รุ่น apt 1.0.1ubuntu2.6
# uname -a
Linux myhost 3.13.0-30-generic #55-Ubuntu SMP Fri Jul 4 21:40:53 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
# lsb_release -c
Codename: trusty
# dpkg -l apt
||/ Name Version Architecture Description
+++-===============-==============-============-====================================
ii apt 1.0.1ubuntu2.6 amd64 commandline package manager
ฉันมีแพ็คเกจที่ติดตั้งเวอร์ชัน 0.03 ไม่มีการอ้างอิง:
# dpkg -l fake-test-package
||/ Name Version Architecture Description
+++-=====================-===============-===============-===============================================
ii fake-test-package 0.03-1 all package to test apt
# apt-cache depends fake-test-package=0.03-1
fake-test-package
ฉันต้องการอัพเกรดแพ็คเกจเป็นรุ่น 0.04 (ซึ่งมีการพึ่งพาแบบไม่แน่นอนvery-strange-dependency
):
# apt-cache depends fake-test-package=0.04-1
fake-test-package
Depends: <very-strange-dependency>
ดังนั้นฉันแสดงapt-get install
:
# apt-get install fake-test-package=0.04-1
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
fake-test-package
0 upgraded, 0 newly installed, 0 to remove and 217 not upgraded.
# echo $?
0
ทุกอย่างดูเหมือนว่าตกลงและรหัสออกเป็น 0 แต่แพ็คเกจไม่ได้รับการอัพเดต:
# dpkg -l fake-test-package
||/ Name Version Architecture Description
+++-=====================-===============-===============-===============================================
ii fake-test-package 0.03-1 all package to test apt
นี่คือปัญหาเนื่องจากapt
ปฏิเสธที่จะอัปเกรดแพ็คเกจอย่างเงียบ ๆ และฉันไม่รู้ว่ามันเกิดขึ้นหรือทำไม
ใน Ubuntu 12.04 ฉันสังเกตเห็นพฤติกรรมที่แตกต่างกัน: exit code = 100 และรายงาน 'unmet dependencies'
precise# apt-get install fake-test-package=0.04-1
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
fake-test-package : Depends: very-strange-dependency but it is not installable
E: Unable to correct problems, you have held broken packages.
precise# echo $?
100
สิ่งที่น่าสนใจคือปัญหาเกิดขึ้นเมื่ออัพเกรดแพ็คเกจที่มีอยู่เท่านั้น หากฉันลบเวอร์ชัน 0.03 ออกจากระบบและพยายามติดตั้ง 0.04 โดยตรงให้apt
ทำตามวิธีที่คาดไว้:
trusty# apt-get purge fake-test-package
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
fake-test-package*
0 upgraded, 0 newly installed, 1 to remove and 217 not upgraded.
After this operation, 13.3 kB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 157742 files and directories currently installed.)
Removing fake-test-package (0.03-1) ...
Purging configuration files for fake-test-package (0.03-1) ...
trusty# apt-get install fake-test-package=0.04-1
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
fake-test-package : Depends: very-strange-dependency but it is not installable
E: Unable to correct problems, you have held broken packages.
trusty# echo $?
100
คำถามหลัก:
ฉันapt
จะรายงานการพึ่งพาแบบไม่อัปเดตเกี่ยวกับการอัปเกรดแพคเกจที่ติดตั้งไว้และเพื่อแสดงการอัปเกรดที่ล้มเหลวผ่านรหัสออกที่ไม่ใช่ศูนย์ได้อย่างไร