一、系统级软件(包管理器安装)
通过包管理器(如apt
、yum
、dnf
)安装的软件,遵循 FHS 规范,文件分散在多个目录:
/usr/bin
:用户级可执行文件(如ls
、git
)。/usr/sbin
:系统管理工具(如service
、iptables
)。/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/
,隔离性强。
选择建议
- 包管理器安装:优先使用,目录由系统自动管理(如
/usr/bin
)。 - 手动编译:用
/usr/local/
,避免污染系统文件。 - 第三方软件:
/opt/
或/usr/local/
,保持独立性。 - 用户专属:
~/.local/
,无需 root 权限。
示例场景:
- 安装系统工具(如
wget
):包管理器自动处理,无需关心目录。 - 部署自研服务(Java/Go):手动编译后放
/usr/local/myapp/
,配置文件在/usr/local/myapp/etc
。 - 安装 IDE(IntelliJ IDEA):解压到
/opt/idea-ultimate/
,创建启动脚本到/usr/local/bin/
。
通过遵循 FHS,可确保系统整洁、易于维护,避免权限冲突和升级问题。