首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

浅谈Linux中的软件包管理器——基于ubuntu环境

  • 25-03-04 10:30
  • 4624
  • 5194
blog.csdn.net

文章目录

  • 1. 为什么要使用软件包管理器
    • 1.1 使用源码
    • 1.2 使用rpm安装包
    • 1.3 使用apt软件包管理器
  • 2. 如何使用apt
    • 2.1 软件的安装和卸载
    • 2.2 查找和搜素软件包
    • 2.3 更新并升级软件包
    • 2.4 清理缓存
  • 3. 从apt到系统生态

1. 为什么要使用软件包管理器

在Linux中,有三种软件安装方式。

1.1 使用源码

根据我们以往使用windows系统的经验,安装包本质上就是一个可执行文件,windows下的安装包,也就是用某个程序的源码在windows环境下编译得到的可执行程序。

类比到Linux中,我们想要安装软件,就可以拿到软件的源码,然后在Linux的环境下编译,得到一份可执行文件,然后通过运行这个可执行文件进行下载。

但是,这种方法难度过高,并不推荐,并且无法解决软件的依赖关系。
什么是软件的依赖关系呢?直白地说,软件往往不是单独存在的,一个软件的下载,往往不止下载这个软件自身,还要下载这个软件所依附的一些软件,即这个软件要借助其它的一些软件以实现其功能,这就是软件的依赖关系。

1.2 使用rpm安装包

rpm安装方式,实质上就是别人将软件的源码编译好,然后打包得到的安装包。

这种安装方式,虽然没有那么复杂,但是依然无法解决软件的依赖关系。

1.3 使用apt软件包管理器

在Linux中,使用apt软件包管理器既能下载软件本身,又能解决软件的依赖关系,是最为推荐的软件下载方式。

ubuntu中默认安装有apt软件包管理器。

在这里插入图片描述
apt软件包管理器的实质是什么呢?

在手机上,我们是如何下载应用的呢?我们打开手机的应用商店,应用商店里就提供了各种各样的软件安装包,我们要想下载某个软件,下载其中提供的软件安装包,最后安装即可。

apt软件包管理器相较于软件,就像手机上的APP之于应用商店的关系一样。
Linux中,所有的软件下载本质上都是到某些软件包服务器上进行下载,这些软件包服务器都是别人搭建好的。

使用apt软件包管理器下载某个软件时,apt就会向特定的软件包服务器发送下载请求,然后下载返回。此时,相应的软件下载好,同时软件所需的依赖关系也一并解决了。

你可能会疑惑,apt软件包管理器是如何找到这个软件包服务器的呢?实质上,apt中内置了一些软件包服务器的链接,下载软件时就会到这些链接所对应的软件包服务器上去查找相应软件,并下载。

在这里插入图片描述

2. 如何使用apt

2.1 软件的安装和卸载

使用apt时进行安装和卸载时,要么使用root账户,要么使用sudo进行权限提升,因为apt需要在某些要求管理员权限的目录下进行操作。

sudo apt install -y:后接具体要安装的软件名, -y 选项表示自动确认,无须手动确认。
sudo apt remove -y:后接具体要卸载的软件名, -y 选项表示自动确认。

2.2 查找和搜素软件包

sudo apt list : 列出所有可供安装的软件包,可以不使用sudo
sudo apt search : 后接关键字,会找到所有包含此关键字的软件包,可以不使用sudo

2.3 更新并升级软件包

sudo apt update : 用于从下载源处更新软件包索引,确保下载的软件包始终是最新版本的,但并不会实质性地更新已下载软件
sudo apt upgrade : 用于更新已下载软件,通常使用在update之后,可能无法解决某些软件更新后的新依赖关系
sudo apt full-upgrade : 对于upgrade无法解决的软件依赖的更新问题,可以使用 full-upgrade

2.4 清理缓存

在Linux中,下载的软件包通常会被存储在本地缓存中,清理缓存,实质上就是清理这些软件包,就像windows中软件安装好后,清理软件安装包一样。

通常情况下,不会将缓存全部清除,而是清理一些旧版本的软件包和一些不再被需要的依赖软件包。

sudo apt clean : 用于清理所有缓存
sudo apt autoclean : 用于清理旧版本的软件包
sudo apt autoremove : 用于清理不再需要的依赖包

3. 从apt到系统生态

通过前面的介绍,我们可以知道,apt这个软件包管理器,实质上是到相应的软件包服务器上去下载相应的软件包。而软件包服务器是需要维护的,软件包是需要不断更新的,而linux系统是开源的,并不是闭源的盈利性系统,那为什么会有人愿意自发地去进行维护呢?

这实际上设计到系统的生态问题。看一个系统优不优秀,并不是单单看这个系统本身,还要看与之相联系的许多东西。

在这里插入图片描述
所以,发展一个操作系统,实质上就是发展这个操作系统的生态,而软件体系,是操作系统生态中非常重要的一环。

一个操作系统的生态越好,使用这个操作系统的人便会越多,对这个操作系统的依赖性便会越强。

在这样的情况下,如果一个维护该操作系统生态的团队因为Linux开源的非盈利特性,而无以为继,这时,习惯并依赖于这个操作系统的个人、社会组织乃至公司,就会采用募捐等方式为这个团队筹集资金,使之能够继续维护该操作系统的生态。

所以,Linux的开源,本质上也是一种商业模式,并不会因为开源而导致操作系统的生态无人维护和发展。

在这里插入图片描述

注:本文转载自blog.csdn.net的平生不喜凡桃李的文章"https://blog.csdn.net/2402_86037826/article/details/145910952"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2491) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top