从 17.10 升级到 18.04 后,qdbus-qt5 安装时崩溃

从 17.10 升级到 18.04 后,qdbus-qt5 安装时崩溃

我无法将 17.10 升级到 18.04,因为安装qdbus-qt5失败。这实际上是 kubuntu,但我在 kubuntu 和 ubuntu 论坛以及 launchpad 上问过这个问题,但无法解决问题。升级过程很顺利,直到达到,qdbus-qt5此时它崩溃并且无法继续。我尝试清除qbdus-qt5(以及大部分 kde),升级成功,但仍然无法安装qbdus-qt5,因此无法安装 kde。

尝试使用 手动安装qdbus-qt5dpkg出现以下错误:

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-qt5dpkg还是其他我无法想象的问题,因为其他人似乎没有遇到这个问题,而且它没有发生在其他软件包上(好吧,它确实发生在其他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额外的开关:aptapt-getdpkg

sudo aptitude update
sudo aptitude safe-upgrade

然后进行 dist-upgrade:

sudo aptitude dist-upgrade

如果您在使用 dist-upgrade 时遇到问题,可能是由于过时的软件包引起的冲突,这些软件包在 17.10 中存在,但在 18.04 中被删除。您可以尝试以下一种或多种方法:

  1. 仅安装手动安装的软件包:

    sudo aptitude install `apt-mark showmanual`
    

    删除aptitude与之相关的软件包sudo aptitude remove [package]并重新尝试。

  2. 查找并安装可升级的软件包:

    aptitude search '~U' -F '%p'
    

    您可以尝试使用以下方法一次性升级它们:

    sudo aptitude remove `aptitude -s search '~U' -F '%p'`
    
  3. 查找并删除过时的软件包。要获取过时的软件包列表,您可以使用:

    aptitude search '~o' -F '%p'
    

    要一次性删除所有文件,可以尝试以下命令,但如果要删除多个文件几十个包裹,你应该跳过它:

    sudo aptitude remove `aptitude -s search '~o' -F '%p'`
    

然后再次尝试安装 kubuntu-desktop 或 kubuntu-full 或者您想要的任何软件包:

sudo aptitude install kubuntu-desktop

如果仍然遇到问题,则文件deb可能已损坏。请选择以下选项之一:

  1. sudo \rm /var/cache/apt/cache/*qdbus* 您可以使用类似的命令来删除任何似乎导致问题的软件包的 deb。

  2. sudo aptitude clean– 这将删除所有缓存的 deb 文件。

答案2

首先在启动过程中检查文件系统fsckShift在 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

相关内容