【Linux下qt软件安装打包附带问题: dpkg: error processing package xxxx +解决方式+自我尝试+记录】

这篇具有很好参考价值的文章主要介绍了【Linux下qt软件安装打包附带问题: dpkg: error processing package xxxx +解决方式+自我尝试+记录】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、前言

  • 第一篇:使用linuxdeployqt软件生成
  • 第二篇:桌面文件.desktop,文件编写与软件图标
  • 第三篇:打包生成安装的包(.deb)

记得之前 学会了使用linuxdeployqt软件生成,打包,已经安装等各种细节,使用一个“test demo” 工程样例,来实现以及说明相关操作流程。但是后在使用的时候,发现使用apt-get install 安装一些软件的时候,dpkg报了错误。就是受到了样例工程影响,本次为记录相关方式,以及自己努力方式。

2、实验环境

实验环境还是挺重要的,因为有时候,在你电脑上能运行的东西,在别人的电脑就不一定能运行,这一部分的原因就可能是实验版本不一样,另外也发现其他小伙伴,也会问些问题,之前有人大致环境装的和我差不多,当时是win的环境,结果编译遇到问题,就跑过来问是不是环境不对,这还是要具体问题具体分析的,当时看了看,发现是其他问题,总的来说,环境还是挺重要的。
系统环境:
环境问题还是要注意下的,不同环境下可能还真的可能不一样。
dpkg: error processing package linux-image-6.5.0-27-generic (--remove): inst,qt,Linux,工具使用,linux,数据库,服务器

QT软件版本环境: Linux qt环境

dpkg: error processing package linux-image-6.5.0-27-generic (--remove): inst,qt,Linux,工具使用,linux,数据库,服务器

3、问题说明

如下图所示,在安装一个包名为“v4l-utils” 的视频捕捉相关设备的时候,报错如下。
dpkg: error processing package linux-image-6.5.0-27-generic (--remove): inst,qt,Linux,工具使用,linux,数据库,服务器

robot@robot-xxx:~/Downloads$ sudo apt install v4l-utils -y
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libv4l2rds0
The following packages will be REMOVED:
  test
The following NEW packages will be installed:
  libv4l2rds0 v4l-utils
0 upgraded, 2 newly installed, 1 to remove and 116 not upgraded.
1 not fully installed or removed.
Need to get 0 B/602 kB of archives.
After this operation, 1,750 kB of additional disk space will be used.
(Reading database ... 299473 files and directories currently installed.)
Removing test (0.1.0) ...
rm: cannot remove '/usr/share/applications/test1_hello.desktop': No such file or
 directory
rm: cannot remove '/root/Desktop/test1_hello.desktop': No such file or directory
dpkg: error processing package test (--remove):
 installed test package post-removal script subprocess returned error exit status 1
dpkg: too many errors, stopping
Errors were encountered while processing:
 test
Processing was halted because there were too many errors.
E: Sub-process /usr/bin/dpkg returned an error code (1)

看习惯了Linux相关问题后,渐渐能够理解哪部分使我们需要内容了,主要是下内容。

rm: cannot remove '/usr/share/applications/test1_hello.desktop': No such file or
 directory
rm: cannot remove '/root/Desktop/test1_hello.desktop': No such file or directory
dpkg: error processing package test (--remove):
 installed test package post-removal script subprocess returned error exit status 1
dpkg: too many errors, stopping
Errors were encountered while processing:
 test
Processing was halted because there were too many errors.
E: Sub-process /usr/bin/dpkg returned an error code (1)

上述问题主要是我们之前的demo test工程,有两个文件移除失败,到时dpkg错误太多,无法运行。

这个问题出现在尝试使用apt或dpkg安装、更新或移除软件包时。具体来说,当尝试安装v4l-utils软件包时,apt也尝试移除名为test的软件包。在移除test软件包的过程中,其postrm(post-removal script)脚本遇到了错误,因为它试图删除不存在的文件(/usr/share/applications/test1_hello.desktop和/root/Desktop/test1_hello.desktop),导致脚本返回了错误状态1,从而使整个处理过程中断。

4、我的努力与查到解决的方式

(1)补充两个文件,让软件正常执行

既然大致理解了,出现问题的原因,那么移除两个文件失败,首先就是能想到的,假装这两个文件,补充其全这两个文件,然后正常执行删除流程。
实际在对应位置尝试了

/usr/share/applications/
/root/Desktop/

创建文件命令如下

sudo vim test1_hello.desktop

在目录创建后,确实解决了此问题。

/usr/share/applications/test1_hello.desktop

但是如下目录却有些问题,实际自己发现没有这个目录,并且要是进入此目录,需要进入su模式。

/root/Desktop/test1_hello.desktop

尝试过后,此方式并没有解决。

(2)尝试修复dpkg状态

