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.mfbz.cn/a/574160.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

好用的在线客服系统PHP源码(开源代码+终身使用+安装教程) 制作第一步

创建一个在线客服系统是一个涉及多个步骤的过程,包括前端界面设计、后端逻辑处理、数据库设计、用户认证、实时通信等多个方面。以下是使用PHP制作在线客服系统的第一步:需求分析和系统设计。演示:ym.fzapp.top 第一步:需求分析 确…

Linux:进程创建 进程终止

Linux&#xff1a;进程创建 & 进程终止 进程创建fork写时拷贝 进程终止退出码strerrorerrno 异常信号exit 进程创建 fork fork函数可以用于在程序内部创建子进程&#xff0c;其包含在头文件<unistd.h>中&#xff0c;直接调用fork()就可以创建子进程了。 示例代码&…

暴雨亮相CCBN2024 助力广电行业数智化转型

4月23日&#xff0c;第三十届中国国际广播电视信息网络展览会&#xff08;简称CCBN2024&#xff09;在北京开展&#xff0c;本次展览会由国家广播电视总局指导、广播电视科学研究院主办&#xff0c;作为国内广电视听领域首个综合性、专业化、引领性、国际化科技产业盛会&#x…

【树莓派】如何用电脑连接树莓派的远程桌面,灰屏解决

要使用VNC桌面连接到树莓派&#xff0c;你需要确保已经安装并启动了VNC服务器。以下是连接到树莓派的步骤&#xff1a; 在树莓派上启动VNC服务器&#xff1a; 打开终端或SSH连接到你的树莓派。输入以下命令以安装RealVNC的VNC服务器&#xff1a;sudo apt update sudo apt insta…

第十讲:C语言指针(4)

目录 1、回调函数是什么&#xff1f; 2、qsort使⽤举例 2.1、使⽤qsort函数排序整型数据 2.2、使⽤qsort排序结构数据 3、qsort函数的模拟实现 4、sizeof和strlen的对⽐ 4.1、sizeof 4.2、strlen 4.3、sizeof 和 strlen的对⽐ 5、数组和指针笔试题解析 5.1、⼀维数组…

java-反射

简介 获取class对象的API // 1. 通过类名.class Class<Student> clazz Student.class; System.out.println(clazz.getName());// 2. 通过Class.forName()方法 Class<?> clazz2 null; try {clazz2 Class.forName("com.reflect.Student");System.out.p…

B2B企业如何做好谷歌Google广告推广营销布局?

当今全球化的商业环境中&#xff0c;B2B企业要想在激烈的市场竞争中脱颖而出&#xff0c;拓展海外市场成为了必经之路。而谷歌Google广告&#xff0c;作为全球最大的在线广告平台&#xff0c;无疑是企业触达全球潜在客户的黄金钥匙。云衔科技通过专业服务助力企业轻松开户与高效…

【ai相关】人工智能的概念

一、人工智能的定义 人工智能&#xff0c;简称AI&#xff0c;是指由机器或计算机系统所展现出的类似于人类智能的行为和能力。其核心在于使机器能够像人类一样进行思考和行动&#xff0c;而这些思考和行动都是基于理性的决策和判断。 什么是机器学习&#xff1f; 机器学习的核…

【蓝桥杯省赛真题40】python摘苹果 中小学青少年组蓝桥杯比赛 算法思维python编程省赛真题解析

目录 python摘苹果 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python摘苹果 第十三届蓝桥杯青少年组python编程省赛真题 一、题目要求 &…

二维码如何分享照片?3步在线生成相册二维码

拍摄的照片怎样快速分享给其他人呢&#xff1f;传统的图片传输方式多通过微信、QQ、空间、微博等方式来实现分享&#xff0c;当需要分享给指定人员时或者需要分享的图片数量较多时&#xff0c;这些方式传递起来并不是特别的方便。想要实现大量图片的分享&#xff0c;选择生成相…

docker教程(详细)

