IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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下软件管理方式》源站链接,阅读体验更佳~
操作系统只是一个硬件的大管家,为了满足不同的需求,我们就需要在操作系统上安装各种各样的软件,比如如果我们想在自己的Linux服务器上运行Web服务器(WWW Server)这项服务,那么我们应该怎么做呢?当然首先需要做的就是在我们的Linux服务器上面安装Web服务器软件了。如果我们的服务器上没有安装Web服务器软件,当然也就无法启动WWW 服务了。所以,学会如何安装软件是一个非常重要的课题。

回想一下在Windows系统下我们是如何安装软件的,对于Windows系统而言,大部分的软件我们都可以从软件的官方页面下载软件的安装器,然后运行安装器软件,默认情况下一直点击下一步,就可以完成软件的安装了。对于一些开源的Windows软件,我们也可以直接获取软件的源代码,然后在自己的机器上进行编译。当然也有一些所谓的“绿色”软件解压之后立马就可以开始使用,不用进行任何的安装操作。

但是,在Windows操作系统下相对简单的软件安装,在Linux下却变得没有那么简单。在早期的时候,我们通常都是通过直接获取软件的源代码,然后在自己的Linux环境中进行编译的方式来进行软件的安装。

我们获取一个软件源代码的方式通常有两种,一种是直接使用版本管理工具比如Git来获取软件的源代码,另一种就是我们常说的Tarball了。

Tarball软件管理方式

由于自由软件的蓬勃发展,加上大型Unix-like主机的强大性能,很多软件开发者将它们的软件使用Tarball进行发布。

所谓的Tarball文件,其实就是将软件的所有源代码文件以tar打包,然后再以压缩技术来压缩,通常最常见的就是用gzip来压缩。因为利用了tar与gzip的功能,所以Tarball文件的扩展名一般就是*.tar.gz或者是简写为*.tgz。不过近来由于bzip2和xz压缩算法的压缩效率由于gzip,所以Tarball渐渐以bzip2和xz压缩算法来替换gzip,因此文件名也有可能是*.tar.bz2或者是*.tar.xz之类的。

使用Tarball的好处是显而易见的,因为使用了打包和压缩技术,使得源代码的下载更加简单,可以节省网络带宽。一个Tarball之中通常会包含以下内容:

  • 源代码文件
  • 检测程序文件(可能是configure或者是config等文件)
  • 本软件的简易说明和安装说明(INSTALL或README)

通常我们需要特别注意的就是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 这一个完整的操作系统。

GUN/Linux

但是,Linux的发行商可不仅仅只有一家,不同的发行商所采用的软件管理机制可能是不同的,在Linux上至少就有两种常见的软件管理器,分别是RPM和Debain的DPKG。

  • RPM

    这个机制最早是由Red Hat 这家公司开发出来的,后来实在很好用,因此很多distributions 就使用这个机制来作为软体安装的管理方式。 包括Fedora, CentOS, SuSE 等等知名的开发商都是用这咚咚。

  • DPKG

    这个机制最早是由Debian Linux 社群所开发出来的,透过dpkg 的机制, Debian 提供的软体就能够简单的安装起来,同时还能提供安装后的软体资讯,实在非常不错。 只要是衍生于Debian 的其他Linux distributions 大多使用dpkg 这个机制来管理软体的, 包括B2D, Ubuntu 等等。

如前所述,不论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)等。

发行版代表软件管理机制使用命令在线升级功能(命令)
Red Hat、Fedora、CentOSRPMrpm、rpmbuildYUM(yum)
Debain、UbuntuDPKGdpkgAPT(apt-get)

有了在线升级功能,安装盘只需要在初次安装操作系统的时候使用,其他时候,只要有网络,我们就能够获取原本开发商所提供的任何软件了。

总结

综上所述,在Linux下安装软件的方式大体是类似的,我们可以使用发行版提供的包管理工具来进行软件的安装,也可以通过直接编译源代码的方式来进行软件的安装。不过由于Linux是基于GNU项目的开源自由的操作系统,所以在Linux下安装软件最原始和通用的方式其实是通过编译软件源代码的方式进行安装。而通过包管理方式安装软件的操作方式在不同的Linux发行版中可能会有所不同。

但是并不是每一个人都会编译源代码,这需要比较多的前置知识,所以在接下来的文章中,我们先以CentOS为例介绍RPM软件管理机制及相关命令的使用,以Ubuntu为例介绍DPKG软件管理机制以及相关命令的使用。在最后,将会介绍一下如何在Linux上进行软件源代码的编译。

以上,就是我对Linux下软件管理方式的基本理解,感谢你耐心读完。本人深知技术水平和表达能力有限,如果文中有什么地方不合理或者你有其他不同的思考和看法,欢迎随时和我进行讨论(laomst@163.com)。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-07-03 11:10:24  更:2022-07-03 11:13:39 
 
开发: 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-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码