当前位置: 首页 > article >正文

银河麒麟桌面版包管理器(一)

以下内容摘自《银河麒麟操作系统进阶应用》一书

为便于从整体上把握本章内容,图31绘制了本章介绍的银河麒麟桌面版包管理器层次架构图。

deb包格式

(1)deb包的组成。

在Debian及其派生的Linux发行版中,deb包扮演了至关重要的角色。作为这些系统上软件分发和安装的标准格式,理解deb包的结构和管理机制是很有必要的。deb包不仅仅是简单的软件容器,还包含了软件运行所需的依赖信息、配置文件,以及安装前后的脚本指令(如图32所示)。这些都是确保软件能够正确安装和运行的关键因素。

  • 控制信息:这部分包含了软件包的元数据,如软件版本、维护者信息、软件包依赖关系等。这些控制信息的文件格式遵循Deb822格式标准。Deb822是一种基于文本的结构化数据表示形式,其命名源自RFC 822标准(该标准定义了互联网文本消息格式)。Deb822格式主要用于描述Debian软件包的元数据,确保包管理系统能够正确地解析和处理这些信息。Deb822文件的主要特点是采用简单、直观的键值对格式,这使得它既便于人类阅读,也易于机器解析。
  • 数据文件:包含了软件包本身的所有文件和目录。这些是安装到系统中的实际内容。
  • 脚本:包含了preinst、postinst、prerm和postrm等脚本,这些脚本在软件包安装、升级或卸载的不同阶段被执行,用于进行配置和清理工作。

(2)deb包的高级功能。

deb包不仅仅是一个简单的软件分发格式,还是一个强大的系统管理工具,如图33所示。

  • 配置文件处理:deb包可以包含配置文件,并在软件包安装或更新时智能处理用户对配置文件的修改。这是通过dpkg(将在下一节介绍)的配置文件管理机制实现的。dpkg能够检测到用户对配置文件的改动,并在包更新时提供选项,让用户选择是保留修改、使用包的新版本,还是查看差异。
  • 虚拟包和替代:deb包允许创建虚拟包,这是一种没有实际内容的包,仅作为其他包的依赖存在。通过这种机制,可以建立复杂的依赖关系,例如,一个实际软件包可以提供多个虚拟包的功能,或多个包可以替代同一个虚拟包。
  • 触发器:触发器允许deb包在安装、更新或删除时触发相关脚本执行。这对于处理诸如字体缓存更新、桌面数据库更新等任务特别有用,因为这样的任务只有在相关的包发生变化时才执行,避免了不必要的重复处理。

deb包的管理

使用dpkg管理deb包

在Debian及其衍生系统中,dpkg(Debian Package)是最基础的包管理工具,尽管普通用户通常更多地通过APT(Advanced Package Tool)这样的高级工具间接地使用dpkg,但掌握dpkg的基本用法可以在系统管理中实现更精细的控制。

安装、卸载、配置及清除软件包是日常维护系统时的基本任务。了解如何使用dpkg来执行这些操作,将帮助用户有效地管理Debian系操作系统。表32列举了dpkg常见用法。

表32  dpkg常见用法

命    令

解    释

dpkg -i <package-file.deb>

