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

news2024/10/6 5:53:14

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

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

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" ]; 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、总结

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

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

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

相关文章

Elasticsearch8.x版本Java客户端Elasticsearch Java API 如何并发修改

前言 并发控制,一般有两种方案,悲观锁和乐观锁,其中悲观锁是默认每次更新操作肯定会冲突,所以每次操作都要先获取锁,操作完毕再释放锁,适用于写比较多的场景。而乐观锁是默认每次更新操作都不会冲突&#…

51单片机学习笔记6 数码管显示

51单片机学习笔记5 数码管显示 一、动态数码管1. 动态数码管工作原理2. 工作过程3. 原理图(1)数码管及74HC245(2)74HC138译码器 4. 74HC245介绍(1)**功能**(2)**引脚**(3…

文件操作和异常处理1-读写文件

Python 之 lambda 函数完整详解 & 巧妙运用: https://blog.csdn.net/PY0312/article/details/88956795

jeecg启动Sentinel 一直是空白页面 解决办法用 外部 Sentinel SpringCloud之Sentinel概述和安装及简单整合

jeecg启动Sentinel 一直是空白页面 解决办法用 外部 Sentinel SpringCloud之Sentinel概述和安装及简单整合 文章目录 jeecg启动Sentinel 一直是空白页面 解决办法用 外部 Sentinel SpringCloud之Sentinel概述和安装及简单整合 Sentinel概述基本介绍 Sentinel安装下载地址: http…

Spring boot2.7整合jetcache方法缓存

前面的文章 我们讲了 spring boot 整合 jetcache 做基本字符串数据缓存 但是 我这里有个这样的逻辑 我的 domain 包下 有一个 book 属性类 里面就 id 和 name 属性 设置了 对应的 set get函数 和一个整体的构造函数 package com.example.javadom.domain;public class book {pr…

一些 AI 工具

AI 搜索:Phind,perplexity AI聊天大模型:chatgpt, kimi(国内可用,支持上传文件) AI 机器人:https://www.coze.com/ AI工具集;https://ai-bot.cn/#term-2 agent GPT&a…

Windows错误码2503

2503错误码通常出现在Windows系统中,指的是安装或卸载程序时遇到的错误。 2503错误码表示在安装或卸载程序时发生了一些错误,可能是由于权限不足或某些文件被占用等原因导致的。 解决这个的方法包括: 1.以管理员运行程序安装。 2.如果程序右…

批量缩放图片,按比例轻松调整,高效处理一键完成

在数字化时代,图片处理已成为我们日常生活和工作中不可或缺的一部分。无论是为了网页制作、社交媒体分享,还是为了打印照片、制作相册,我们都需要对图片进行各种调整和优化。其中,按比例缩放图片是一个常见的需求。 第一步&#…

在连续请求过程中,如何取消上次的请求?

前言 这个问题想必很多朋友都遇到过,我再详细说一下场景! 如 Boss 搜索框所示: 先输入1 再输入2 再输入3 再输入123 请求参数依次为:1 12 123 123123 请求参数通过右侧的 query 参数也可以看到,一共请求了四次。 不…

腾讯云优惠券领取的几种方法,助你降低云服务成本

随着云计算技术的广泛应用,越来越多的企业和个人选择使用云服务来降低运营成本、提高运营效率。腾讯云作为国内领先的云服务提供商,凭借其出色的性能、稳定性和安全性,赢得了广大用户的信赖。为了回馈用户,腾讯云经常推出各种优惠…

matlab simulink 工业汽轮机调节系统的模糊PID控制器设计

1、内容简介 略 72-可以交流、咨询、答疑 工业汽轮机调节系统的模糊PID控制器设计 工业汽轮机;调节系统;模糊PID;自调整论域 2、内容说明 略 摘要:针对汽轮机电、热栽荷存在不确定因素,简单的线性和非线性微分方程不能完全代表 实际调节系统&#…

数据库国产化探究及升级改造过程指导

一、背景 在信创“自主可控”的浪潮下,政企行业首当其冲,基于国产化信创的要求,本部门某业务后端应用也需要针对分析开源组件的风险和开源协议的商业应用限制;能用国产化替代的评估后尽可替代割接,本期针对传统数据库…

2024全新快递平台系统独立版小程序源码|带cps推广营销流量主+前端

2024全新快递平台系统独立版小程序源码|带cps推广营销流量主前端程序源码 程序介绍 快递代发快递代寄寄件小程序可以对接易达云洋一级总代 快递小程序,接入云洋/易达物流接口,支持选择快递公司,三通一达,极兔,德邦等&…

DensityCalculator 程序(1D 2D):通过 VMD 可计算 LAMMPS 轨迹的密度(一)

主要内容 “在分子动力学(MD)模拟中描述原子层面的结构信息是材料建模与模拟领域研究人员的一项必要任务。密度分布的可视化通常是结构表征中最重要的特性之一。可视化分子动力学(VMD)是一种广泛使用的分子可视化软件包&#xff…

vue中如何查看组件有哪些函数与变量

在开发的过程中,经常用到他人的框架,特别是开源框架比如element,uniapp等。其中就涉及到框架里对应的组件。而组件里又有哪些内置的函数,我们通常是去查官方文档。然后很多的时候需求的多样性,要改的地方也是不一样的,…

Java------数据结构之栈与队列(简单讲解)

本篇碎碎念:时隔n个月,继续写博客,假期落下的进度,在开学后努力追赶,假期不努力,开学徒伤悲啊,此时此刻真想对自己说一句,活该啊~~~~ 欠下的链表练习题讲解会在下次更新~~~~ 今日份励…

数仓建模简介

1 建模的意义 如果把数据看作图书馆里的书,我们希望看到它们在书架上分门别类地放置;如果把数据看作城市的建筑,我们希望城市规划布局合理;如果把数据看作电脑文件和文件夹,我们希望按照自己的习惯有很好的文件夹组织方…

从政府工作报告中的IT热词统计探计算机行业发展(二)人工智能+:3次

政府工作报告作为政府工作的全面总结和未来规划,不仅反映了国家整体的发展态势,也为各行各业提供了发展的指引和参考。随着信息技术的快速发展,计算机行业已经成为推动经济社会发展的重要引擎之一。因此,从政府工作报告中探寻计算…

快递送上门,别太难为快递小哥了

新修订的《快递市场管理办法》正式落地半个月,就给快递行业来了场大热闹。 与之相关的,例如:快递新规;快递员收入减半;快递员离职潮;大把快递员离职去送外卖;上门送件快递加钱...... 简单来说&…

Sawyer 机器人 ROS SDK 配置

系列文章目录 目录 系列文章目录 前言 恢复出厂设置 内容 概述 要求 程序 将 Sawyer 升级到 Intera SDK 打印 内容 概述 先决条件 安装步骤 将机器人从 Intera MFG 切换到 SDK 模式 联网 内容 确认 Sawyer 在机器人上以 SDK 模式运行 基本 基本要求 网络…