| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> Linux下软件管理方式 -> 正文阅读 |
|
[系统运维]Linux下软件管理方式 |
《Linux下软件管理方式》源站链接,阅读体验更佳~ 回想一下在Windows系统下我们是如何安装软件的,对于Windows系统而言,大部分的软件我们都可以从软件的官方页面下载软件的安装器,然后运行安装器软件,默认情况下一直点击下一步,就可以完成软件的安装了。对于一些开源的Windows软件,我们也可以直接获取软件的源代码,然后在自己的机器上进行编译。当然也有一些所谓的“绿色”软件解压之后立马就可以开始使用,不用进行任何的安装操作。 但是,在Windows操作系统下相对简单的软件安装,在Linux下却变得没有那么简单。在早期的时候,我们通常都是通过直接获取软件的源代码,然后在自己的Linux环境中进行编译的方式来进行软件的安装。 我们获取一个软件源代码的方式通常有两种,一种是直接使用版本管理工具比如Git来获取软件的源代码,另一种就是我们常说的Tarball了。 Tarball软件管理方式由于自由软件的蓬勃发展,加上大型Unix-like主机的强大性能,很多软件开发者将它们的软件使用Tarball进行发布。 所谓的Tarball文件,其实就是将软件的所有源代码文件以tar打包,然后再以压缩技术来压缩,通常最常见的就是用gzip来压缩。因为利用了tar与gzip的功能,所以Tarball文件的扩展名一般就是 使用Tarball的好处是显而易见的,因为使用了打包和压缩技术,使得源代码的下载更加简单,可以节省网络带宽。一个Tarball之中通常会包含以下内容:
通常我们需要特别注意的就是INSTALL或者是README文件,参考这两个文件,我们就能够比较容易地对Tarball软件进行安装。 Linux下两种主流的软件管理器——RPM和DPKG利用直接获取软件源代码并在本机进行编译的方式有其独特的优势,比如我们可以根据自己的需求对源代码进行修改,以及针对自己的环境设置最佳的编译参数等等。 但是,Linux 发展到今天,已经是一个相当复杂和丰富的操作系统了,其大部分源代码还是 GNU 项目的。因为是开源自由,所以 Linux 不像 Windows 那么死板,你可以自己定制属于自己的 Linux 系统,只要你够厉害,可以自己裁裁剪剪,修修改改 Linux 的源代码。 不过也正因为如此,一些初学者就有点头大了,网上一搜 Linux,版本那么多,用哪一个内核版本呢?然后安装哪些应用程序呢?而且安装方法又不同… 为了简化用户安装的过程,以及提供一些基本的软件,例如浏览器,通讯软件,终端,绘图软件,文本编辑器等等,产生了不少的 Linux 发行版,这些 Linux 的操作系统可以说是一整套使用环境:有内核,有 API,有各种预装的应用程序。 所以,一个Linux发行版其实就是Linux内核加上一大堆基础应用程序所组成的一个可用的操作系统。然而,不同的Linux发行版所提供的基础环境可能都是不一样的,这就导致我们如果直接拿到一个编译好的软件放到我们的Linux发行版中它可能是不能正常运行的。 **如果我们换一个思路,如果我们的Linux系统与发行商的系统是一模一样的,那么在厂商的系统上面编译好的软件,自然就可以在我们的操作系统上面运行。**也就是说,厂商先在他们的系统上编译好用户所需要的软件,然后把这个编译好的软件直接分发给用户进行安装,如此一来,由于我们本来就是使用的厂商的Linux发行版操作系统,这样就排除了环境的差异性。 如此一来,我们直接使用厂商编译好的软件就没有问题了。说的比较直接一点,就是利用了类似于Windows下软件的安装方式,因为Windows操作系统只有微软一家发行商,所以只要是实现在Windows下编译好并且可以正常运行的程序,我们直接把这个编译好的软件放到另一台装有同样版本的Windows操作系统的机器上,也是可以正常运行的。 再进一步,Linux开发商先在固定的硬件平台与操作系统平台上将需要安装或升级的软件编译好,然后将这个软件的所有相关文件打包成一个特殊格式的文件,在这些文件中还包含了预先检测系统与依赖软件的脚本,并提供数据库对这些信息进行记录,最后将这些文件发布。 客户端获取到这个文件后,只需要通过特定的命令就可以进行安装,在安装的过程中,安装命令会根据文件内部提供的检查依赖的脚本来检查安装环境是否符合需求,如果安装环境符合需求,那么才会进行安装。安装完成后,还会在本机的数据库中记录软件安装的相关信息,以便未来可以进行升级、删除等操作。,如此一来,软件的管理不久变得简单了吗。 在Windows下安装软件是比较简单和统一的,其主要原因就是Windows并不是一个开源的操作系统,它的发行商只有一家,那就是微软。而Linux则不太一样,Linux的全称应该是GNU/Linux,所以说,GNU 项目(开源的各种程序)+ Linux (操作系统内核)= GNU/Linux 这一个完整的操作系统。 但是,Linux的发行商可不仅仅只有一家,不同的发行商所采用的软件管理机制可能是不同的,在Linux上至少就有两种常见的软件管理器,分别是RPM和Debain的DPKG。
如前所述,不论dpkg/rpm 这些机制或多或少都会有软体属性相依的问题,那该如何解决呢? 其实前面不是谈到过每个软体档案都有提供相依属性的检查吗? 那 么如果我们将相依属性的资料做成列表, 等到实际软体安装时,若发生有相依属性的软体状况时,例如安装A 需要先安装B 与C ,而安装B 则需要安装D 与E 时,那么当妳要安装A ,透过相依属性列表,管理机制自动去取得B, C, D, E 来同时安装, 不就解决了属性相依的问题吗? 目前,最新的Linux开发商都有提供这样的在线升级功能,在dpkg管理机制上提供了apt在线升级功能了rpm则以开发商的不同,有Red Hat系统的yum和SUSE系统的YaST Online Update(YOU)等。
有了在线升级功能,安装盘只需要在初次安装操作系统的时候使用,其他时候,只要有网络,我们就能够获取原本开发商所提供的任何软件了。 总结综上所述,在Linux下安装软件的方式大体是类似的,我们可以使用发行版提供的包管理工具来进行软件的安装,也可以通过直接编译源代码的方式来进行软件的安装。不过由于Linux是基于GNU项目的开源自由的操作系统,所以在Linux下安装软件最原始和通用的方式其实是通过编译软件源代码的方式进行安装。而通过包管理方式安装软件的操作方式在不同的Linux发行版中可能会有所不同。 但是并不是每一个人都会编译源代码,这需要比较多的前置知识,所以在接下来的文章中,我们先以CentOS为例介绍RPM软件管理机制及相关命令的使用,以Ubuntu为例介绍DPKG软件管理机制以及相关命令的使用。在最后,将会介绍一下如何在Linux上进行软件源代码的编译。 以上,就是我对Linux下软件管理方式的基本理解,感谢你耐心读完。本人深知技术水平和表达能力有限,如果文中有什么地方不合理或者你有其他不同的思考和看法,欢迎随时和我进行讨论(laomst@163.com)。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 12:26:13- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |