RPM包和源码包,选择哪种安装方式更好?
通过前面的学习我们知道,使用 RPM 包(或 SRPM 包)和源码包都可以实现软件的安装和升级。那么,如果要对软件进行升级,又或是安装新的软件,应该选择哪种安装方式呢?
综合以上因素,建议大家安装软件的首选方式是利用系统自带的 RPM 包安装。
对于安装此类特殊软件,例如并发编程常会用到的 MPICH/PVM 等并行运算函数库,建议使用源码包的安装方式。
这种情况下,可以使用源码包将新软件安装到 /usr/local/ 目录中,因为 Linux 系统允许同一软件的 2 个版本同时存在,且多数软件的不同版本之间不会相互干扰。唯一需要注意的是,你要确定所使用的命令作用于哪一版软件。
总的来说,使用 RPM 包安装和使用源码包安装软件各有优缺点,不过,如果有 RPM 包的话,还是建议优先选择 RPM 包安装软件,毕竟后期管理起来更方便。当然,如果软件的架构差异太大,或者无法解决软件依赖性的问题,与其花大把的时间和精力解决软件之间的依赖,不如直接使用源码包的方式安装软件。
注意,由于 SRPM 包本质上依然为 RPM 包,因此本节将 SRPM 包安装归属于 RPM 包安装方式。
软件安装方式的选择,涉及到的因素有很多,本节总结了以下几点建议。1) 优先选择系统自带的 RPM 包
通常情况下,开发商提供的软件都具有一段时间的维护期,比如说,RHEL 和 CentOS 每个版本都至少提供 5 年以上的升级期限,对我们的系统安全性来说,有极大的好处。借助 yum 自动升级,再加上系统持续维护软件(不断进行软件升级),可以保证我们的系统始终保持在最新的状态,当然系统安全性就会好很多。
不仅如此,使用 yum 安装的 RPM 软件包具有容易安装、卸载和升级的特点,而且还提供查询和验证的功能,安装时更有数字证书的保护,这些无疑会使软件管理变得更轻松!综合以上因素,建议大家安装软件的首选方式是利用系统自带的 RPM 包安装。
2) 选择软件官网提供的 RPM 包(或者存储此包不同版本的网址)
某些特殊软件,Linux(及其发行版)系统可能并不会提供其 RPM 软件包,例如 CentOS 不提供 NTFS 的相关模块。这种情况下,就需要我们自行去该软件官网上搜索,看是否提供有和自己 Linux 系统相匹配的 RPM 安装包。除此之外,如果官网上提供有可下载该软件不同版本的网址,可以直接将其作为 yum 源,从而实现软件的自动安装和升级。3) 用源码包安装特殊软件
对于有某些特殊用途的软件,开发商根本不提供 RPM 包,这里也不建议你自行制作 SRPM 包从而得到 RPM 包,毕竟多数初学者只使用一台电脑,如果你管理相同的 100 台电脑,则此方式才能凸显它的价值。对于安装此类特殊软件,例如并发编程常会用到的 MPICH/PVM 等并行运算函数库,建议使用源码包的安装方式。
4) 用源码包安装新版软件
有时候可能需要使用最新版的软件,而 Linux 系统中只提供旧版。例如 CentOS 服务更多的是企业,因此对很多软件的要求是稳而不是新。如果我们就是需要安装新软件,但又担心安装新软件后无法再回到旧版软件,该怎么办呢?这种情况下,可以使用源码包将新软件安装到 /usr/local/ 目录中,因为 Linux 系统允许同一软件的 2 个版本同时存在,且多数软件的不同版本之间不会相互干扰。唯一需要注意的是,你要确定所使用的命令作用于哪一版软件。
总的来说,使用 RPM 包安装和使用源码包安装软件各有优缺点,不过,如果有 RPM 包的话,还是建议优先选择 RPM 包安装软件,毕竟后期管理起来更方便。当然,如果软件的架构差异太大,或者无法解决软件依赖性的问题,与其花大把的时间和精力解决软件之间的依赖,不如直接使用源码包的方式安装软件。
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算