0 背景 软件开发最大的麻烦事之一&#xff0c;就是环境配置。环境配置如此麻烦&#xff0c;换一台机器&#xff0c;就要重来一次&#xff0c;旷日费时。很多人想到&#xff0c;能不能从根本上解决问题&#xff0c;软件可以带环境安装&#xff1f;也就是说&#xff0c;安装的时…

【JAVA进阶篇教学】第五篇:Java多线程编程

博主打算从0-1讲解下java进阶篇教学&#xff0c;今天教学第五篇&#xff1a;Java多线程编程。 在Java编程中&#xff0c;使用多线程可以提高程序的并发性能&#xff0c;但是直接创建和管理线程可能会导致资源浪费和性能下降。Java提供了线程池来管理线程的生命周期和执行任务…

Activiti——将绘制的流程图存入act数据库并进行流程推进与状态流转

文章目录 前言流程图入库操作 RepositoryService项目结构数据库连接配置文件入库Java测试代码zip 方式进行流程的批量部署 流程启动 RuntimeService待处理任务查看 TaskService流程状态的扭转查询流程定义信息 RepositoryService查询正在执行的流程实例 RuntimeService已部署流…

Autosar AP的基本构成

1. 引言 Autosar AP的体系结构是怎样的呢&#xff1f;从整体的宏观的方向上划分&#xff0c;分为 1&#xff09;应用层&#xff0c;其中放置各种应用组件SWCs。2&#xff09;运行时基本功能软件族群&#xff0c;提供基本AutoSar基本软件中间件&#xff0c;比如经典的通信服务…

玩转nginx的配置文件3

1. limit_req_zone配置限流 limit_req_zone $binary_remote_addr zonemylimit:10m rate10r/s;upstream myweb {server 10.0.105.196:80 weight1 max_fails1 fail_timeout1;}server {listen 80;server_name localhost;location /login {limit_req zonemylimit;proxy_pass http:…

嵌入式UBoot如何跳转Kernel—uboot与linux交界分析

不知道你是否有这种感觉,就是学习了Uboot,学习了kernel,学习了安卓。但是有时候总感觉是各自孤立的,将三者连续不起来? • 不知道你是否在做启动方案的时候,在宏观上知道了整个启动链路流程,但是却在汪洋的代码中迷了路? 那么这篇文章必定对你有点用处。 如果没有,那请…

恭喜!喜提美国匹兹堡大学儿童医院访问学者邀请函

➡️【院校简介】 匹兹堡UPMC儿童医院该院是匹兹堡大学医学中心的一部分&#xff0c;也是大匹兹堡唯一一家专门护理26岁以下婴儿&#xff0c;儿童&#xff0c;青少年和年轻人的医院。该医院隶属于匹兹堡大学医学院&#xff0c;设有一个获得州级认证的一级儿科创伤中心&#xf…

Linux的自动化脚本:使用crul命令的从某个网站获取数据(从url获取数据),并将其写入一个文件中

目录 一、要求 二、思路 三、shell脚本实现演练 &#xff08;一&#xff09;脚本实现 &#xff08;二&#xff09;脚本代码说明 &#xff08;三&#xff09;脚本执行 &#xff08;四&#xff09;数据内容 一、要求 Linux的一个进程需要获取一个网站上的最新数据&#xf…

JavaScript:将input标签中的内容打印到控制台

使用浏览器进行开发时&#xff0c;按F12可以查看网页信息。 目标&#xff1a;实现将input标签中的内容&#xff0c;打印到控制台&#xff08;console&#xff09; HTML页面的关键代码实现&#xff1a; 登录功能&#xff1a; HTML代码&#xff1a; <div class"form-…

FastAPI从入门到实战(16)——请求参数汇总

FastAPI有各种各样的参数,包括: url参数(定义在url中的参数)param参数(使用url后面?xxxx)定义的参数body参数(在请求主体中携带的json参数)form参数(在请求主体中携带的web表单参数)cookie参数(在请求的cookie中携带的参数)file参数(客户端上传的文件) 1. url参数 from fas…
最新文章