1、使用如下命令,这个命令尝试强制移除test软件包,即使它的状态被标记为重新安装请求(reinstreq)。

sudo dpkg --remove --force-remove-reinstreq test

2、清理和更新软件包状态

sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get update

3、之后再次尝试安装软件

sudo apt-get install v4l-utils -y

发现依然不行。

(3)网上的查到解法-修复。

主要是使用如下两个命令,

dpkg-reconfigure -a
apt-get -f install

两个命令解释如下。

命令:dpkg-reconfigure -a

  1. dpkg-reconfigure 是一个用于重新配置一个已安装的包的命令。如果某个软件包在安装时有配置步骤,使用 dpkg-reconfigure 可以重新启动这些配置步骤,让用户可以更改之前的选择。
  2. -a 选项告诉 dpkg-reconfigure 命令重新配置所有已安装的包。这个操作可能会非常耗时,因为它会遍历系统上所有已安装的包,并且对于那些有配置选项的包,会重新启动其配置过程。
  3. 这个命令通常在包的默认配置需要修改,或者在一些特殊情况下,如配置文件损坏或更改后需要还原时使用。

命令:apt-get -f install

  1. apt-get 是Debian及其衍生系统中的软件包管理工具,用于安装、更新、升级和删除软件包。
  2. -f 选项,也就是 --fix-broken 的简写,用于修复因依赖关系问题而未能正确安装的包。这个命令会尝试自动修复这些问题,通过安装缺失的依赖、重新配置包或者在必要时删除有问题的包来达到这个目的。
  3. install 没有紧随包名时,意味着 apt-get -f install 将不会安装新的软件包,而是专注于修复现有的软件包安装问题。

如下是参考连接,可能因为网络限制无法访问。

https://askubuntu.com/questions/603493/apt-get-dependency-issue-open-ssh-client
dpkg: error processing package linux-image-6.5.0-27-generic (--remove): inst,qt,Linux,工具使用,linux,数据库,服务器

尝试后发现以下方式也不行。

5、解决方式-致谢

最后参照了CSDN上的方式,这种方式解决的,自己理解是删除了相关记录的文件。
参考文章:https://blog.csdn.net/qq_39029221/article/details/120193413

命令:

sudo mv /var/lib/dpkg/info/ /var/lib/dpkg/info_old/ 
sudo mkdir /var/lib/dpkg/info/ 
sudo apt-get update
sudo apt-get -f install

dpkg: error processing package linux-image-6.5.0-27-generic (--remove): inst,qt,Linux,工具使用,linux,数据库,服务器

6、补充-postrm文件写法

如下是之前参考第三章里的连接。
之前为了方便porstrm我们写的比较方便,但是它其实是postinst的逆过程,我们将postrm里内容更新,不再出上述错误。

#!/bin/sh

# 删除应用程序启动器目录中的.desktop文件
rm -f /usr/share/applications/test-my-demo.desktop

# 尝试删除当前用户的桌面目录中的.desktop文件
DESKTOP_DIR="$HOME/Desktop"
if [ -f "$DESKTOP_DIR/test-my-demo.desktop" ]; then
    rm -f "$DESKTOP_DIR/test-my-demo.desktop"
fi

# 尝试删除其他可能的位置中的.desktop文件
# 注意:在卸载包时,$SUDO_USER可能不会被正确设置,特别是在图形界面下的卸载过程中
# 如果可能,尝试检测并删除所有潜在用户桌面上的文件

