探索Linux软件包管理的进化之路:从源码编译到Snap包的飞跃

embedded/2024/11/21 15:32:48/

目录

  • 引言
  • 一、Linux软件包管理的发展过程
    • 1、从源代码安装软件
    • 2、使用软件包安装软件
    • 3、高级软件包管理工具
  • 二、Deb软件包管理
    • 1、查看
    • 2、安装
    • 3、卸载
  • 三、 使用APT工具管理软件包
    • 1、基本功能
    • 2、解决依赖关系
    • 3、软件包更新
    • 4、查询软件包
    • 5、安装软件包
    • 6、卸载软件包
    • 7、升级软件包
    • 8、新立得软件包管理器(Synaptic Package Manager)
  • 四、安装和管理 Snap包
    • 1、简介
    • 2、特点
      • ①搜索要安装的Snap包
      • ②查看Snap包的详细信息
      • ③搜索要安装的Snap包
      • ④列出已经安装的Snap包
      • ⑤更新已安装的Snap包
      • ⑥还原已安装的Snap包
      • ⑦列出所有可用的版本
      • ⑧启用或禁用Snap包
      • ⑨卸载Snap包
  • 总结

引言

在Linux操作系统中,软件包管理是一项至关重要的功能,它直接关系到用户能否高效、安全地安装、更新和卸载软件。随着Linux的发展,软件包管理也经历了从简单到复杂、从手动到自动的演变过程。从早期的从源代码编译安装,到后来的RPM和Deb等软件包格式的出现,再到高级软件包管理工具如Yum、APT以及Snap的兴起,Linux软件包管理逐渐变得更加便捷、高效和智能化。本文将详细介绍Linux软件包管理的发展过程,重点探讨Deb软件包管理和APT工具的使用,以及新兴的Snap包管理方式的特点和操作方法,旨在帮助读者更好地理解和使用Linux软件包管理工具。

一、Linux软件包管理的发展过程

在这里插入图片描述

1、从源代码安装软件

早期Linux主要使用源代码包发布软件。
直接将源代码编译成二进制文件,并对系统进行相关配置。

过程概述:
下载源代码
解压源代码
配置
编译
安装

2、使用软件包安装软件

软件包将应用程序的二进制文件、配置文档和帮助文档等合并打包在一个文件中。
主流的软件包格式有两种:RPM和Deb。

二进制文件:经过编译的程序代码,可以直接运行。
配置文档:这些文件帮助我们设置软件的行为和参数。
帮助文档:提供使用说明和指南,帮助用户了解如何使用这个软件

3、高级软件包管理工具

Yum:基于RPM包的软件包管理器。
APT:Debian及其派生发行版(如Ubuntu)的软件包管理器。
Snap:一种全新的软件包安装管理方式,可以不依赖于第三方系统功能库独立包装,代表未来软件包安装的发展方向。

二、Deb软件包管理

1、查看

使用选项-l列出软件包的简要信息:

dpkg -l 软件包名

使用选项-s来查看软件包状态的详细信息:

dpkg -s 软件包名

使用选项-S获知已安装的软件包拥有哪些文件:

dpkg -S 软件包名

列出所有已安装的软件包:

dpkg -l

2、安装

所有的软件包安装之前必须保证所依赖的库和软件已经安装到系统上。
首先要获取Deb软件包文件,然后使用选项-i安装Deb软件包

  sudo dpkg -i 软件包文件名

所有的软件包安装之前必须保证所依赖的库和软件已经安装到系统上,一定要清楚依赖关系。

3、卸载

使用选项-r卸载软件包同时会保留该软件的配置信息:

 sudo dpkg -r 软件包名

要将配置信息一并删除,应使用选项-P:

 sudo dpkg -P 软件包名

使用dpkg工具卸载软件包不会自动解决依赖性问题。

三、 使用APT工具管理软件包

1、基本功能

在这里插入图片描述

2、解决依赖关系

多数情况下APT会安装最新的软件包,被安装的软件包所依赖的其他软件包也会安装。

3、软件包更新

APT可以智能地从软件源下载最新版本的软件并且安装。
APT还支持Ubuntu(或Debian)从一个发布版本升级到新的发布版本。
在这里插入图片描述

4、查询软件包

apt list 列出软件包
apt search 软件包名 查找使用参数定义的软件包并列出该软件包的相关信息。
apt show 软件包名 查看指定名称的软件包的详细信息。
apt depends 软件包名 查看软件包所依赖的软件包。
apt rdepends 软件包名 查看软件包被哪些软件包所依赖:
apt policy 软件包名 显示软件包的安装状态和版本信息。

5、安装软件包

在每次安装和更新软件包之前先执行apt update更新系统中apt缓存中的软件包信息。
执行apt install命令安装指定名称的软件包。
安装过程中APT为用户提供了大量信息,自动分析并解决了软件包依赖问题。

6、卸载软件包

apt remove       

卸载一个已安装的软件包,但会保留该软件包的配置文档。
要同时删除配置文件,则要执行

apt purge

更彻底的删除,可执行以下命令删除与该软件包及其所依赖的、不再使用的软件包 。

sudo apt-get autoremove 软件包名

7、升级软件包

apt upgrade 升级本地已安装的所有软件包。
apt dist-upgrade 识别出依赖关系改变的情形并作出相应处理,会尝试升级最重要的包。
apt upgrade -u 让APT显示完整的可更新软件包列表。
apt upgrade -s 使用选项-s模拟升级软件包。
apt install 软件包名 --reinstall 只想对某一具体的软件包进行升级

8、新立得软件包管理器(Synaptic Package Manager)

APT管理工具的图形化前端。
可以在图形界面中通过鼠标操作就能安装、删除、配置、升级软件包,对软件包列表进行浏览、排序、搜索以及管理软件仓库,甚至升级整个系统。
新立得软件包管理器相当于终端中运行的apt命令。
通过以下命令进行安装:

