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

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

  • 1、前言
  • 2、实验环境
  • 3、问题说明
  • 4、我的努力与查到解决的方式
      • (1)补充两个文件,让软件正常执行
      • (2)尝试修复dpkg状态
      • (3)网上的查到解法-修复。
  • 5、解决方式-致谢
  • 6、补充-postrm文件写法
  • 7、总结

1、前言

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

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

2、实验环境

实验环境还是挺重要的,因为有时候,在你电脑上能运行的东西,在别人的电脑就不一定能运行,这一部分的原因就可能是实验版本不一样,另外也发现其他小伙伴,也会问些问题,之前有人大致环境装的和我差不多,当时是win的环境,结果编译遇到问题,就跑过来问是不是环境不对,这还是要具体问题具体分析的,当时看了看,发现是其他问题,总的来说,环境还是挺重要的。
系统环境:
环境问题还是要注意下的,不同环境下可能还真的可能不一样。
在这里插入图片描述

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

在这里插入图片描述

3、问题说明

如下图所示,在安装一个包名为“v4l-utils” 的视频捕捉相关设备的时候,报错如下。
在这里插入图片描述

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 ordirectory
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 ordirectory
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
在这里插入图片描述

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

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

在这里插入图片描述

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" ]; thenrm -f "$DESKTOP_DIR/test-my-demo.desktop"
fi# 尝试删除其他可能的位置中的.desktop文件
# 注意:在卸载包时,$SUDO_USER可能不会被正确设置,特别是在图形界面下的卸载过程中
# 如果可能,尝试检测并删除所有潜在用户桌面上的文件# 删除 /home 下所有用户桌面目录中的.desktop文件
for dir in /home/*; doif [ -d "$dir/Desktop" ] && [ -f "$dir/Desktop/test-my-demo.desktop" ]; thenrm -f "$dir/Desktop/test-my-demo.desktop"fi
done# 如果是以root用户运行,尝试删除root的桌面目录中的.desktop文件
if [ -f "/root/Desktop/test-my-demo.desktop" ]; thenrm -f "/root/Desktop/test-my-demo.desktop"
fiexit 0

注意点:

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

7、总结

细微之处还不能全部理解,一点点踩坑多使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/753787.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

29.网络游戏逆向分析与漏洞攻防-网络通信数据包分析工具-数据推测功能的算法实现

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 如果看不懂、不知道现在做的什么,那就跟着做完看效果 内容参考于:易道云信息技术研究院VIP课 上一个内容:28.数据推测结果…

智慧公厕对于智慧城市管理的意义

近年来,智慧城市的概念不断被提及,而智慧公厕作为智慧城市管理的重要组成部分,其在监测、管理和养护方面发挥着重要的作用。智慧公厕不仅是城市市容提升的重要保障,还能提升城市环境卫生管理的质量,并有效助力创造清洁…

springBoot项目,无配置中心,怎么实现类似功能

实现EnvironmentPostProcessor import cn.hutool.http.HttpUtil; import org.springframework.boot.SpringApplication; import org.springframework.boot.env.EnvironmentPostProcessor; import org.springframework.boot.env.YamlPropertySourceLoader; import org.springfr…

用electron将vue项目打包成.exe文件【保姆级教程】

用electron将vue项目打包成.exe文件【保姆级教程】 说明: vue2项目,使用的vue-element-admin框架,用electron打包成.exe文件。 1、新建一个文件夹,然后右键打开终端或者cd到这个目录。执行下面的命令(最好确认一下gith…

c语言文件操作(中)

目录 1. 文件的顺序读写1.1 顺序读写函数1.2 顺序读写函数的原型和介绍 结语 1. 文件的顺序读写 1.1 顺序读写函数 函数名功能适用于fgetc字符输入函数所有输出流fputc字符输出函数所有输出流fgets文本行输入函数所有输出流fputs文本行输出函数所有输出流fscanf格式化输入函数…

AI+权重衰退

AI权重衰退 1权重衰退2代码实现 2丢弃法 1权重衰退 AI权重衰退是指在人工智能(AI)领域中的一种技术或方法,用于训练机器学习模型时对权重进行惩罚或调整,以避免过拟合现象的发生。 在机器学习中,过拟合是指模型在训练…

红队笔记7--Web机器为Linuxdocker逃逸

其实,不知道大家有没有想过,我们之前练习的都是web机器是windows的版本,但是其实,在现实生活中,服务器一般都是Linux的版本,根本不可能用到windows的版本 那么如果是Linux的话,我们就有很多的困…

恒创科技:什么是BGP线路服务器?BGP机房的优点是什么?

在当今的互联网架构中,BGP(边界网关协议)线路服务器和BGP机房扮演着至关重要的角色。BGP作为一种用于在自治系统(AS)之间交换路由信息的路径向量协议,它确保了互联网上的数据能够高效、准确地从一个地方传输到另一个地方。那么,究竟什么是BGP…

车载电子电器架构 - 网络拓扑

车载电子电器架构 - 网络拓扑 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师 (Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎么看自己。江湖一碗茶,喝完再挣扎,出门靠…

单点登录:一把钥匙开启所有门

单点登录(SSO)技术,就像是一把开启企业数字化大门的钥匙,让用户一次登录,随处访问,极大地提升了工作效率和用户体验。具体到技术实现上,当用户首次登录时,SSO系统会进行认证&#xf…

Linux权限维持后门及应急响应

本次应急响应实验用kali和centos7来充当攻击机和靶机 kali:192.168.10.130 centos7:192.168.10.155 前提: 用kali连接到centos7上面ssh root192.168.10.155 一、SSH软链接 任意密码登录即可发现程度:|||||| ln -sf /usr/sbi…

CCleaner清理软件好不好 CCleaner怎么清理运行内存

CCleaner是一款使用简单,功能强大的电脑清理软件,该软件价格低廉,即使是学生也可以承担。那么这个软件究竟怎么样?可以怎么使用呢?下面就来带大家看一看CCleaner清理软件好不好,CCleaner怎么清理运行内存。…

Java-SpringAop 编程式事物实现

SpringAop 编程式事物实现 1. 数据库事物特性 原子性 多个数据库操作是不可分割的,只有所有的操作都执行成功,事物才能被提交;只要有一个操作执行失败,那么所有的操作都要回滚,数据库状态必须回复到操作之前的状态 …

redis-操作数据库

0 序言 一个Redis服务器可以包含多个数据库。在默认情况下,Redis服务器在启动时将会创建16个数据库:这些数据库都使用号码进行标识,其中第一个数据库为0号数据库,第二个数据库为1号数据库,而第三个数据库则为2号数据库…

每日五道java面试题之mybatis篇(一)

目录: 第一题. MyBatis是什么?第二题. ORM是什么?第三题. 为什么说Mybatis是半自动ORM映射工具?它与全自动的区别在哪里?第四题. 传统JDBC开发存在的问题第五题. JDBC编程有哪些不足之处,MyBatis是如何解决这些问题的…

计算机考研|北航北理北邮怎么选?

北航985,北理985,北邮211 虽然北邮事211,但是北邮的计算机实力一点也不弱,学科评级,计算机是A 北航计算机评级也是A,北理的计算机评级是A- 所以,这三所学校在实力上来说,真的大差…

LeetCode 面试经典150题 274.H指数

题目: 给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数。 根据维基百科上 h 指数的定义:h 代表“高引用次数” ,一名科研人员的 h 指数 是指他(她…

DM数据库安装(Linux)

Linux安装 操作系统CPU数据库CentOS7x86_64 架构dm8_20230418_x86_rh6_64 先把压缩包扔过去 新建 dmdba 用户 创建用户所在的组,命令如下: groupadd dinstall 创建用户,命令如下: useradd -g dinstall -m -d /home/dmdba -s /…

由浅到深认识C语言(13):共用体

该文章Github地址:https://github.com/AntonyCheng/c-notes 在此介绍一下作者开源的SpringBoot项目初始化模板(Github仓库地址:https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址:https://blog.csdn…

ConKI: Contrastive Knowledge Injection for Multimodal Sentiment Analysis

文章目录 ConKI:用于多模态情感分析的对比知识注入文章信息研究目的研究内容研究方法1.总体结构2.Encoding with Knowledge Injection2.1 Pan-knowledge representations2.2 Knowledge-specific representations 3.Hierarchical Contrastive Learning4.损失函数5.训…