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

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

—— 2024-04-20 杭州

code review!

文章目录

  • Linux笔记之本地安装(用户安装)目录和系统安装目录
    • 1.区别
      • 解释说明:
      • 1. `/usr/local/include` 和 `/usr/include`
      • 2. `/usr/local/bin` 和 `/usr/bin`
      • 3. `/usr/local/lib` 和 `/usr/lib`
      • 总结
    • 2.使用场景
      • 示例1:安装软件
      • 示例2:查找库文件
      • 示例3:系统升级
      • 总结

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 目录则主要由系统包管理器管理,用于存放系统级的软件和库。这种分离确保了系统的稳定性和软件的可管理性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/3144.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

XiaodiSec day007 Learn Note 小迪安全学习笔记

XiaodiSec day007 Learn Note 小迪安全学习笔记 记录得比较凌乱,不尽详细 07 2023.12.31 cms识别 资产泄漏,资产即为网站的资源,了解到网站使用了那种cms对信息收集很有帮助 使用工具识别cms 识别cms后可以进行代码审计,或…

怎么保存微信视频号中的视频,赶紧看过来教你下载视频号里的视频!

视频内容已成为我们获取信息和娱乐的重要方式。微信视频号作为新兴的短视频平台,汇聚了丰富多样的创作,但有时我们希望将喜欢的视频保存到本地以便离线观看或分享给朋友。那么,视频号里的视频如何下载呢?别急,本文将详…

CCRC-DSO学员分享:数据安全官——导师与朋友的双重身份

我叫杜刚。在过去的几年里,我一直从事政企业务的工作,主要以网络安全业务为主导。尽管我已经有多年的政企与网络安全的工作经验,但我始终认为,不断学习和提升自己的专业能力是至关重要的。这就是我考取CCRC-DSO数据安全官证书的原…

面试题总结第二弹

一.Volatile为什么不保证原子性? 因为它实际上是三个操作组成的一个复合操作。 首先获取volatile变量的值,将该变量的值加1,将该volatile变量的值写会到对应的主存地址。而原子性指的是一个或多个操作在CPU执行的过程中不会被中断的特…

11 - 在k8s官方文档上,经常搜索不到内容的问题

使用k8s官方文档时,会出现首页可以正常打开,但是输入搜索关键字之后,搜索不到内容的情况,如下图: 这是由于相关搜索组件被墙的原因,处理方法如下: 谷歌浏览器: 火狐浏览器&#x…

大模型实战—通义千问大模型微调

通义千问大模型微调 在之前的文章中,我分享了一些使用大语言模型开发应用的方法,也介绍了几个开源大语言模型的部署方式, 有同学给我留言说想知道怎么训练自己的大语言模型,让它更贴合自己的业务场景。完整的大语言模型训练成本…

springBoot集成seata实现分布式事务

背景 日常开发离不开分布式系统,自然避免不了分布式事务问题,Seata 是一款阿里开源的主流分布式事务解决方案,但实际工作引入seata感觉有点重,本人之前在商业银行做开发也很少团队使用。今天趁此机会做个demo,玩一玩了…

关系运算符

介绍 关系运算符的结果都是 boolean 型&#xff0c; 也就是要么是 true&#xff0c; 要么是 false关系表达式 经常用在 if 结构的条件中或循环结构的条件中 运算符运算范例结果相等于89false!不等于8!9true<小于8<9true<小于等于8<9true>大于8>9false>大…

使用shared lib将各个构建工具集成到一起

共享库代码 package devopsdef Build(buildType, buildShell){def buildTools ["mvn": "MVN", "ant": "ANT", "gradle": "GRADLE"]println("当前buildType是${buildType}")buildHome tool buildTool…

使用itext7为pdf文档添加水印

iText7是一款功能强大的开源PDF处理库&#xff0c;用于创建、编辑和处理PDF文档。相比于iTextSharp&#xff0c;iText7具有更先进的功能和更好的性能。 添加水印是iText7的一个常见应用场景。水印可以用于保护文档的版权&#xff0c;标识文档的状态或来源等。使用iText7添加水…

Idea修改【Help->Edit Custom VM Options...】后,导致idea无法正常启动的解决方法

一、错误场景: 二、解决方法&#xff1a; 修改文件路径&#xff1a;C:\Users\tianjm&#xff08;写自己的用户名&#xff09;\AppData\Roaming\JetBrains\IdeaIC2024.1&#xff08;选自己安装的版本&#xff09;

用友GRP-U8 operOriztion SQL注入漏洞复现

前言 免责声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 一、产…

selenium 下载文件取消安全下载的方法

问题描述 我要从一个网站上下载文件&#xff0c;谷歌浏览器总是自动阻止下载&#xff0c;并询问我是否保留。 可是&#xff0c;我想要的是不要询问&#xff0c;默认下载即可。 运行环境 OS: macOSselenium: 4.19.0python: 3.10.11Chrome: 124.0.6367.62selenium chromedrive…

powerdesigner如何显示表备注、表字段备注

一、显示表的 comment 选择菜单 Tools->Display Preferences,选中 “Table”,勾选 “Commen” 二、显示列的 comment

OpenAI 和 Moderna 合作,推进 mRNA 医学

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、关于 Moderna Moderna 是 mRNA 医学领域的佼佼者&#xff0c;其通过不断推动 mRNA 技术的发展&#xff0c;正在重塑药物的制造方式&#xff0c;并深刻地改变我们治疗和预防疾病的方法。凭借在科学、…

Vue.js 3 应用开发与核心源码解析 阅读笔记

https://www.dedao.cn/ebook/reader?idV5R16yPmaYOMqGRAv82jkX4KDe175w7xRQ0rbx6pNgznl9VZPLJQyEBodb89mqoO 2022年出的书&#xff0c;针对Vue的版本是3.2.28&#xff0c;当前的版本是 3.4.21。 本书的一大特色是对Vue 3.x的核心源码&#xff08;响应式原理、双向绑定实现、虚…

tailwind免费模版

搜索合集 https://www.tailwindawesome.com/?pricefree&typetemplate Floatui: https://floatui.com/templates 适合做主页 3.Preline: https://preline.co/examples.html 4.hyperui&#xff1a;https://www.hyperui.dev/ 5.Merakiui: https://merakiui.com/template…

国外的代码签名证书公司可以用吗?

在今天的互联网时代&#xff0c;代码签名证书对于软件开发者和用户来说是至关重要的。代码签名证书是由数字签名技术实现的&#xff0c;用于验证软件开发者身份并保证软件的完整性和可信性。由于代码签名证书的重要性&#xff0c;国外的代码签名证书公司也成为了市场的一部分。…

JAVA学习-行为抽象和Lambda.收集器

在 Java 中&#xff0c;行为抽象和 Lambda 表达式通常用于函数式编程的范式。Java 8 引入了函数式接口和 Lambda 表达式&#xff0c;使得在处理集合数据时更加灵活和简洁。而收集器&#xff08;Collector&#xff09;则是 Java 8 Stream API 提供的一种机制&#xff0c;用于将 …

Python实现压缩和解压缩

压缩和解压缩是日常常用的操作&#xff0c;不管是windows上图形界面的操作&#xff0c;还是linux上用命令来进行压缩解压缩&#xff0c;总的而言都还是比较方便的。 但用代码来实现就没做过&#xff0c;近期也得实现代码压缩与解压缩操作&#xff0c;所以就抽时间来研究一下。…