# 删除 /home 下所有用户桌面目录中的.desktop文件
for dir in /home/*; do
    if [ -d "$dir/Desktop" ] && [ -f "$dir/Desktop/test-my-demo.desktop" ]; then
        rm -f "$dir/Desktop/test-my-demo.desktop"
    fi
done

# 如果是以root用户运行,尝试删除root的桌面目录中的.desktop文件
if [ -f "/root/Desktop/test-my-demo.desktop" ]; then
    rm -f "/root/Desktop/test-my-demo.desktop"
fi

exit 0

注意点:

  1. 权限问题:确保postrm脚本有适当的权限执行删除操作。这可能需要软件包在卸载时具有root权限。
  2. 用户目录的处理:由于 H O M E 和 HOME和 HOMESUDO_USER在postrm脚本中可能不可靠,特别是在图形界面环境下,脚本尝试遍历/home/*目录来寻找所有用户的桌面目录并尝试删除.desktop文件。这种方法可能会删除多个用户的桌面快捷方式,需要谨慎使用。
  3. 桌面目录的存在性:脚本检查桌面目录是否存在,并且.desktop文件是否真的在那里,然后才进行删除操作。
  4. 错误处理:使用-f选项调用rm以避免因文件不存在而产生错误信息。
  5. 这个postrm脚本是一个基础的实现,根据实际情况可能需要进一步的定制化。特别是对于多用户环境,可能需要更细致地处理每个用户的情况。

7、总结

细微之处还不能全部理解,一点点踩坑多使用。文章来源地址https://www.toymoban.com/news/detail-851736.html

到了这里,关于【Linux下qt软件安装打包附带问题: dpkg: error processing package xxxx +解决方式+自我尝试+记录】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • linux安装edge时出现dpkg依赖问题

    安装包下载地址 微软Edge(deb) 微软Edge(rpm) 执行如下命令 再次执行安装命令,安装成功

    2024年02月09日
    浏览(38)
  • 【ubuntu】手把手教你解决ubuntu报错openssh-server E: Sub-process /usr/bin/dpkg returned an error code (1)

    👉博__主👈:米码收割机 👉技__能👈:C++/Python语言 👉公众号👈:测试开发自动化【获取源码+商业合作】 👉荣__誉👈:阿里云博客专家博主、51CTO技术博主 👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。 (这报错真TM烦人) Setting up openssh-serve

    2024年02月04日
    浏览(28)
  • Linux软件包管理工具-dpkg

    目录 前言 一、什么是.deb 二、安装软件包 三、卸载软件包 四、查询软件包状态 五、查询已安装的软件包列表 六、解决依赖问题 前言 dpkg是Debian和Ubuntu等Linux发行版中用于管理软件包的基本包管理工具 dpkg的一些常用命令,通过这些命令,你可以有效地管理你的Linux系统上的

    2024年02月16日
    浏览(37)
  • Linux 打包Qt程序到无Qt环境Linux系统下运行,问题记录

    Linux 环境下Qt开发的摄像头程序用到了opencv的库,需要跟Qt环境一起打包。 1.打包所有关联库用的是脚本程序。 2.新建空文件夹放入编译好的release qt程序,比如摄像头程序 camera,新建打包脚本copylib.sh放在文件夹下。   3.终端执行 ./copylib.sh camera 会打包 camera程序所需的关联库。

    2024年02月16日
    浏览(33)
  • Linux下打包发布QT程序,并运行在其他没有安装QT环境的linux系统上

    一、Linux下打包发布步骤如下 编译应用程序环境:ubuntu18.04版本 开发环境:Qt5.14.2 编译环境:gcc_64 要移植的电脑:ubuntu18.04版本,没有开发环境 第一步:打包依赖库 1、创建一个打包目录,把生成的可执行文件拷贝放在创建的打包目录下,这里我是创建了一个打包目录名称为

    2024年02月12日
    浏览(30)
  • windows VS2015 Steup 打包发布软件并附带动态链接库dll

    打包:  方法一:VS 2015 Steup 打包发布软件_柠檬野生菌的博客-CSDN博客_vs2015 exe发布  1、插件下载 Microsoft Visual Studio 2015 Installer Projects 工具-扩展与更新-联机-搜索 Installer Projects 2、安装 关掉VS 双击下载好的 .exe 安装 3、打开VS新建Steup Project项目 注意项目名称 需要跟你打包的

    2024年02月06日
    浏览(39)
  • Linux命令-dpkg-query命令(Debian Linux中软件包的查询工具)

    dpkg-query命令 是Debian Linux中软件包的查询工具,它从dpkg软件包数据库中查询并辨识软件包的信息。 软件包名称:指定需要查询的软件包。 查找文件file1在哪个包里安装: 列出ubuntu下所安装软件列表: 查看软件包详细信息: 查看软件包安装时安装到系统的文件列表: 列出所

    2024年04月14日
    浏览(49)
  • Linux命令-dpkg-split命令(Debian Linux中将大软件包分割成小包)

    dpkg-split命令 用来将Debian Linux中的大软件包分割成小软件包,它还能够将已分割的文件进行合并。 软件包:指定需要分割的“.deb”软件包。 把foo.deb分割出N个大小为460KB的文件: 合并分割文件:

    2024年04月14日
    浏览(37)
  • Linux下软件部署安装管理----rpmbuild打包rpm包部署安装

    来源:微信公众号「编程学习基地」 创建rpm包管理路径,生成rpm相关目录 RPM打包的时候需要编译源码,还需要把编译好的配置文件,二进制命令文件之类的东西按照安装好的样子放到合适的位置,还要根据需要对RPM的包进行测试,这些都需要先有一个“工作空间”。rpmbuil

    2024年01月23日
    浏览(34)
  • 【Python】Fatal error in launcher:Unable to create process using list(pip安装第三方模块时常见问题)

        一般会在cmd中输入 pip 指令时出现。(如下图)     其它博主推荐的\\\"python -m pip install\\\"方法如果没有用,那大概率是因为电脑存在多个版本的Python环境,此时唯一解决手段就是 将所有版本的Python全部卸载干净 ,然后再重新安装某一个版本的Python即可。     具体操作如下

    2024年02月16日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包