Linux笔记之本地安装(用户安装)目录和系统安装目录

Linux笔记之本地安装(用户安装)目录和系统安装目录本文详细解释了 Linux 系统中用户自定义安装的目录结构 usr local 与系统安装目录 usr 的区别 包括头文件 可执行文件和库文件的存放位置

大家好,欢迎来到IT知识分享网。

Linux笔记之本地安装(用户安装)目录和系统安装目录

—— 2024-04-20

1.区别

在 Linux 系统中,目录结构是有特定用途和规范的。/usr/local 目录通常用于存放用户自己编译安装的软件,这样可以避免与系统默认的包管理器安装的软件冲突。下面是一个表格,比较了 /usr/local/include/usr/local/bin/usr/local/lib/usr/include/usr/bin/usr/lib 之间的区别:

目录 用途 来源 特点
/usr/local/include 存放用户自己编译安装的软件的头文件。 用户自行安装的软件。 与系统软件包管理器安装的软件隔离,避免冲突。
/usr/include 存放系统默认的软件包管理器(如 apt, yum)安装的软件的头文件。 系统包管理器安装的软件。 一般不手动修改,由系统管理。
/usr/local/bin 存放用户自己编译安装的可执行文件。 用户自行安装的软件。 通常在 PATH 环境变量中的优先级高于 /usr/bin
/usr/bin 存放系统默认的软件包管理器安装的可执行文件。 系统包管理器安装的软件。 包含大部分系统命令和程序,由系统管理。
/usr/local/lib 存放用户自己编译安装的软件的库文件。 用户自行安装的软件。 当系统查找动态库时,这个目录中的库通常优先级高于 /usr/lib
/usr/lib 存放系统默认的软件包管理器安装的库文件。 系统包管理器安装的软件。 包含大部分系统库文件,由系统管理。

解释说明:

  • 用途:描述了各个目录存放的内容类型,包括可执行文件、库文件和头文件。
  • 来源:指示了文件是由系统包管理器安装还是用户自行编译安装。
  • 特点:解释了这些目录在系统管理和日常使用中的特殊性。

这种目录结构的设计旨在使系统安装的软件和用户自行安装的软件互不干扰,同时便于管理和维护。用户安装的软件不会覆盖或破坏包管理器安装的软件,这是 Linux 系统稳定性和安全性的重要保障之一。

1. /usr/local/include/usr/include

  • /usr/include:这是系统级的包含目录(system include directory),存放由系统包管理器安装的头文件,这些文件通常是各种库和系统服务的接口定义。
  • /usr/local/include:这是本地包含目录(local include directory),用于存放用户自行安装或编译的软件的头文件。这些文件通常不由系统的包管理器维护。

2. /usr/local/bin/usr/bin

  • /usr/bin:这是系统级二进制目录(system binary directory),存放由系统包管理器安装的可执行文件。这些文件包括大多数用户和系统管理员会使用的标准命令和程序。
  • /usr/local/bin:这是本地二进制目录(local binary directory),用于存放用户自行安装或编译的软件的可执行文件。这些文件通常不由系统的包管理器维护。

3. /usr/local/lib/usr/lib

  • /usr/lib:这是系统级库目录(system library directory),存放由系统包管理器安装的库文件。这些库支持系统和应用程序的运行,包括动态链接库(.so 文件)和静态库(.a 文件)。
  • /usr/local/lib:这是本地库目录(local library directory),用于存放用户自行安装或编译的软件的库文件。这些库文件通常不由系统的包管理器维护。

总结

在 Linux 中,/usr 目录通常包含由系统包管理器管理的非本地系统软件,而 /usr/local 目录则主要用于存放本地安装的软件,即用户自行编译或手动安装的软件。这种区分有助于维护系统的稳定性和软件的组织性,确保系统升级时不会覆盖或影响到用户自定义的安装。

2.使用场景

为了更具体地解释 /usr/local/usr目录的区别,可以通过一些常见的使用场景来说明这些目录的实际应用。

示例1:安装软件

假设你想要安装最新版本的 Python,而系统的包管理器提供的版本比较旧。你可能会选择从源码编译安装。

  1. 编译安装到 /usr/local
    • 下载 Python 的最新源码。
    • 解压并进入目录。
    • 执行配置脚本(./configure),默认会配置安装到 /usr/local
    • 编译并安装(make && make install)。
    • 此操作将 Python 的可执行文件安装到 /usr/local/bin,库文件安装到 /usr/local/lib,头文件安装到 /usr/local/include
  2. 使用系统包管理器安装到 /usr
    • 使用例如 apt install python3 (假设是 Debian 或 Ubuntu 系统)。
    • 系统会将 Python 安装到 /usr/bin,库文件放到 /usr/lib,头文件放到 /usr/include

示例2:查找库文件

假设你正在开发一个 C++ 程序,需要链接到 libpng(一个处理 PNG 图片的库)。

  • 如果你从源码编译安装 libpng 到 /usr/local,则库文件将位于 /usr/local/lib
  • 当你的程序尝试链接到 libpng 时,链接器会先在 /usr/local/lib 查找。这就确保了使用的是你自己安装的最新版本的库,而不是系统包管理器提供的可能较旧的版本。

示例3:系统升级

当系统执行升级时,例如使用 apt upgrade 命令,系统会更新 /usr 目录下的软件包,包括 /usr/bin/usr/lib/usr/include 中的内容。但是,这个升级过程不会影响 /usr/local 目录下的内容。这意味着用户自行安装的软件不会被系统升级过程覆盖或删除。

总结

通过上述示例可以看出,/usr/local 主要用于用户自行安装的软件,保证其独立于系统的包管理,而 /usr 目录则主要由系统包管理器管理,用于存放系统级的软件和库。这种分离确保了系统的稳定性和软件的可管理性。

3.Linux系统PATH环境变量的默认值

在 Linux 系统中,默认的 PATH 环境变量值可能因发行版和版本的不同而略有差异,但一般会包含以下路径:

  1. /usr/local/sbin
  2. /usr/local/bin
  3. /usr/sbin
  4. /usr/bin
  5. /sbin
  6. /bin
  7. /usr/games
  8. /usr/local/games

这些路径的具体含义如下:

  • /usr/local/sbin: 系统管理员安装的本地系统管理程序
  • /usr/local/bin: 用户安装的本地可执行程序
  • /usr/sbin: 系统管理程序
  • /usr/bin: 用户可执行程序
  • /sbin: 必要的系统二进制文件,通常由 root 用户使用
  • /bin: 基本的用户二进制文件
  • /usr/games: 游戏程序
  • /usr/local/games: 本地安装的游戏程序

可以在终端中使用以下命令查看当前系统的 PATH 环境变量值:

echo $PATH 

实际的 PATH 值可能因系统配置的不同而有所不同。例如,一些系统可能会包含其他特定于发行版的路径,或者系统管理员可能会根据需要修改默认的 PATH 值。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/130255.html

(0)
上一篇 2025-08-18 16:00
下一篇 2025-08-18 16:10

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信