Appearance
Linux常见的软件包封装类型
文件类型 | 保存目录 |
---|---|
RPM软件包 | 扩展名为“.rpm” |
DEB软件包 | 扩展名为“.deb“ |
源代码软件包 | 一般为“。tar.gz”、“.tar.bz2”等格式的压缩包包含程序的原始代码 |
绿色免安装的软件 | 软件包的扩展名不一、以TarBall格式的居多 在压缩包内提供已经编译好的 |
主流发行版命令格式对比
发行版家族 | 包管理工具 | 安装 | 卸载 | 更新 | 查询 | 其他特性 |
---|---|---|---|---|---|---|
RHEL系 (RHEL/CentOS) | rpm | rpm -ivh pkg.rpm | rpm -e pkg | rpm -Uvh pkg.rpm | rpm -q[ail] pkg | 需手动处理依赖 |
yum | yum install pkg | yum remove pkg | yum update pkg | yum list/info pkg | 自动解决依赖 | |
dnf | dnf install pkg | dnf remove pkg | dnf upgrade pkg | dnf list pkg | yum的下一代替代品 | |
Debian系 (Ubuntu/Debian) | dpkg | dpkg -i pkg.deb | dpkg -r pkg | - | `dpkg -l | grep pkg` |
apt | apt install pkg | apt remove pkg | apt upgrade pkg | apt list pkg | 最常用的高级工具 | |
Arch系 | pacman | pacman -S pkg | pacman -R pkg | pacman -Syu | pacman -Qs pkg | 滚动更新设计 |
通用工具 | snap | snap install pkg | snap remove pkg | snap refresh pkg | snap list | 跨发行版容器化包 |
flatpak | flatpak install pkg | flatpak uninstall pkg | flatpak update | flatpak list | 沙盒化应用 |
RPM 包
RPM 软件包 一般命名格式
mermaid
graph TD
A[bash-4.1.2-15.el6_4.x86_64.rpm] --> A1[软件名称]
A1 -->|bash| A
A --> A2[版本号]
A2 -->|4.1.2| A
A --> A3[发布次数]
A3 -->|15.el6_4| A
A --> A4[硬件平台]
A4 -->|x86_64| A
A --> A5[扩展名]
A5 -->|.rpm| A
rpm包网站
openEuler(国产欧拉):https://easysoftware.openeuler.org/zh/rpm
典型应用程序目录结构
文件类型 | 保存目录 |
---|---|
普通执行程序文件 | /usr/bin |
服务器执行程序文件和管理程序文件 | /usr/sbin |
应用程序配置文件 | /etc |
日志文件 | /var/log |
应用程序文档文件 | /usr/share/doc |
应用程序手册页文件 | /usr/share/man |
yum仓库
CentOS 8+/RHEL 8+ 中,yum
是 dnf
的符号链接,用法基本一致。
配置文件yum.conf
ini
[main]
# RPM包和元数据缓存目录,支持变量如$basearch(架构)、$releasever(系统版本)
cachedir=/var/cache/yum/$basearch/$releasever
# 设为1时保留下载的RPM包(适用于重复安装场景)。0关闭、1开启
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=3
# 排除特定包(支持通配符)
exclude=kernel* php-*
# 网络与代理设置
proxy=http://proxy.example.com:8080
proxy_username=user
proxy_password=pass
timeout=30
retries=3
# 带宽限制(KB/s)
throttle=100000
# 插件参数(需插件已安装)
pluginconfpath=/etc/yum/pluginconf.d
.repo文件中各字段的含义
- [repositoryID]:这是仓库的唯一标识符,在整个/etc/yum.repos.d/目录中应该是唯一的。
- name=Some name for this repository:源的名称,通常用于yum的输出。
- baseurl=url://path/to/repository/:这是YUM用来查找软件包的基础URL。可以有多个baseurl,以支持多个服务器。
- enabled=1:这个选项告诉YUM是否启用或禁用此仓库。如果设置为1,则启用该仓库。如果设置为0,则禁用该仓库。
- gpgcheck=1:这个选项告诉YUM是否检查包来自正确的来源。如果设置为1,则启用GPG签名检查。如果设置为0,则禁用GPG签名检查。
- gpgkey=URL:这是GPG密钥文件的位置,通常是.pub后缀的文件。
yum 优先级
YUM 源的优先级可以通过 yum-plugin-priorities
插件来设置。如果多个仓库提供相同的软件包,YUM 会优先选择优先级较高的仓库。
安装插件
bash
yum install yum-plugin-priorities
在 .repo 文件中设置优先级
bash
[repo_name] priorities=10
NOTE
优先级数值越小,优先级越高。priority
数值范围是 1 到 99。
构建本地yum仓库
1、创建挂载路径
bash
mkdir /media/cdrom
2、挂载光盘
bash
mount /dev/sr0 /media/cdrom
3、备份旧的yum源文件
bash
cd /etc/yum.repos.d && mkdir bak
mv *.repo bak
4、创建本地yum 源文件
bash
[local]
name=media
baseurl=file:///media/cdrom
gpgcheck=0
enabled=1
5、清理旧的缓存
bash
dnf -y clean all
6、创建新的缓存
bash
dnf makecache
7、验证
bash
dnf repolist
yum 安装、卸载、升级 RPM 包软件
命令 | 不加关键字 | 加入关键词、软件包、软件包组 |
---|---|---|
yum list | 显示所有可用包 | 单个的可安装包 |
yum info | 显示所有可用包的信息 | 单个具体的信息 |
yum search | \ | 模糊查找所有的相关信息 |
yum provides | \ | 精确查找 |
yum install | \ | 安装具体软件包 |
yum history | 查看当前yum操作历史 | \ |
yum history undo | 加入序号卸载序号里安装的软件 | \ |
yum history redo | 加入序号重新执行序号里的操作 | \ |
yum update | 所有软件升级 | 具体软件升级 |
deb文件安装
deb包是Debian,Ubuntu等Linux发行版的软件安装包,扩展名为.deb,是类似于rpm的软件包,Debian,Ubuntu系统不推荐使用deb软件包,因为要解决软件包依赖问题,安装也比较麻烦。
在Ubuntu中安装 .deb 文件,你可以使用 dpkg 命令或者apt命令。
软件包网站
dpkg命令常见参数
bash
dpkg -i --install xxx.deb 安装deb软件包
dpkg -r --remove xxx.deb 删除软件包
dpkg -r -P --purge xxx.deb 连同配置文件一起删除
dpkg -I -info xxx.deb 查看软件包信息
dpkg -L xxx.deb 查看文件拷贝详情
dpkg -l 查看系统中已安装软件包信息
dpkg-reconfigure xxx 重新配置软件包
apt源
apt 是Ubuntu系统下的一个命令行工具,用于处理包。这个命令可以自动下载和安装软件包及其依赖项。它是Advanced Packaging Tool (APT)的一部分,APT是处理包的高级工具,可以处理复杂的包关系,如依赖关系等。
apt命令的常见参数
bash
install:安装软件包
remove:删除软件包
upgrade:升级所有已安装的软件包
update:更新源列表
dist-upgrade:升级系统
autoremove:自动删除不再需要的包
purge:删除软件包及其配置文件
clean:清理下载的包文件
autoclean:清理旧版本的下载包文件
apt命令 | 替代命令 | 功能描述 |
---|---|---|
apt update | apt-get update | 更新存储库索引 |
apt upgrade | apt-get upgrade | 升级所有可升级的软件包 |
apt install | apt-get install | 安装软件包 |
apt remove | apt-get remove | 移除软件包但保留配置文件 |
apt purge | apt-get purge | 移除软件包也删除配置文件 |
apt autoremove | apt-get autoremove | 自动删除没用的依赖包 |
apt full-upgrade | apt-get dist-upgrade | 在升级软件包时自动处理依赖关系 |
apt search | apt-cache search | 搜索**搜索应用程序 |
apt show | apt-cache show | 显示指定安装包基本信息 |
apt list | N/A | 列出包含条件的包(已安装,可升级等) |
apt edit-sources | N/A | 编辑源列表 |
仓库源文件
档案类型 (Archive type) 条目的第一个词 deb 或是 deb-src 表明了所获取的软件包档案类型。
- deb:**档案类型为二进制预编译软件包,一般我们所用的档案类型。 **
- deb-src:档案类型为用于编译二进制软件包的源代码。
仓库地址 (Repository URL):条目的第二个词则是软件包所在仓库的地址。我们可以更换仓库地址为其他地理位置更靠近自己的镜像来提高下载速度。
软件包分类
Debian
- main:包含符合 DFSG 指导原则的自由软件包,而且这些软件包不依赖不符合该指导原则的软件包。这些软件包被视为 Debian 发型版的一部分。
- contrib:包含符合 DFSG 指导原则的自由软件包,不过这些软件包依赖不在 main 分类中的软件包。
- non-free:包含不符合 DFSG 指导原则的非自由软件包。
Ubuntu
- main: 官方支持的 自由软件。
- restricted:官方支持的非完全自由的软件。
- universe:社区维护的自由软件。
- multiverse:非自由软件
在Ubuntu中更换APT源可以通过编辑 /etc/apt/sources.list 文件来实现。
apt 国内源
- 清华大学开源软件镜像站
- 地址:https://mirrors.tuna.tsinghua.edu.cn/
- 特点:北方用户首选,学术网络优化。
- 阿里云镜像站
- 地址:https://mirrors.aliyun.com/
- 特点:全国 CDN,延迟低,覆盖广。
- 中国科学技术大学 Mirror
- 地址:https://mirrors.ustc.edu.cn/
- 特点:华东节点,IPv6 支持完善。
- 网易开源镜像站
- 地址:http://mirrors.163.com/
- 特点:华南节点,老牌稳定。
- 华为云开源镜像站
- 地址:https://mirrors.huaweicloud.com/
- 特点:多线接入,海外同步快。
- 腾讯软件源
- 地址:https://mirrors.cloud.tencent.com/
- 特点:华南/华东节点,BGP 线路优化。
更换国内源
bash
# 备份原配置文件
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 编辑源文件
vi /etc/apt/sources.list
# 替换为新的镜像源(以阿里云为例)
deb https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
# 更新软件包 缓存
sudo apt update
选择镜像源的建议
- 南方用户:优先选择 腾讯云、华为云。
- 北方用户:优先选择 清华大学、中科大。
- 教育网用户:清华大学、中科大 有专线优化,速度更快。
源代码安装
"源代码编译安装"是指从一个软件的源代码(原始的、可读的程序代码)开始,通过编译(将源代码转换成计算机可执行的二进制代码)和安装(将编译好的程序放置到合适的位置,设置好环境变量等)的过程,最终在计算机上安装并运行该软件
使用源代码的优点
获得最新的软件版本,及时修复 bug
根据用户需要,灵活制定软件功能
应用场合举例
- 安装较新版本的应用程序时
- 当前安装的程序无法满足需要时
- 需要为应用程序添加新的功能时
完整性校验
计算 MD5 校验和,并与官方提供的值相比较,判断是否一致。若不一致,可能 源码包破损或被人植入程序,需谨慎。
bash
md5sum file.txt > checksum.md5 # 生成校验文件
md5sum -c checksum.md5 # 验证文件 输出:file.txt: OK
mermaid
graph TD
A[下载源代码安装包文件] --> B[步骤1:tar解包]
B -->|用途:解压并释放源代码包到指定的目录| C[步骤2:./configure 配置]
C -->|用途:设置安装目录、安装模块等选项| D[步骤3:make 编译]
D -->|用途:生成可执行的二进制文件| E[步骤4:make install 安装]
E -->|用途:复制二进制文件到系统,配置应用环境| F[测试及应用、维护软件]
案例编译安装httpd
openEuler编译安装httpd
bash
# 安装依赖
dnf install -y gcc gcc-c++ make zlib-devel pcre-devel expat-devel libtool openssl-devel
# 获取源码包
wget https://archive.apache.org/dist/httpd/httpd-2.4.54.tar.gz
wget https://dlcdn.apache.org//apr/apr-1.7.5.tar.gz
wget https://dlcdn.apache.org//apr/apr-util-1.6.3.tar.gz
# 解压源码到指定路径
tar xf httpd-2.4.54.tar.gz -C /usr/src/
tar xf apr-1.7.4.tar.gz -C /usr/src/httpd-2.4.54/srclib/
tar xf apr-util-1.6.3.tar.gz -C /usr/src/httpd-2.4.54/srclib/
mv /usr/src/httpd-2.4.54/srclib/apr-1.7.4/ /usr/src/httpd-2.4.54/srclib/apr
mv /usr/src/httpd-2.4.54/srclib/apr-util-1.6.3/ /usr/src/httpd-2.4.54/srclib/apr/util
#预配置
./configure --prefix=/usr/local/apache
# 编译
make
# 安装
make install
# 编译安装后,修改配置文件
1>备份后,修改配置文件
cd /usr/local/apache/conf/
cp httpd.conf httpd-$(date +%F).conf
2>修改文件
vi /usr/local/apache/conf/httpd.conf
……
#ServerName www.example.com:80
ServerName www.example.com:80
# 启动 Apache
/usr/local/apache/bin/apachectl start
# 进程检测
ps aux | grep "httpd"
# 注:关闭防火墙:systemctl stop firewalld
# 永久关闭: systemctl disable firewalld
# 注: ./configure –help”可查看帮助 ,典型的配置选项: --prefix=软件安装目录
ubuntu下安装httpd
bash
下载httpd-2.4.54,下载地址:https://archive.apache.org/dist/httpd/httpd-
2.4.54.tar.gz
下载apr-1.7.4,下载地址:https://dlcdn.apache.org//apr/apr-1.7.4.tar.gz
下载apr-util-1.6.3,下载地址:https://dlcdn.apache.org//apr/apr-util-1.6.3.tar.gz
# 下载安装包
wget https://archive.apache.org/dist/httpd/httpd-2.4.54.tar.gz
wget https://dlcdn.apache.org//apr/apr-1.7.4.tar.gz
wget https://dlcdn.apache.org//apr/apr-util-1.6.3.tar.gz
# 解压指定目录
tar xf httpd-2.4.54.tar.gz -C /usr/src/
apr-1.7.4.tar.gz和apr-util-1.6.3.tar.gz,分别上传至/usr/src/httpd-2.4.54/srclib/目录,依次执行以下命令
tar xf apr-1.7.4.tar.gz -C /usr/src/httpd-2.4.54/srclib/
tar xf apr-util-1.6.3.tar.gz -C /usr/src/httpd-2.4.54/srclib/
mv /usr/src/httpd-2.4.54/srclib/apr-1.7.4/ /usr/src/httpd-2.4.54/srclib/apr
mv /usr/src/httpd-2.4.54/srclib/apr-util-1.6.3/ /usr/src/httpd-2.4.54/srclib/aprutil
# 安装依赖
apt update -y
apt install build-essential libpcre3 libpcre3-dev libssl-dev -y
apt install libexpat1-dev -y
apt install libapr1-dev libaprutil1-dev -y
# 预配置
cd /usr/src/httpd-2.4.54
./configure --prefix=/usr/local/apache
# 编译
make
# 安装
make install
# 编译安装后,修改配置文件
1>备份后,修改配置文件
cd /usr/local/apache/conf/
cp httpd.conf httpd-$(date +%F).conf
2>修改文件
vi /usr/local/apache/conf/httpd.conf
……
#ServerName www.example.com:80
ServerName www.example.com:80
# 启动 Apache
/usr/local/apache/bin/apachectl start
# 进程检测
ps aux | grep "httpd"
# 注:关闭防火墙:systemctl stop firewalld
# 永久关闭: systemctl disable firewalld
# 注: ./configure –help”可查看帮助 ,典型的配置选项: --prefix=软件安装目录
Linux 可执行文件路径管理
在Linux系统中,可执行文件的路径管理是通过环境变量PATH
来实现的
PATH环境变量
PATH
是一个包含多个目录路径的环境变量,系统会在这些目录中查找可执行文件。当你在终端输入命令时,系统会按照PATH
中列出的顺序搜索这些目录。
查看当前PATH
bash
echo $PATH
# 或
printenv PATH
输出通常类似于:
bash
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
修改PATH变量
临时修改(仅当前会话有效)
bash
export PATH=$PATH:/new/directory/path
永久修改
对当前用户:
编辑~/.bashrc
、~/.bash_profile
或~/.profile
文件,添加:
bash
export PATH=$PATH:/new/directory/path
然后运行:
bash
source ~/.bashrc # 或对应的文件
对所有用户:
编辑/etc/environment
或/etc/profile
文件(需要root权限)
路径搜索顺序
系统会按照PATH中定义的顺序搜索可执行文件。例如:
bash
/usr/local/bin:/usr/bin:/bin
系统会先搜索/usr/local/bin
,然后是/usr/bin
,最后是/bin
。
查找命令所在位置
使用which
命令:
bash
which ls
使用whereis
命令(还会显示手册页位置)
bash
whereis ls
使用type
命令(可以识别别名和函数):
bash
type ls
添加自定义路径的最佳实践
- 在用户主目录下创建
~/bin
目录存放个人脚本 - 将常用工具安装在
/usr/local/bin
下 - 避免将当前目录
.
添加到PATH中,这有安全风险
特殊注意事项
- 路径之间用冒号(
:
)分隔 - 路径顺序很重要,系统使用第一个找到的可执行文件
- 修改PATH后,新打开的终端会话才会生效(除非使用
source
) - 某些GUI程序可能不会继承终端的PATH设置