底层视角

洞察事物的本质,启迪人生智慧

在 Linux 系统中,软件安装目录遵循文件系统层次结构标准(FHS),不同类型的软件会被安装到特定目录。以下是常见场景及对应目录

一、系统级软件(包管理器安装)

通过包管理器(如aptyumdnf)安装的软件,遵循 FHS 规范,文件分散在多个目录:

  • /usr/bin:用户级可执行文件(如lsgit)。
  • /usr/sbin:系统管理工具(如serviceiptables)。
  • /etc:配置文件(如/etc/apache2/etc/mysql)。
  • /var/lib:软件运行时数据(如数据库文件、缓存,如/var/lib/mysql)。
  • /usr/share:共享资源(文档、图标、本地化文件)。

示例:通过apt install nginx安装的 Nginx,二进制文件在/usr/sbin/nginx,配置文件在/etc/nginx,日志在/var/log/nginx

二、本地手动安装(源码编译)

手动编译(如./configure && make install)的软件,推荐安装到:

  • /usr/local/:存放本地编译的非系统级软件,结构类似/usr,包含:

    • bin/:可执行文件(如/usr/local/bin/python3.11)。
    • sbin/:管理工具(非必要)。
    • lib/:库文件。
    • etc/:自定义配置(如/usr/local/etc/php-fpm.conf)。
  • 优点:不与系统预装软件冲突,便于卸载(直接删除目录)。
  • 示例:编译安装 MySQL 时,通过-prefix=/usr/local/mysql指定路径。

三、第三方商业 / 大型软件

如 Oracle、Docker、JetBrains 工具等,通常安装到:

  • /opt/:独立目录,如/opt/oracle/opt/idea,方便整体迁移或删除。
  • /usr/local/:部分软件也会选择此处(如 Docker 默认安装到/usr/local/bin/docker)。

四、用户级软件(非 root 权限)

普通用户自行安装的软件(如 Python 包、Node.js 模块),推荐:

  • ~/.local/(或$HOME/local):

    • bin/:可执行文件(加入$PATH后直接调用)。
    • lib/:库文件。
  • 示例pip install --user requests会安装到~/.local/lib/python3.10/site-packages

五、特殊场景目录

  • /var/www/:Web 服务根目录(如 Nginx、Apache 默认站点)。
  • /srv/:服务数据目录(如/srv/git存放 Git 仓库)。
  • 沙盒化安装:Snap/Flatpak 软件安装在/snap//var/lib/flatpak/,隔离性强。

选择建议

  1. 包管理器安装:优先使用,目录由系统自动管理(如/usr/bin)。
  2. 手动编译:用/usr/local/,避免污染系统文件。
  3. 第三方软件/opt//usr/local/,保持独立性。
  4. 用户专属~/.local/,无需 root 权限。

示例场景

  • 安装系统工具(如wget):包管理器自动处理,无需关心目录。
  • 部署自研服务(Java/Go):手动编译后放/usr/local/myapp/,配置文件在/usr/local/myapp/etc
  • 安装 IDE(IntelliJ IDEA):解压到/opt/idea-ultimate/,创建启动脚本到/usr/local/bin/

通过遵循 FHS,可确保系统整洁、易于维护,避免权限冲突和升级问题。

本原创文章未经允许不得转载 | 当前页面:底层视角 » 在 Linux 系统中,软件安装目录遵循文件系统层次结构标准(FHS),不同类型的软件会被安装到特定目录。以下是常见场景及对应目录

评论