Linux 环境变量与软件安装
环境变量
环境变量是 Linux 系统中定义的动态参数,用于指定系统或应用程序的运行路径、配置信息等,其中 PATH 变量 是最核心的环境变量之一,决定了系统在哪些目录下查找可执行指令。
环境变量 PATH 的作用
以 ls
指令为例,通过 which
命令可查看其绝对路径:
[root@localhost ~]# which ls
alias ls='ls --color=auto' # alias 表示 ls 是别名,实际指向带颜色显示的 ls
/usr/bin/ls # ls 指令的真实绝对路径
- 我们执行
ls
时无需输入完整路径/usr/bin/ls
,是因为/usr/bin
目录已包含在PATH
环境变量中。 - 输入
echo $PATH
可打印当前PATH
配置(echo
用于打印内容,$
表示引用变量):[root@localhost ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/Java/jdk-25/bin:/root/bin
环境变量失效与修复案例
若将 ls
指令移动到非 PATH
目录(如 /root
),执行 ls
会提示“找不到文件”:
# 移动 ls 到 /root 目录
[root@localhost ~]# mv /usr/bin/ls /root/
# 执行 ls 指令,系统在 PATH 目录中找不到 ls,报错
[root@localhost ~]# ls
-bash: /usr/bin/ls: 没有那个文件或目录
修复方法
- 方法一:临时添加目录到 PATH
执行以下命令将/root
目录加入PATH
(仅当前终端生效,重启后失效):[root@localhost ~]# PATH=$PATH:/root [root@localhost ~]# ls # 此时可正常执行 ls anaconda-ks.cfg
- 方法二:使用绝对路径执行
直接指定ls
的新绝对路径/root/ls
:[root@localhost ~]# /root/ls anaconda-ks.cfg
恢复初始状态
将 ls
移回原目录 /usr/bin
,恢复正常使用:
[root@localhost ~]# mv /root/ls /usr/bin/
[root@localhost ~]# ls
anaconda-ks.cfg
软件安装方式
Linux 软件安装主要有三种方式:RPM 包安装(预编译包,快捷但依赖复杂)、YUM 安装(自动解决依赖,推荐)、源码安装(自定义程度高,需编译),以下分别详细说明。
RPM 包安装
RPM(Red-Hat Package Manager)是基于数据库的包管理工具,适用于 RedHat、CentOS 等系统。RPM 包是预先编译好的文件,安装速度快,但需手动处理依赖关系。
RPM 包的获取与目录
若系统光驱中插入了 CentOS 安装光盘,可通过以下命令挂载光驱并查看 RPM 包:
# 将光驱挂载到 /mnt 目录(只读模式)
[root@localhost ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载# 查看挂载后的目录,RPM 包存放在 /mnt/Packages 中
[root@localhost ~]# ls /mnt
CentOS_BuildTag EFI EULA GPL images isolinux LiveOS Packages repodata RPM-GPG-KEY-CentOS-7 RPM-GPG-KEY-CentOS-Testing-7 TRANS.TBL# 查看前 10 个 RPM 包(以 .rpm 结尾)
[root@localhost ~]# ls /mnt/Packages/ | head
acl-2.2.51-14.el7.x86_64.rpm
aic94xx-firmware-30-6.el7.noarch.rpm
aide-0.15.1-13.el7.x86_64.rpm
alsa-firmware-1.0.28-2.el7.noarch.rpm
alsa-lib-1.1.6-2.el7.x86_64.rpm
alsa-tools-firmware-1.1.0-1.el7.x86_64.rpm
atk-2.28.1-1.el7.x86_64.rpm
audit-2.8.4-4.el7.x86_64.rpm
audit-libs-2.8.4-4.el7.x86_64.rpm
authconfig-6.2.8-30.el7.x86_64.rpm
RPM 包名称解析
以 abrt-cli-2.0.8-15.el6.centos.i686.rpm
为例,名称分为 4 部分:
- 包名:
abrt-cli
(软件核心名称) - 版本号:
2.0.8
(软件版本) - 发布版本:
15.el6.centos
(适配的系统版本,如 CentOS 6) - 运行平台:
i686
(32 位 CPU,常见平台还有x86_64
(64 位)、noarch
(无硬件限制))
RPM 常用命令
功能 | 命令 | 选项说明 |
---|---|---|
安装 RPM 包 | rpm -ivh 包路径 |
-i :安装;-v :显示详细过程;-h :显示安装进度(# 号) |
强制安装 | rpm -ivh --force 包路径 |
--force :覆盖已有文件,强制安装 |
忽略依赖安装 | rpm -ivh --nodeps 包路径 |
--nodeps :忽略依赖关系(不推荐,可能导致软件无法运行) |
升级 RPM 包 | rpm -Uvh 包路径 |
-U :升级(若未安装则自动安装) |
卸载 RPM 包 | rpm -e 包名 |
-e :卸载(需输入“包名”,而非包文件路径) |
查询单个包是否安装 | rpm -q 包名 |
-q :查询(包名无需带版本和平台信息) |
查询所有已安装 RPM 包 | rpm -qa |
-a :查询所有 |
查看包详细信息 | rpm -qi 包名 |
-i :显示包的版本、发布时间、作者等信息 |
列出包安装的文件 | rpm -ql 包名 |
-l :列出包安装的所有文件路径 |
查找文件所属的 RPM 包 | rpm -qf 文件绝对路径 |
-f :根据文件路径反向查询所属包 |
实例演示:RPM 包安装与卸载
以 libjpeg-turbo-devel
包为例:
# 1. 安装 RPM 包(指定包的绝对路径)
[root@localhost ~]# rpm -ivh /mnt/Packages/libjpeg-turbo-devel-1.2.1-1.el6.i686.rpm
Preparing... ########################################### [100%]1:libjpeg-turbo-devel ########################################### [100%]# 2. 查询包是否安装(仅输入包名“libjpeg-turbo-devel”)
[root@localhost ~]# rpm -q libjpeg-turbo-devel
libjpeg-turbo-devel-1.2.1-1.el6.i686# 3. 查询所有已安装的 RPM 包(仅显示前 10 个)
[root@localhost ~]# rpm -qa | head
acl-2.2.51-14.el7.x86_64
aic94xx-firmware-30-6.el7.noarch
aide-0.15.1-13.el7.x86_64
alsa-firmware-1.0.28-2.el7.noarch
alsa-lib-1.1.6-2.el7.x86_64
alsa-tools-firmware-1.1.0-1.el7.x86_64
atk-2.28.1-1.el7.x86_64
audit-2.8.4-4.el7.x86_64
audit-libs-2.8.4-4.el7.x86_64
authconfig-6.2.8-30.el7.x86_64# 4. 查看包的详细信息
[root@localhost ~]# rpm -qi libjpeg-turbo-devel
Name : libjpeg-turbo-devel
Version : 1.2.1
Release : 1.el6
Architecture: i686
Install Date: 2025-10-16 10:00:00
Group : Development/Libraries
Size : 123456
License : GPLv2
Signature : RSA/SHA1, 2023-01-01 00:00:00, Key ID 1234567890abcdef
Source RPM : libjpeg-turbo-1.2.1-1.el6.src.rpm
Build Date : 2023-01-01 00:00:00
Build Host : build.example.com
Relocations : (not relocatable)
URL : http://libjpeg-turbo.virtualgl.org/
Summary : Development files for libjpeg-turbo
Description :
The libjpeg-turbo-devel package contains libraries and header files for
developing applications that use libjpeg-turbo.# 5. 列出包安装的文件
[root@localhost ~]# rpm -ql libjpeg-turbo-devel
/usr/include/jconfig.h
/usr/include/jerror.h
/usr/include/jmorecfg.h
/usr/include/jpeglib.h
/usr/lib/libjpeg.so
# ...(省略其他文件)# 6. 反向查询文件所属包(以 /usr/lib/libjpeg.so 为例)
[root@localhost ~]# rpm -qf /usr/lib/libjpeg.so
libjpeg-turbo-devel-1.2.1-1.el6.i686# 7. 卸载 RPM 包(输入包名,无需路径)
[root@localhost ~]# rpm -e libjpeg-turbo-devel
# 验证卸载结果(提示“未安装”)
[root@localhost ~]# rpm -q libjpeg-turbo-devel
package libjpeg-turbo-devel is not installed
YUM 安装
YUM(Yellowdog Updater, Modified)是基于 RPM 的包管理工具,自动解决依赖关系,并支持从远程仓库下载安装包,是日常使用中最便捷的安装方式(需联网)。
前置配置:国内 YUM 源(阿里源)
默认 YUM 源为国外服务器,下载速度慢,推荐替换为国内阿里源,步骤如下:
方式一:命令行快速配置
# 1. 备份原 YUM 源配置文件
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup# 2. 下载阿里源的 CentOS 7 配置文件
curl -sSO https://mirrors.aliyun.com/repo/Centos-7.repo# 3. 将配置文件移动到 YUM 源目录
mv Centos-7.repo /etc/yum.repos.d/CentOS-Base.repo# 4. 清理旧缓存并生成新缓存
yum clean all && yum makecache
方式二:官网手动配置
访问阿里源官方指南:https://help.aliyun.com/zh/ecs/user-guide/manage-and-use-linux-software-repositories,根据页面提示完成 CentOS 7 系统的 YUM 源配置。
YUM 常用命令
功能 | 命令 | 选项说明 |
---|---|---|
搜索包 | yum search 关键词 |
根据关键词搜索相关包(如 yum search gcc 搜索 GCC 编译器) |
安装包 | yum install [-y] 包名 |
-y :自动确认安装(无需手动输入 y ) |
卸载包 | yum remove [-y] 包名 |
-y :自动确认卸载(谨慎使用,避免删除系统依赖包) |
升级包 | yum update [-y] 包名 |
升级指定包;若不指定包名,升级系统所有可更新包 |
查看包信息 | yum info 包名 |
显示包的版本、大小、依赖等信息 |
列出已安装包 | yum list installed |
查看系统中所有通过 YUM 安装的包 |
实例演示:YUM 安装与搜索
以安装 gcc
(C 语言编译器)为例:
# 1. 搜索 gcc 相关包
[root@localhost ~]# yum search gcc
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile* base: mirrors.aliyun.com* extras: mirrors.aliyun.com* updates: mirrors.aliyun.com
N/S matched: gcc
gcc-c++.x86_64 : C++ support for GCC
gcc-gnat.x86_64 : Ada 95 support for GCC
gcc-objc.x86_64 : Objective-C support for GCC
gcc-objc++.x86_64 : Objective-C++ support for GCC
gcc-plugin-devel.x86_64 : Support for compiling GCC plugins
libgcc.i686 : GCC version 4.8 shared support library
libgcc.x86_64 : GCC version 4.8 shared support library
# ...(省略其他搜索结果)
gcc.x86_64 : Various compilers (C, C++, Objective-C, Java, ...) # 核心 GCC 包# 2. 安装 gcc(加 -y 自动确认)
[root@localhost ~]# yum install -y gcc
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile* base: mirrors.aliyun.com* extras: mirrors.aliyun.com* updates: mirrors.aliyun.com
正在解决依赖关系
--> 正在检查事务
---> 软件包 gcc.x86_64.0.4.8.5-44.el7 将被 安装
--> 正在处理依赖关系 gcc-4.8.5-44.el7.x86_64 需要的 libgomp = 4.8.5-44.el7
# ...(YUM 自动下载并安装所有依赖包)
已安装:gcc.x86_64 0:4.8.5-44.el7作为依赖被安装:cpp.x86_64 0:4.8.5-44.el7 glibc-devel.x86_64 0:2.17-326.el7_9glibc-headers.x86_64 0:2.17-326.el7_9 kernel-headers.x86_64 0:3.10.0-1160.el7libgomp.x86_64 0:4.8.5-44.el7完毕!
# 3. 验证安装结果(查看 gcc 版本)
[root@localhost ~]# gcc --version
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44.el7)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
源码安装
源码安装是将软件源代码编译为二进制可执行文件的过程,自定义程度高(可按需启用/禁用功能),但步骤相对复杂,适用于需要定制化配置的场景(如 Nginx、Tomcat 等)。
源码安装的核心步骤
源码安装通常遵循“配置 → 编译 → 安装”三步流程,前提是系统已安装 gcc
编译器(可通过 yum install -y gcc
安装):
- ./configure(配置)
- 自定义软件功能(如启用 SSL 模块),通过
./configure --help
查看所有可配置选项。 - 自动检测系统环境是否满足编译依赖(如是否缺少库文件),检测通过后生成
Makefile
(编译规则文件)。
- 自定义软件功能(如启用 SSL 模块),通过
- make(编译)
- 根据
Makefile
中的规则,调用gcc
编译器将源代码编译为二进制文件。
- 根据
- make install(安装)
- 将编译后的二进制文件、配置文件等复制到指定目录(通常为
/usr/local/软件名
),完成安装。
- 将编译后的二进制文件、配置文件等复制到指定目录(通常为
实例 1:源码安装 Nginx(Web 服务器)
Nginx 是高性能的 Web 服务器,源码安装可自定义启用 HTTPS 等模块。
安装 Nginx 依赖环境
# 安装 GCC 编译器(若未安装)
yum install -y gcc-c++
# 安装 PCRE 库(支持正则表达式)
yum install -y pcre pcre-devel
# 安装 zlib 库(支持数据压缩)
yum install -y zlib zlib-devel
# 安装 OpenSSL 库(支持 HTTPS)
yum install -y openssl openssl-devel
下载并解压 Nginx 源码包
官网链接:https://nginx.org/
使用 wget 命令下载,若没有安装 wget,执行 yum install wget.x86_64
,然后在官网找一个版本,右键就能复制安装包链接。
# 1. 进入 /usr/local 目录(推荐存放软件源码)
cd /usr/local
# 2. 创建 nginx 目录(用于存放源码和安装文件,当然也可以自己选一个目录,这里只是方便管理)
mkdir nginx
cd nginx
# 3. 下载 Nginx 源码包(以 1.28.0 版本为例,从官网复制链接)
wget https://nginx.org/download/nginx-1.28.0.tar.gz
# 4. 解压源码包
tar -zxvf nginx-1.28.0.tar.gz
当然也可以在官网下载 tar.gz 安装包,然后通过远程工具拉取到 linux 中,这里就不做详解。
配置、编译与安装
# 1. 进入解压后的源码目录
cd nginx-1.28.0
# 2. 配置(启用 HTTPS 模块,指定安装目录为 /usr/local/nginx)
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
# 3. 编译(生成二进制文件)
make
# 4. 安装(将文件复制到指定目录)
make install
启动 Nginx 并验证
# 1. 进入 Nginx 二进制文件目录(sbin 目录存放可执行文件)
cd /usr/local/nginx/sbin
# 2. 启动 Nginx
./nginx
可以输入 netstat -ntlp
查看nginx 是否启动成功
浏览器访问 Nginx
-
打开浏览器,输入虚拟机的 IP 地址(如
192.168.10.158
,Nginx 默认端口为 80,即htpp://192.168.10.158:80)。也可以通过netstat -ntlp
查看 nginx 端口。
-
若无法访问,需检查防火墙:
检查防火墙是否开启systemctl status firewalld
若出现了 running 说明开启了防火墙,就需要开放端口号,如果防火墙处于关闭状态(dead状态)就可以不用进行下面的配置 -
开放防火墙 80 端口:
# 开放 80 端口(永久生效) firewall-cmd --zone=public --add-port=80/tcp --permanent # 重新加载防火墙规则(立即生效) firewall-cmd --reload # 查看已开放端口(确认 80/tcp 存在) firewall-cmd --list-port
-
再次访问 IP 地址,显示“Welcome to nginx!”即表示成功。
步骤 6:Nginx 常用操作
# 关闭 Nginx
./nginx -s stop
# 重启 Nginx
./nginx -s reload
# 查看 Nginx 版本
./nginx -v
实例 2:源码安装 JDK(Java 开发环境)
JDK(Java Development Kit)是 Java 程序的运行和开发环境,需手动配置环境变量。
下载并解压 JDK
JDK 官网链接:https://www.oracle.com/
# 1. 进入 /usr/local 目录,创建 Java 目录
cd /usr/local
mkdir Java
cd Java
# 上面这三条指令可以自行定义,这样是为了方便管理,然后在官网找到一个 jdk 版本,复制对应的链接(同样也可以使用远程工具拉取到 linux 中)。
# 2. 下载 JDK 源码包(以 JDK 25 为例,从 Oracle 官网复制链接)
wget https://download.oracle.com/java/25/latest/jdk-25_linux-x64_bin.tar.gz
# 3. 解压 JDK 包
tar -zxvf jdk-25_linux-x64_bin.tar.gz
配置 JDK 环境变量
# 1. 编辑系统环境变量配置文件 /etc/profile
vim /etc/profile
# 2. 在文件末尾添加以下内容(注意 JAVA_HOME 路径需与实际解压路径一致)
export JAVA_HOME=/usr/local/Java/jdk-25
export PATH=$PATH:$JAVA_HOME/bin
# 3. 保存并退出(按 ESC,输入 :wq 回车)
# 4. 重新加载 profile 文件,使配置生效
source /etc/profile
验证 JDK 安装
# 查看 Java 版本
java --version
# 输出如下表示成功:
java 25 2025-09-16 LTS
Java(TM) SE Runtime Environment (build 25+37-LTS-3491)
Java HotSpot(TM) 64-Bit Server VM (build 25+37-LTS-3491, mixed mode, sharing)
实例 3:源码安装 Tomcat(Java Web 服务器)
Tomcat 是运行 Java Web 应用的服务器,依赖 JDK 环境(需先安装 JDK),tomcat 的下载包链接:https://tomcat.apache.org/ ,可以在里面找到一个需要的版本下载。
下载并解压 Tomcat
# 1. 进入 /usr/local 目录,创建 Tomcat 目录
cd /usr/local
mkdir Tomcat
cd Tomcat
# 2. 下载 Tomcat 源码包(以 10.1.48 版本为例,从 Apache 官网复制链接)
wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.48/bin/apache-tomcat-10.1.48.tar.gz
# 3. 解压 Tomcat 包
tar -zxvf apache-tomcat-10.1.48.tar.gz
启动 Tomcat 并验证
# 1. 进入 Tomcat 二进制文件目录(bin 目录)
cd apache-tomcat-10.1.48/bin
# 2. 启动 Tomcat(startup.sh 为 Linux 启动脚本)
./startup.sh
# 输出如下表示启动成功:
# Using CATALINA_BASE: /usr/local/Tomcat/apache-tomcat-10.1.48
# Using CATALINA_HOME: /usr/local/Tomcat/apache-tomcat-10.1.48
# Using CATALINA_TMPDIR: /usr/local/Tomcat/apache-tomcat-10.1.48/temp
# Using JRE_HOME: /usr/local/Java/jdk-25
# Using CLASSPATH: /usr/local/Tomcat/apache-tomcat-10.1.48/bin/bootstrap.jar:/usr/local/Tomcat/apache-tomcat-10.1.48/bin/tomcat-juli.jar
# Using CATALINA_OPTS:
# Tomcat started.# 3. 查看 Tomcat 端口(默认 8080)
netstat -ntlp | grep java
# 输出如下表示端口已监听:
# tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 7500/java
浏览器访问 Tomcat
- 打开浏览器,输入
IP地址:8080
(如192.168.10.158:8080
)。 - 若无法访问,同样需开放防火墙 8080 端口:
# 开放 8080 端口(永久生效) firewall-cmd --zone=public --add-port=8080/tcp --permanent # 重新加载防火墙规则 firewall-cmd --reload # 查看已开放端口 firewall-cmd --list-port
- 再次访问,显示 Tomcat 欢迎页面即表示成功。
Tomcat 常用操作
# 关闭 Tomcat
./shutdown.sh
# 查看 Tomcat 日志(排查启动故障)
cd ../logs
tail -f catalina.out