• 很建议学习的Linux软件包管理— 软件包分类


    一、Linux系统软件包分类

    Linux系统下只有源码包、二进制包,就这两种包。
    Tips:
    windows系统中的软件和Linux系统的软件是不通用的。
    windows系统中的软件是经过编译后的.exe文件和.msi。

    二、源码包

    1、什么是源码包

    以前我们一直在说,Linux系统飞速发展的一个根本原因就是开源。所谓的源码包,就是直接给你一个开放的源程序。作者写的时候是什么样,写完就直接给你,这就是源码包。
    Linux系统中最早的程序都是这样的源码包。

    2、源码包的优点

    • 开源,如果有足够的能力,可以修改源代码(有利于学习,有利于推广)。
    • 可以自由选择所需的功能。
    • 软件是编译安装(编译:把abcd翻译成0101的过程),所以更加适合自己的系统,更加稳定也效率更高(之前有一个大概的估算,如果使用源码包安装软件,要比使用同版本同样性能的二进制包,软件的效能要高5个百分点)。
    • 卸载方便(直接把安装目录删除就可以了,基本上没有残余文件)。

    3、源码包的缺点

    • 安装过程步骤较多,尤其安装较大的软件集合时(如LAMP环境搭建),容易出现拼写错误。
    • 编译过程时间较长,安装比二进制安装时间长。
    • 因为是编译安装,编译安装过程容易报错,一旦报错新手很难解决。

    三、二进制包

    类似于windows系统的exe文件。二进制包安装较源码包安装更为方便,但是二进制包就不在是开源的了,因为二进制包中是已经编译好的文件。

    1、二进制包分类

    • DPKG包:是由Debian Linux所开发出来的包管理机制,通过DPKG包Debian Linux就可以进行软件包管理。主要应用在Debian和unbuntu中。(也经常叫deb包)
    • RPM包:是由Red Hat公司所开发的包管理系统。功能强大,安装、升级、查询和卸载都非常简单和方便。目前很多Linux都在使用这种包管理方式,包括Fedora、CentoS、SuSE等。我们将要学习RPM包管理系统。

    提示:
    DPKG包和RPM包,这两种包系统是不通用的。这也是两个系统最大的区别。
    但是Red Hat中的安装过程和Debian中软件的安装是一一对应的。如果以后用到Debian系统,查阅一下与之对应的命令即可。

    2、RPM包的优点:

    • 包管理系统操作简单,只通过几个命令就可以实现包的安装、升级、查询和卸载。(编辑过程基本不会报错了,因为厂商已经提前编译好了)
    • 安装速度比源码包安装快的多。

    3、RPM包的缺点:

    • 经过编译,不再可以看到源代码。
    • 功能选择不如源码包灵活。
    • 依赖性。有时我们会发现需要安装软件包a时需要先安装软件b和c,而安装b软件时需要安装软件d和e。这时需要先安装d和e,再安装b和c,最后才能安装a包。所以通过RPM包安装软件,如果软件有依赖性的话,软件则是有一定的安装顺序的。如果依赖性非常强的话,会非常的繁琐。(Linux系统中绝大多数软件包都会有依赖的软件包)

    注意:这里多强调一下上边的依赖性
    依赖性分为:

    • 树形依赖 a-->b--->c
      a包依赖b包,b包依赖c包。所以需要先安装c包,在安装b包,最后在安装c包。
    • 环形依赖a--->b--->c--->a
      这种环形的依赖关系,按照上边树形依赖的解释,是无法安装的。但是这种依赖关系解决起来很简单,就是把a、b、c包同时安装,就是用一条命令同时安装三个包就能解决。
    • 模块依赖(函数库依赖)
      最烦麻烦就是这种模块依赖关系,我们举一个例子,尝试安装以下文件:
    1. [root@localhost Packages]# rpm -ivh mysql-connector-odbc-5.2.5-7.e17.x86_64.rpm
    2. 错误:依赖检测失败:
    3. libodbc.so.2()(64bit)被mysql-connector-odbc-5.2.5-7.e17.x86_64需要
    4. libodbcinst.so.2()(64bit)被mysql-connector-odbc-5.2.5-7.el7.x86_64需要
    5. 注意:
    6. libodbc.so.2是一个文件的名字,并不是一个包名,你要把这个文件所在的包安装上,这个文件就存在了。

    发现报错,需要安装“libodbc.so.2”函数库文件,这时会发现在光盘中根本找不到这个文件。那是因为这个函数库没有单独成包,是包含在某一个软件包中的。而如果要知道该文件在哪个软件包中,需要查询网站http://www.rpmfind.net/
    (很方便),如图:

    点击搜索之后,会显示在不同的Linux版本中,安装哪个包,如下图

    这是个网站的原理,是通过查询一个RPM包依赖管理的数据库,来解决这个问题的。

    四、RPM包的两种安装方法

    • 手动(手工命令安装):就是通过rpm命令手动进行安装,自己解决包之间的依赖性。
    • yum在线安装:yum命令会自动连接到Red Hat的官方服务器上的包依赖数据库,不管何种依赖关系,需要的包都会自动的下载到本地,然后在自动进行安装。

    注意:如果是正版的Red Hat系列的Linux系统,会收费。但是CentOS里的yum是免费的。
    还有要注意一点Linux系统中,二进制包、rpm包、默认安装包都指的是二进制包。yum只是源码包和二进制包的在线安装方式。

    五、小结

    软件既有源码包版本,又有RPM包版本,如何选择?
    建议:

    • 源码包:如果服务是给大量客户端提供访问的,建议使用源码包,源码包效率更高(如搭建LAMP环境)。
    • RPM包:如果程序是给少量用户访问,或者本地使用的,建议RPM包,因为RPM管理方便。

    重点:配套学习资料和视频教学

    那么在这里我也精心准备了上述大纲的详细资料在下方链接如下

  • 相关阅读:
    将虚拟机VMware从C盘移动到E盘
    基于matlab实现的多普勒频移海底混响点散射模型程序
    Spring Could 核心组件知识点, 看这篇就够了!
    Linux C语言(10)
    Django ORM 单表操作
    创意电子学-小知识: 什么是电路?
    telnet 命令演示 以及 Dubbo常见错误解决方法
    h3c 网络设备清理所有配置
    Linux服务器上搭建JupyterNotebook教程
    RocketMQ复制策略和刷盘策略
  • 原文地址:https://blog.csdn.net/m0_59868866/article/details/126293890