dpkg -i ./*.deb

安装或更新.deb文件的软件包

批量安装当前目录下的所有.deb软件包

dpkg -r <package>

从系统中删除软件包,但保留其配置文件

dpkg --purge <package>

从系统中彻底删除软件包及其配置文件

dpkg -I <package-file.deb>

显示.deb文件的详细信息,如版本、架构等

dpkg --unpack <package-file.deb>

解压.deb文件,但不配置软件包

dpkg --configure <package>

配置或重新配置已解压但未配置的软件包

在银河麒麟桌面版中安装.deb软件包时,有时会出现如图34所示的报错信息,这是因为操作系统“安全中心”的“应用保护”功能限制了未验证第三方软件包的安装。

可以打开“设置>安全中心>应用保护”,临时将应用程序“来源检查”、“应用程序执行控制”、“应用防护控制”关闭后再安装。

当遇到软件包数据库损坏时,可使用dpkg --configure -a命令尝试修复所有未正确配置的包。在安装过程中断时,可能产生未完全安装的软件包,这些软件包可能会妨碍进一步的包管理操作。dpkg --remove和dpkg --purge命令分别提供了卸载和清除这些半安装包的手段。dpkg-query命令允许用户执行更复杂的搜索查询,例如,使用正则表达式来定位软件包,其常见用法如表3-3所示。

表33  dpkg-query命令常见用法

命    令

解    释

dpkg-query -l

列出所有已安装的软件包

dpkg-query -s <包名称>

显示特定软件包的信息

dpkg-query -L <包名称>

列出特定软件包的文件位置

dpkg-query -S /path/to/file

搜索包含特定文件的软件包

高级dpkg用法还包括使用dpkg日志进行问题追踪,该日志存储在/var/log/dpkg.log中,记录了所有dpkg活动的详细信息。通过文本处理工具,可以从日志中筛选出有用的信息,以解决问题或优化系统性能。

可先使用dpkg --get-selections导出所有已安装软件包的列表,在其他计算机上再使用dpkg --set-selections导入这些软件包列表,可以实现批量安装。配合备份工具和脚本可以实现软件配置的自动化备份与恢复,保证在系统故障时能够迅速重建服务。

使用gdebi安装deb包

dpkg在安装Debian包时,若遇到依赖问题,则需要用户手动解决。而gdebi可以在安装deb包时自动下载并安装所需的依赖项,简化了安装过程。

(1)安装gdebi工具。

sudo apt-get update

sudo apt-get install gdebi

(2)使用gdebi安装deb包。

  • 命令行形式:sudo gdebi <package_name.deb>。
  • 图形用户界面形式:使用gdebi-gtk打开图形用户界面的gdebi,选择deb包后再安装。

使用APT安装deb包

APT作为Debian及其派生系统的默认包管理器,除了具有从远程软件仓库中下载安装软件等功能,也支持安装本地的.deb格式的软件包,具体命令如下:

sudo apt install ./package_name.deb

小结

对于普通用户来说,gdebi和apt是安装.deb文件的最佳选择,因为它们都能够自动处理依赖问题,简化安装过程。而dpkg更适合有经验的用户或在特定情况下使用,比如已经手动解决了所有依赖问题时。在安装.deb软件包的场景下,三者的比较见表34。

表34  dpkg、gdebi、apt在安装.deb软件包时的比较

特    性

dpkg

gdebi

apt

自动解决依赖

图形用户界面支持

是(gdebi-gtk)

包信息显示

部分(通过dpkg -I查看)

是(通过apt show查看)

处理速度

占用系统资源

安装前检查依赖

使用简便性

中等

依赖错误处理

需要手动解决

自动提示并解决

自动提示并解决


http://www.kler.cn/a/598058.html

相关文章:

  • vue3 UnwrapRef 与 unref的区别
  • 【从零开始学习计算机科学】软件工程(一)软件工程中的过程模型
  • 安装PrettyZoo操作指南
  • 计算机二级:函数基础题
  • 相控阵雷达的EIRP和G/T
  • 路由工程师大纲-1:路由+AI研究的知识体系与低成本论文方向
  • WPF-实现按钮的动态变化
  • 深度剖析HTTP协议—GET/PUT请求方法的使用-构造请求的方法
  • sv线程基础
  • React 开发环境搭建
  • python学习笔记--实现简单的爬虫(二)
  • JS数组扁平化(多维转一维)
  • OpenFOAM中snappyHexMesh工具如何支持Cut-Cell方法
  • Enhancing Zero-shot Text-to-Speech Synthesis with Human Feedback论文学习
  • k8s的核心组件整理
  • Pytorch实现之对称卷积神经网络结构实现超分辨率
  • Java IO 流:从字节到字符再到Java 装饰者模式(Decorator Pattern),解析与应用掌握数据流动的艺术
  • 【可靠性】高κ-SrTiO3 MoS2 FET的稳定性和可靠性
  • Web开发-JS应用NodeJS原型链污染文件系统Express模块数据库通讯
  • JAVASCRIPT 基础 DOM元素,MAP方法,获取输入值