1、Linux系统软件包分类

Linux系统下的软件包只有源码包二进制包,就这两种包。

Tips:

  • Windows系统中的软件和Linux系统的软件是不通用的。
  • Windows系统中的软件是经过编译后的.exe文件和.msi

2、源码包说明

(1)什么是源码包

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

Linux系统中最早的程序都是这样的源码包。

(2)源码包的优点

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

(3)源码包的缺点

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

3、二进制包说明

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

二进制包分类:

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

提示:

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

4、RPM包的优缺点

(1)RPM包的优点:

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

(2)RPM包的缺点:

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

(3)注意

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

依赖性分为:

  • 树形依赖 a —> b —> c

    a包依赖b包,b包依赖c包。所以需要先安装c包,在安装b包,最后在安装c包。
  • 环形依赖a —> b —> c —> a

    这种环形的依赖关系,按照上边树形依赖的解释,是无法安装的。但是这种依赖关系解决起来很简单,就是把abc包同时安装,就是用一条命令同时安装三个包就能解决。
  • 模块依赖(函数库依赖)

    最烦麻烦就是这种模块依赖关系,我们举一个例子,尝试安装以下文件:
[root@localhost Packages]# rpm -ivh mysql-connector-odbc-5.2.5-7.e17.x86_64.rpm
错误:依赖检测失败:
libodbc.so.2()(64bit)被mysql-connector-odbc-5.2.5-7.e17.x86_64需要
libodbcinst.so.2()(64bit)被mysql-connector-odbc-5.2.5-7.el7.x86_64需要 # 注意:
libodbc.so.2是一个文件的名字,并不是一个包名,你要把这个文件所在的包安装上,这个文件就存在了。

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

如下图:

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

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

4、RPM包的两种安装方法

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

注意:

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

5、总结

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

建议:

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

『学了就忘』Linux软件包管理 — 40、Linux系统软件包介绍的更多相关文章

  1. 『学了就忘』vim编辑器基础 — 94、vim编辑器介绍

    目录 1.vim编辑器简介 2.vim的工作模式 (1)命令模式 (2)输入模式 (3)最后行模式(末行模式) 1.vim编辑器简介 vim是一个全屏幕纯文本(绘个表格或者插个图片就不要想了)编辑器, ...

  2. 『学了就忘』Linux软件包管理 — 42、对RPM软件包的查询操作

    目录 1.查询RPM软件包是否安装 2.查询系统中所有已安装的RPM软件包 3.查询RPM软件包的详细信息 4.查询RPM软件包中的文件列表 5.查询系统文件属于哪个RPM包 6.查询RPM软件包所依 ...

  3. 『学了就忘』Linux软件包管理 — 47、Linux源码包的安装和卸载

    目录 1.源码包安装服务的注意事项 2.源码包安装服务的过程 3.源码包安装服务的删除 4.源码包安装服务的启动 5.源码包安装服务的关闭 1.源码包安装服务的注意事项 (1)安装服务选择哪种软件包? ...

  4. 『学了就忘』Linux基础 — 6、VMware虚拟机安装Linux系统(超详细)

    目录 1.打开VMware虚拟机软件 2.选择Linux系统的ISO安装镜像 3.开启虚拟机安装系统 (1)进入Linux系统安装界面 (2)硬件检测 (3)检测光盘 (4)欢迎界面 (5)选择语言 ...

  5. 『学了就忘』Linux基础 — 15、了解Linux系统的目录结构

    目录 1.一级目录说明 (1)一级目录列表 (2)/bin/和/sbin/目录说明 (3)/boot/目录说明 (4)/lib/和/lib64/目录说明 (5)/lost+found/目录说明 (6) ...

  6. 『学了就忘』Linux基础 — 16、Linux系统与Windows系统的不同

    目录 1.Linux严格区分大小写 2.Linux一切皆文件 3.Linux不靠扩展名区分文件类型 4.Linux中所有的存储设备都必须在挂载之后才能使用 5.Windows下的程序不能直接在Linu ...

  7. 『学了就忘』Linux服务管理 — 77、RPM包安装基于xinetd的服务的管理

    目录 1.基于xinetd服务的启动管理 (1)telnet服务安装 (2)telnet服务启动 2.基于xientd服务的自启动管理 现在Linux系统中基于xinetd的服务越来越少了,但Linu ...

  8. 『学了就忘』Linux基础 — 1、UNIX系统介绍

    目录 (一)UNIX系统介绍 1.UNIX系统发展历史 2.UNIX 主要发行版本 (二)GNU计划 1.GNU计划介绍 2.为何Stallman会发起这个GNU计划呢? 3.GNU的通用公共许可证: ...

  9. 『学了就忘』Linux基础 — 11、通过setup工具配置Linux系统IP地址

    目录 1.setup命令介绍 2.使用setup命令配置IP (1)执行setup命令 (2)进入图形化配置界面 (3)选择配置IP还是DNS (4)选择要配置的网卡 (5)进入IP地址配置页面 (6 ...

随机推荐

  1. 牛客挑战赛48E-速度即转发【带修莫队,分块】

    正题 题目链接:https://ac.nowcoder.com/acm/contest/11161/E 题目大意 给出\(n\)个数字的一个序列,\(m\)个操作. 给出\(l,r,k\),求一个最大 ...

  2. Redis之品鉴之旅(五)

    Redis事务 原子性:就是最小的单位 一致性:好多命令,要么全部执行成功,要么全部执行失败 隔离性:一个会话和另一个会话之间是互相隔离的 持久性:执行了就执行了,数据保存在硬盘上 典型例子:银行转账 ...

  3. Python日常Bug集

    1.TypeError: 'int' object is not iterable: 场景示例: data = 7 for i in data: print(i) # 原因:直接对int数据进行迭代造 ...

  4. spring-data-redis 上百万的 QPS 压力太大连接失败,我 TM 人傻了

    大家好,我们最近业务量暴涨,导致我最近一直 TM 人傻了.前几天晚上,发现由于业务压力激增,某个核心微服务新扩容起来的几个实例,在不同程度上,出现了 Redis 连接失败的异常: org.spring ...

  5. Sentry 监控 - 全栈开发人员的分布式跟踪 101 系列教程(第一部分)

    系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...

  6. NOIP 模拟六 考试总结

    T1辣鸡 T1就搞得这莫不愉快.. 大致题意是给你几个矩形,矩形覆盖的点都标记上,每个矩形无重复部分,求满足(x,y) (x+1,y+1)都标记过的点对数,范围1e9. 看起来很牛的样子,我确实也被1 ...

  7. 5.java内存模型详细解析

    一. java结构体系 Description of Java Conceptual Diagram(java结构) 我们经常说到JVM调优,JVM和JDK到底什么关系,大家知道么?这是java基础. ...

  8. 2021年1月-第02阶段-前端基础-HTML+CSS进阶-VS Code 软件

    软件安装 VSCode软件 能够安装 VS Code 能够熟练使用 VS Code 软件 能够安装 VS Code 最常用的插件 1. VS Code简介 1.1 VS Code 简介 Visual ...

  9. 半天撸一个简易版mybatis

    为什么需要持久层框架? 首先我们先看看使用原生jdbc存在的问题? public static void main(String[] args) { Connection connection = n ...

  10. SharkCTF2021 BabyGame

    web类题. 访问题给页面,页面里没啥信息.抓包,发现: 访问它,发现是一个游戏. F12之后看调试器里的js代码,发现: console.log("balabalabala"); ...