我无法将 17.10 升级到 18.04,因为安装qdbus-qt5
失败。这实际上是 kubuntu,但我在 kubuntu 和 ubuntu 论坛以及 launchpad 上问过这个问题,但无法解决问题。升级过程很顺利,直到达到,qdbus-qt5
此时它崩溃并且无法继续。我尝试清除qbdus-qt5
(以及大部分 kde),升级成功,但仍然无法安装qbdus-qt5
,因此无法安装 kde。
尝试使用 手动安装qdbus-qt5
时dpkg
出现以下错误:
root@Crynfyd:/# dpkg -i /var/cache/apt/archives/qdbus-qt5_5.9.5-0ubuntu1_amd64.deb
(Reading database ... 839516 files and directories currently installed.)
Preparing to unpack .../qdbus-qt5_5.9.5-0ubuntu1_amd64.deb ...
Unpacking qdbus-qt5 (5.9.5-0ubuntu1) ...
dpkg: error processing archive /var/cache/apt/archives/qdbus-qt5_5.9.5-0ubuntu1_amd64.deb (--install):
unable to open '/usr/lib/qt5/bin/qdbus.dpkg-new': No such file or directory
Errors were encountered while processing:
/var/cache/apt/archives/qdbus-qt5_5.9.5-0ubuntu1_amd64.deb
基本上它应该创建文件/usr/lib/qt5/bin/qdbus.dpkg-new,但它却删除了它。如果我触摸该文件,它会删除它并退出。我无法解决的某种奇怪的难题。
更多详细信息请参见启动板:
https://answers.launchpad.net/ubuntu/+source/qttools-opensource-src/+question/668259
任何帮助或想法都非常感谢。请不要“全新安装”,这是不切实际的,也不是解决方案。我真的不知道问题出在哪里,是qdbus-qt5
、dpkg
还是其他我无法想象的问题,因为其他人似乎没有遇到这个问题,而且它没有发生在其他软件包上(好吧,它确实发生在其他qtcreator
软件包上,但我在升级之前已经清除了它们)。这真是一团糟,它阻碍了整个升级过程。
更新
问题解决了。
症状:
尝试安装 qdbus-qt5 时,从 17.10 升级到 18.04 时崩溃。尝试手动安装该软件包会产生以下错误:
root@Crynfyd:/# dpkg -i /var/cache/apt/archives/qdbus- qt5_5.9.5-0ubuntu1_amd64.deb
(Reading database ... 839516 files and directories currently installed.)
Preparing to unpack .../qdbus-qt5_5.9.5-0ubuntu1_amd64.deb ...
Unpacking qdbus-qt5 (5.9.5-0ubuntu1) ...
dpkg: error processing archive /var/cache/apt/archives/qdbus-qt5_5.9.5-0ubuntu1_amd64.deb (--install):
unable to open '/usr/lib/qt5/bin/qdbus.dpkg-new': No such file or directory
Errors were encountered while processing:
/var/cache/apt/archives/qdbus-qt5_5.9.5-0ubuntu1_amd64.deb
问题如下:
在 artful 中,软件包 qdbus-qt5 将其二进制文件安装到 /usr/lib/x86_64-linux-gnu/qt5/bin/qdbus 。目录 /usr/lib/qt5 实际上是指向 /usr/lib/x86_64-linux-gnu/qt5 的符号链接。因此 ls /usr/lib/qt5/bin/ 会生成一个看似真实的文件列表,但实际上它们并不存在。我注意到执行 dpkg-query --search /usr/lib/qt5/bin/qdbus 没有产生任何结果,并且想知道为什么,因为文件看起来像是在那里。
在 bionic 中,软件包 qdbus-qt5 将其二进制文件安装到 /usr/lib/qt5/bin/qdbus,并在 /usr/lib/x86_64-linux-gnu/qt5/bin/qdbus 中安装指向 /usr/lib/qt5/bin/qdbus 的符号链接。
因此,当尝试从 artful 升级到 bionic 时,软件包会将其二进制文件安装到指向 /usr/lib/x86_64-linux-gnu/qt5/bin/ 的符号链接目录中,然后尝试将符号链接安装到目录实际指向的文件。我在尝试手动安装软件包中的文件时发现了这一点,文件消失了。这就是 dpkg 一直在抱怨的问题。
因此,在升级过程中,哪些文件是符号链接,哪些是实际的二进制文件,存在一个问题。升级过程显然没有解决这个问题。我从某处读到,从 16.04 到 18.04 的升级要到 7 月才会到位;这可能是原因之一,也可能是 17.10 到 18.04 的升级也存在同样的问题。可能还有其他问题尚未浮出水面。
请注意,其他几个软件包也存在同样的问题,主要与 QT Creator 相关:
qtcreator
qtcreator-data
qtcreator-doc
qmlscene
qt5-qmake
qttools5-dev-tools
qtbase5-dev-tools
也许还有其他我还没有发现的。它们可以在升级之前删除,但在我的测试中,应用下面的黑客攻击后它们没有造成任何问题。
为了升级而修复此问题的无耻黑客:
## Remove the symlink:
sudo rm /usr/lib/qt5
## Do a hard copy of the relevant files:
sudo cp -r /usr/lib/x86_64-linux-gnu/qt5 /usr/lib/
我还注意到语言环境存在一些问题;解决方法:
export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
sudo locale-gen en_US.UTF-8
sudo dpkg-reconfigure locales
然后升级/dist-upgrade(或 do-release-upgrade,或无论您如何操作)。仍然需要偶尔使用 apt-get install -f / dpkg --configure -a / dpkg -i --force-overwrite ,但似乎按预期进行。
关于“全新安装”就说这么多。
附言:感谢那些提供帮助的人。关于 dpkg -x 软件包的那点信息以及它产生的奇怪结果让我对此有了了解。
答案1
在尝试升级之前,您应该确保没有安装 PPA 或非标准存储库。这可以通过 GUI 完成,例如synaptic
,但我通常直接在 中查看/etc/apt/sources.list.d/
。
删除 PPA 和非标准存储库后,更新并安全升级。我更喜欢使用,因为它可以自动解决冲突,这需要在//中添加aptitude
额外的开关:apt
apt-get
dpkg
sudo aptitude update
sudo aptitude safe-upgrade
然后进行 dist-upgrade:
sudo aptitude dist-upgrade
如果您在使用 dist-upgrade 时遇到问题,可能是由于过时的软件包引起的冲突,这些软件包在 17.10 中存在,但在 18.04 中被删除。您可以尝试以下一种或多种方法:
仅安装手动安装的软件包:
sudo aptitude install `apt-mark showmanual`
删除
aptitude
与之相关的软件包sudo aptitude remove [package]
并重新尝试。查找并安装可升级的软件包:
aptitude search '~U' -F '%p'
您可以尝试使用以下方法一次性升级它们:
sudo aptitude remove `aptitude -s search '~U' -F '%p'`
查找并删除过时的软件包。要获取过时的软件包列表,您可以使用:
aptitude search '~o' -F '%p'
要一次性删除所有文件,可以尝试以下命令,但如果要删除多个文件几十个包裹,你应该跳过它:
sudo aptitude remove `aptitude -s search '~o' -F '%p'`
然后再次尝试安装 kubuntu-desktop 或 kubuntu-full 或者您想要的任何软件包:
sudo aptitude install kubuntu-desktop
如果仍然遇到问题,则文件deb
可能已损坏。请选择以下选项之一:
sudo \rm /var/cache/apt/cache/*qdbus*
您可以使用类似的命令来删除任何似乎导致问题的软件包的 deb。sudo aptitude clean
– 这将删除所有缓存的 deb 文件。
答案2
首先在启动过程中检查文件系统fsck
(Shift在 GRUB 中,选择高级选项, 选择.... (恢复模式), 在恢复菜单选择fsck——检查所有文件系统)或从 Ubuntu 18.04 LiveCD/USB。
然后确保您没有损坏的包裹:
sudo apt-get update
sudo apt-get install -f
sudo dpkg --configure -a
删除下载的 deb 包,因为它可能已损坏:
sudo rm /var/cache/apt/archives/qdbus-qt5_5.9.5-0ubuntu1_amd64.deb
您可以尝试使用以下方法再次下载此包
cd /var/cache/apt/archives/
sudo wget http://mirrors.kernel.org/ubuntu/pool/universe/q/qttools-opensource-src/qdbus-qt5_5.9.5-0ubuntu1_amd64.deb
当然你可以创建文件夹qdbus.dpkg-新:
sudo mkdir -p /usr/lib/qt5/bin/
并安装它强制所有问题
sudo dpkg -i --force-all qdbus-qt5_5.9.5-0ubuntu1_amd64.deb
sudo apt-get install -f
或者使用以下命令安装apt-get
:
sudo apt-get install ./qdbus-qt5_5.9.5-0ubuntu1_amd64.deb
另一种方法是直接使用以下命令提取 deb-package
sudo dpkg -x qdbus-qt5_5.9.5-0ubuntu1_amd64.deb /
然后要求apt-get
重新安装
sudo apt-get install --reinstall qdbus-qt5