Linux安装软件的方法

目录

1.RPM(红帽软件包管理)

2.YUM软件仓库

[3.DNF(Yum v4 版本)](#3.DNF(Yum v4 版本))

4.Debian系的软件仓库APT

5.总结


1.RPM(红帽软件包管理)

在RPM(红帽软件包管理)公布之前,要想在Linux系统中安装软件,只能采取编译源码包的方式。

早期安装软件是一件非常困难、耗费耐心的事情,而且大多数的服务程序仅仅提供自身的源代码,还需要运维人员编译代码之后自行解决软件之间的依赖关系。

总而言之,早期的 Linux 系统在安装、升级、卸载服务程序时还要考虑到其他程序、库的依赖关系,所以在进行校验、安装、卸载、查询、升级等软件操作时难度都非常大。RPM机制则正是为了解决这些问题而设计的。

RPM有点像Windows系统中的控制面板,会建立统一的数据库,详细记录软件信息并能够自动分析依赖关系。表 1-1 所示为一些常用的RPM软件包命令。

2.YUM软件仓库

但是,尽管RPM能够帮助用户查询软件之间的依赖关系,但问题还是要运维人员自己来解决,而有些大型软件可能与数十个程序都有依赖关系,在这种情况下安装软件依然很繁琐。Yum软件仓库便是为了进一步降低软件安装难度和复杂度而设计的技术。Yum软件仓库可以根据用户的要求分析出所需软件包及其相关的依赖关系,然后自动从服务器下载软件包并安装到系统。Yum软件仓库的技术拓图扑如图所示。

Yum软件仓库中的RPM软件包可以是由红帽官方发布的,也可以是由第三方发布的,当然也可以是自己编写的。表1-2所示为一些常见的Yum命令。

3.DNF(Yum v4 版本)

原本以为故事到此就要结束了,可是人们发现Yum虽然解决了软件的依赖关系问题,但仍然还是存在分析不准确、内存占用量大、不能多人同时安装软件等硬伤。终于,在2015年随着Fedora 22系统的发布,红帽又给了我们一个新的选择---DNF。DNF实际上就是解决了上述问题的Yum软件仓库的提升版,行业内称之为Yum v4版本。

作为Yum软件仓库v3版本的接替者,DNF特别友好地继承了原有的命令格式,且使用习惯上也保持了一致。大家不用担心不会操作,我们来看一个例子。以前,安装软件用的命令是"yum install软件包名称",那么现在则是"dnf install 软件包名称"(也就是说,将yum替换成dnf即可)。

当然 RHEL 8 系统也照顾到了老用户的习惯问题,同时兼容并保留了 yum 和 dnf 两个命令,大家在实际操作中随意选择就好。甚至这两个命令的提示信息都基本一样,感知不到什么区别。

4.Debian系的软件仓库APT

APT 是一个Debian系的用于处理软件包管理的工具,允许用户轻松地安装、更新和卸载软件包。

apt和apt-get都是Linux系统中的包管理工具,主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。它们之间的主要区别如下:

  • apt-get:这是一个较早的工具,主要用于处理底层的包管理任务,如安装和删除软件包文件。
  • apt:这是一个较新的工具,它提供了一个更统一,更适合终端用户使用的接口。apt命令是对之前的apt-get、apt-cache等的封装,提供更加统一,更加适合终端用户使用的接口。

简单来说就是:apt = apt-get、apt-cache和apt-config中最常用命令选项的集合

总的来说,apt和apt-get都是用来管理软件包的,但apt提供了一个更统一,更适合终端用户使用的接口。

5.总结

注意事项:

  • 软件仓库本身也是软件,可以通过软件仓库下载软件仓库,例如yum install dnf;
  • 目前apt已经内置了apt-get;
  • 红帽系的软件仓库和debian系两者不能互用;
  • 某些老软件可能只能通过老的软件仓库来下载;
  • 一个软件仓库有多个仓库,可以通过换源来更换,换源可以帮助用户获得更快的下载速度、更新频率更高的软件包,或者获取特定版本的软件。
相关推荐
---学无止境---11 分钟前
Linux中slab缓存初始化kmem_cache_init函数和定时回收函数的实现
linux
草莓熊Lotso17 分钟前
Linux 进阶指令实操指南:文件查看、时间管理、搜索压缩全场景覆盖(附高频案例)
linux·运维·服务器
Cx330❀17 分钟前
《Linux进阶指令实操指南》:文件查看、时间管理、搜索压缩全覆盖(附高频案例)
linux·运维·服务器
努力努力再努力wz38 分钟前
【C++进阶系列】:万字详解unordered_set和unordered_map,带你手搓一个哈希表!(附模拟实现unordered_set和unordered_map的源码)
java·linux·开发语言·数据结构·数据库·c++·散列表
Small___ming1 小时前
【Linux基础学习】Linux Ubuntu 权限管理:从入门到精通
linux·学习·ubuntu
tan77º1 小时前
【项目】基于多设计模式下的同步&异步日志系统 - 项目介绍与前置知识
linux·c++·设计模式
yalipf1 小时前
忘记密码更改ubuntu18.08的密码--前提是要知道用户名work
linux·运维·ubuntu
怀旧,2 小时前
【Linux系统编程】3. Linux基本指令(下)
linux·开发语言·c++
艾莉丝努力练剑2 小时前
【C++STL :stack && queue (三) 】优先级队列的使用以及底层实现
linux·开发语言·数据结构·c++·stl
web安全工具库3 小时前
Makefile 模式规则精讲:从 %.o: %.c 到静态模式规则的终极自动化
linux·运维·c语言·开发语言·数据库·自动化