# 2020-10-07 #「Linux」- 使用源码编译安装 vs. 使用包管理器安装 vs. 使用二进制包安装

    科技2024-01-09  86

    在 Linux 中,软件的安装方法有三种:使用源码编译安装、使用包管理器安装、使用二进制包安装

    我们以服务运维为主,将简单讨论 snap、flatpak、appimage 等等用于桌面程序管理的工具

    以上各种安装方式的对比

    我们没有记录“缺点”,因为某种方式的优点则是其他方式所不具备的特性。并无所谓的缺点,只看是否满足需求。

    源码编译安装的优点

    定制软件包:我们可以根据自己的需要,使用不同的编译选项,添加自定义模块,有更多选择;

    性能优化:根据平台特性,使用不同的编译优化选项,以提高应用性能。但是这些的前提是以精湛的技术作为支撑,熟悉这些优化所带来的改变。

    安装最新版本:在各种 Linux 发行版中,应用的版本通常落后于官方版本。通过源码编译我们可以获取最新版本;

    问题修复:我们可以最快的速度修复 Bug(关注应用咨询,处理应用漏洞),而无需等待发行版团队发布新的应用包;

    使用包管理器安装的优点

    安装方便:在安装某个应用时,软件包管理器自动解决依赖关系(安装依赖包),无需我们再去安装其他依赖程序;

    便于管理:由发行版自带的应用程序包,除了应用外,还包含服务管理脚本(systemd、init)、日志轮转、符合 FHS 规范;

    附带文档:安装应用之后,还会在系统中安装对应的命令手册,方便查阅;

    提供源码:发行版同时还提供程序的源码包,以及编译程序时的参数,可以让我们进行审查

    稳定可靠:发行版虽然提供的软件版本比较旧,但是通常能够满足需求,是已知问题已修复的稳定版本。

    使用二进制包安装的优点

    无需编译:官方已经编译,我们无需再手动编译(通常按照文档安装依赖即可)

    官方优化:官方已经进行适度的调优和配置(属于通用设置)

    数据管理:通常应用相关的数据也在该应用的安装目录中,迁移可以作为整体进行处理

    注意事项,该方法特指使用官方提供的二进制压缩包(tar.gz),比如在 MySQL 官方站点下载的已编译的 MySQL 包。但是这不包含 rpm、deb 包,比如 Nginx 官方提供 rpm 包,则我们将其归类到 源码编译安装的优点 中。

    我们应该如何选择安装方式

    对于在服务运维过程中的软件安装

    我们首选「使用包管理器安装」,先查找 Linux 发行版的仓库是否已经包含,(如果没有)然后再去应用服务的官方站点查找是否提供 rpm、deb 应用包

    其次,我们会选择「使用二进制包安装」,我们会到官方站点下载 tar.gz 然后在本地解压运行。如果需要服务管理,可以自定义服务文件(systemd、init、supervisor)

    最后,无奈之下我们会选择使用「使用源码编译安装」二进制包,然后按照「使用二进制包安装」的方法处理。

    对于在本地工作环境、软件测试过程中

    我们依旧首选「使用包管理器安装」,毕竟维护方便、规范管理是我们首要考虑的;

    如果发行版或者官方没有 rpm deb 等等应用包,我们会选择「使用二进制包安装」方法;

    最后,无奈之下,我们会先考虑 snap appimage flatpak 等方式,然后我们再选择「使用源码编译安装」

    参考文献

    K4NZ / 使用源码编译安装 vs. 使用包管理器安装 vs. 使用二进制包安装Is it better to compile from source or to install from a .deb package?Source vs Package Managers on the jobWhat is the difference between rpm file and 'make' source code from installation perspectiveWhere should I put software I compile myself?Source vs. Package Managers: Installing Software in Linux Without HassleBinary vs. Source Packages: Which Should You Use?

    Processed: 0.010, SQL: 8