今日主题
Linux 软件安装、包管理器、环境变量 PATH
今日掌握
- yum / apt 的作用
- rpm / deb 的区别
- which / whereis / find 的区别
- PATH 的含义
- 软件安装的本质
核心理解
Linux 软件安装,本质是把程序文件安装到系统中,并保证依赖齐全、路径可被系统识别。
PATH 是系统寻找命令的搜索路径。
which 用来查命令位置;whereis 用来查软件相关路径;find 用来全盘搜索文件。
今日命令
which python3
whereis python3
echo $PATH
find /etc -name passwd
rpm -qa | grep nginx
面试表达
在 Linux 中,软件安装本质是把可执行程序放到系统可识别的目录中,并配置依赖和环境变量。常见包管理工具有 yum / apt,which 可以查看命令路径,PATH 用来定义系统查找命令的搜索路径。
Linux 软件安装、包管理、环境变量(系统理解)
这是你以后:
安装Docker
安装MySQL
安装Redis
安装Java
安装Go
安装K8s工具
部署各种服务
的基础中的基础。
今天的目标
学完之后,你要能理解:
1、Linux 软件为什么能安装
2、yum / apt 是什么
3、rpm / deb 是什么
4、源码安装是什么
5、环境变量 PATH 是什么
6、which / whereis / find 的区别
7、软件安装失败怎么排查
今天最重要的一句话:
Linux 中安装软件,本质是把可执行文件放到系统能找到的位置,并配置好依赖。
第一部分:什么是软件安装
我们先理解本质。
比如你输入:
ls
为什么 Linux 能认识?
因为:
系统知道:
/bin/ls
这个程序在哪里。
再比如:
python3
系统知道:
/usr/bin/python3
在哪里。
所以安装软件,本质就是:
把程序放到系统中
+
系统能找到它
+
依赖齐全
举例:
安装 Docker 后:
docker ps
能执行。
为什么?
因为系统知道:
/usr/bin/docker
这个命令在哪里。
这就是底层逻辑。
第二部分:包管理器是什么
这块是高频面试题。
为什么需要包管理器
以前装软件:
下载源码
编译
解决依赖
手动安装
配置路径
非常麻烦。
后来出现:
包管理器
类似:
应用商店。
你输入:
yum install nginx
系统自动:
下载
解决依赖
安装
配置
非常方便。
常见包管理器
RedHat 系
比如:
CentOS CentOS
Rocky Linux Rocky Linux
使用:
yum
dnf
rpm
Debian 系
比如:
Ubuntu Ubuntu
Debian Debian
使用:
apt
dpkg
一句话:
rpm = 安装包格式
yum/dnf = 高级管理工具
deb = 安装包格式
apt = 高级管理工具
第三部分:yum 的核心命令
(如果你是 Rocky Linux / CentOS)
更新软件源
sudo yum makecache
搜索软件
yum search nginx
安装
sudo yum install nginx -y
-y:
自动 yes。
查看是否安装
rpm -qa | grep nginx
解释:
rpm -qa = 查看所有包
grep nginx = 筛选
卸载
sudo yum remove nginx
查看软件信息
yum info nginx
查看安装了哪些文件
rpm -ql nginx
这很重要。
比如会看到:
/etc/nginx/nginx.conf
/usr/sbin/nginx
/var/log/nginx
这能帮你建立目录感。
第四部分:which / whereis / find
这是高频知识点。
which
查看命令路径:
which python3
输出:
/usr/bin/python3
查看 Docker:
which docker
面试回答
which 用来查找命令执行路径。
whereis
更全面:
whereis nginx
可能输出:
/usr/sbin/nginx
/etc/nginx
/usr/share/nginx
包括:
程序
配置
文档
find
全盘找:
find / -name nginx.conf
会慢一点。
但很强。
总结:
which = 查命令
whereis = 查软件相关路径
find = 全盘找文件
第五部分:环境变量 PATH(非常关键)
敲:
echo $PATH
可能输出:
/usr/local/bin:/usr/bin:/bin:/usr/sbin
什么意思?
就是:
系统会按顺序去这些目录找命令。
比如你敲:
python3
系统会找:
/usr/local/bin/python3
/usr/bin/python3
/bin/python3
找到就执行。
所以:
PATH = 系统找命令的搜索路径。
自己加 PATH
例如:
export PATH=$PATH:/opt/mybin
以后:
/opt/mybin
里的命令也能直接执行。
这个在:
Java
Go
Maven
kubectl
helm
terraform
安装时经常用。
第六部分:Day9 实操
今天必须敲:
which ls
which python3
whereis python3
echo $PATH
find /etc -name passwd
rpm -qa | head
如果是 Ubuntu:
dpkg -l | head
如果装了 nginx:
rpm -ql nginx
which nginx
whereis nginx
find / -name nginx.conf
第七部分:大厂面试题
1)yum 和 rpm 的区别?
答:
rpm 是底层安装包工具;yum 在 rpm 之上,能自动解决依赖。
2)PATH 是什么?
答:
PATH 是系统查找可执行命令的环境变量路径。
3)which 和 whereis 区别?
答:
which 查执行路径
whereis 查相关目录
4)为什么命令找不到?
原因可能:
没安装
PATH没配置
权限不足
命令名错误