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

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

目录

  • 引言
  • 一、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.kler.cn/a/402998.html

相关文章:

  • 使用猴子补丁对pytorch的分布式接口进行插桩
  • 如何在 MySQL 中进行数据导入和导出?
  • OpenCV双目立体视觉重建
  • Java项目实战II基于微信小程序的校运会管理系统(开发文档+数据库+源码)
  • JavaWeb——Mybatis
  • python基本数据类型 -- 元组tuple
  • Python实现图片定位与自动输入文字
  • 七、利用CSS和多媒体美化页面的习题
  • OLED透明屏在零售行业有什么应用场景
  • SpringBoot项目升级到3.*,并由JDK8升级到JDK21
  • [ 跨域问题 ] 前后端以及服务端 解决跨域的各种方法
  • FIFO架构专题-拼接方案及FIFO读清案例
  • 使用 Axios 拦截器优化 HTTP 请求与响应的实践
  • 论文阅读 SeedEdit: Align Image Re-Generation to Image Editing
  • 绿光一字线激光模组:工业制造与科技创新的得力助手
  • 下单抽奖领取商品奖品之后还能继续抽奖问题处理
  • Flutter踩坑记录(二)-- GestureDetector+Expanded点击无效果
  • mysql中between and怎么用
  • 使用Go语言实现一个简单的HTTP服务器,提供静态文件服务。
  • Python 编程开发(01):Bash 命令行基本操作
  • HarmonyOS4+NEXT星河版入门与项目实战--------开发工具与环境准备
  • 研发效能DevOps: Vite 使用 Axios 实现数据双向绑定
  • C#实现数据采集系统-分组查询
  • 云原生学习
  • 图形学笔记 - 4. 几何 - 基本表示方法及曲线和曲面
  • 大数据入门-什么是Flink