sudo apt-get install synaptic

使用命令打开:

sudo synaptic 

在这里插入图片描述
在这里插入图片描述

四、安装和管理 Snap包

1、简介

Snap是Canonical提出的一个打包概念。
Snap的安装包扩展名是.snap,类似于一个容器,完全独立于系统。
Snap软件包一般安装在/snap目录下。
每个Snap包都运行在一个由AppArmor和Seccomp策略构建的沙箱环境中,实现了各个应用程序之间的相互隔离。

2、特点

单个Snap 包可以内嵌多个不同来源的软件,从而提供一个能够快速启动和运行的解决方案。
Snap包能自动地进行事务化更新。
每个Snap包会安装到一个新的只读squashfs文件系统中。
Snap还可以同时安装多个版本的软件。
Snap内建与Linux发行版不兼容的库,做到“一次打包,到处使用”。
使用Snap包带来的问题是会占用更多的磁盘空间。

①搜索要安装的Snap包

 snap find <要搜索的文本>

②查看Snap包的详细信息

 snap info 包名

③搜索要安装的Snap包

 snap install 包名

④列出已经安装的Snap包

 snap list

在这里插入图片描述

⑤更新已安装的Snap包

 snap refresh 包名

⑥还原已安装的Snap包

 snap rtevert 包名

⑦列出所有可用的版本

 snap list --all

⑧启用或禁用Snap包

   sudo snap disable 包名             sudo snap enable 包名      

⑨卸载Snap包

 snap remove 包名

总结

通过对Linux软件包管理的发展过程、Deb软件包管理、APT工具以及Snap包管理的深入探讨,我们可以发现,Linux软件包管理已经变得非常成熟和多样化。从早期的从源代码编译安装,到现在的一键式安装和更新,Linux软件包管理不仅提高了用户的操作效率,还增强了系统的安全性和稳定性。Deb软件包管理和APT工具作为Debian及其派生发行版(如Ubuntu)的核心组件,为用户提供了强大的软件包管理功能,而Snap包管理作为一种全新的软件包安装方式,更是以其独立性、安全性和易用性赢得了广泛的关注和认可。未来,随着Linux操作系统的不断发展和完善,我们可以期待更加高效、智能和安全的软件包管理工具的出现,为Linux用户带来更加便捷和丰富的使用体验。


http://www.ppmy.cn/embedded/139369.html

相关文章

前端三剑客(二):CSS

目录 1. CSS 基础 1.1 什么是 CSS 1.2 语法格式 1.3 引入方式 1.3.1 行内样式 1.3.2 内部样式 1.3.3 外部样式 1.4 CSS 编码规范 2. 选择器 2.1 标签选择器 2.2 id 选择器 2.3 class 选择器(类选择器) 2.4 复合选择器 2.5 通配符选择器 3. 常用 CSS 样式 3.1 c…

03 —— Webpack 自动生成 html 文件

HtmlWebpackPlugin | webpack 中文文档 | webpack中文文档 | webpack中文网 安装 npm install --save-dev html-webpack-plugin 下载html-webpack-plugin本地软件包 npm i html-webpack-plugin --save-dev 配置webpack.config.js让webpack拥有插件功能 const HtmlWebpack…

【MATLAB代码】基于IMM(Interacting Multiple Model)算法的目标跟踪,所用模型:CV、CA、CT

文章目录 3个模型的IMM&#xff08;代码简介&#xff09;源代码运行结果代码介绍总结 3个模型的IMM&#xff08;代码简介&#xff09; 本MATLAB代码实现了基于IMM&#xff08;Interacting Multiple Model&#xff09;算法的目标跟踪。它使用三种不同的运动模型&#xff08;匀速…

优选算法(双指针)

1.双指针介绍 双指针算法是一种常用的算法思想&#xff0c;特别适用于处理涉及阵列、链表或字符串等线性数据结构的问题。通过操作两个一个指针来进行导航或操作数据结构&#xff0c;双指针可以最大程度优化解决方案的效率。提高效率并减少空间复杂度。 在Java中使用双指针的核…

【蓝桥杯C/C++】翻转游戏:多种实现与解法解析

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: 蓝桥杯C/C 文章目录 &#x1f4af;题目&#x1f4af;问题分析解法一&#xff1a;减法法解法二&#xff1a;位运算解法解法三&#xff1a;逻辑非解法解法四&#xff1a;条件运算符解法解法五&#xff1a;数组映射法不同解法的比较…

ssm126基于HTML5的出租车管理系统+jsp(论文+源码)_kaic

设计题目&#xff1a;出租车管理系统的设计与实现 摘 要 网络技术和计算机技术发展至今&#xff0c;已经拥有了深厚的理论基础&#xff0c;并在现实中进行了充分运用&#xff0c;尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代&#xff0c;所以…

【网络系统管理】Centos7——配置主从mariadb服务器案例(下半部分)

【网络系统管理】Centos7——配置主从mariadb服务器案例-CSDN博客 接上个文档&#xff0c;我们已经完成了主服务器创建数据库备服务器可以看到 一、在DBMS2查看信息 File&#xff0c;Position这两个字段的数据要记好&#xff0c;等一下需要用到 show master status; 二、在…

python实战案例----使用 PyQt5 构建简单的 HTTP 接口测试工具

python实战案例----使用 PyQt5 构建简单的 HTTP 接口测试工具 文章目录 python实战案例----使用 PyQt5 构建简单的 HTTP 接口测试工具项目背景技术栈用户界面核心功能实现结果展示完整代码总结 在现代软件开发中&#xff0c;测试接口的有效性与响应情况变得尤为重要。本文将指导…