linux下载软件包
Linux 软件包安装全指南:从 RPM、YUM 到源码编译
Linux 系统中软件包的安装与管理是系统运维的基础技能。本文将详细介绍 Linux 中两种核心软件包(源码包与二进制包)的特点及操作方法,包括 RPM 命令、YUM/APT 包管理工具的使用,以及源码包的编译安装流程,帮助你高效管理系统软件。
Linux 软件包的两种类型
Linux 软件包主要分为两类,适用场景和安装方式差异显著:
| 类型 | 格式示例 | 特点 | 适用场景 |
|---|---|---|---|
| 源码包 | .tar.gz、.tar.bz2 |
包含源代码,需编译后安装;跨架构,可自定义配置;安装步骤较复杂。 | 需要定制功能、优化性能的场景 |
| 二进制包 | .rpm(RedHat 系)、.deb(Debian 系) |
已编译为可执行文件,安装快速;依赖特定 CPU 架构;依赖关系需手动处理。 | 快速安装、版本稳定的场景 |
RPM 包管理(RedHat 系系统:CentOS、RHEL)
RPM(Redhat Package Manager)是 RedHat 系列系统的二进制包管理工具,直接操作 .rpm 格式的软件包。
RPM 包的命名规则
RPM 包名包含丰富信息,格式为:名称-版本-发布版本.架构.rpm
例如:httpd-2.4.6-97.el7.centos.x86_64.rpm
httpd:软件名称2.4.6:版本号97.el7.centos:发布版本(与系统版本相关)x86_64:适用架构(常见架构见下表)
| 架构标识 | 适用 CPU 类型 |
|---|---|
noarch |
不依赖架构(如脚本类软件) |
i386/i686 |
Intel 32 位 / 64 位兼容 CPU |
x86_64 |
AMD/Intel 64 位 CPU |
arm |
ARM 架构(如嵌入式设备、树莓派) |
RPM 核心操作命令
(1)安装 RPM 包
rpm -ivh 包全名.rpm
# 选项说明:
# -i:安装(install)
# -v:显示详细过程(verbose)
# -h:显示进度条(hash)
# --force:强制安装(覆盖已安装文件)
# --nodeps:忽略依赖关系(不推荐,可能导致软件运行异常)
示例:rpm -ivh httpd-2.4.6-97.el7.centos.x86_64.rpm
(2)升级 RPM 包
rpm -Uvh 包全名.rpm
# -U:升级(upgrade),若未安装则自动安装
示例:rpm -Uvh httpd-2.4.6-98.el7.centos.x86_64.rpm
(3)卸载 RPM 包
rpm -e 包名 # 注意:此处用包名(如 httpd),而非完整文件名
# -e:卸载(erase)
示例:rpm -e httpd
注意:卸载会同时删除依赖该包的其他软件,需谨慎操作。
(4)查询 RPM 包信息
# 1. 查询是否安装某包
rpm -q 包名
# 示例:rpm -q httpd
# 2. 查询已安装的所有包
rpm -qa
# 过滤查询:rpm -qa | grep httpd(查找含 httpd 的包)
# 3. 查询包的详细信息(版本、开发者、描述等)
rpm -qi 包名
# 示例:rpm -qi httpd
# 4. 查询包安装的文件列表
rpm -ql 包名
# 示例:rpm -ql httpd(查看 httpd 安装的所有文件路径)
# 5. 查询某个文件属于哪个包
rpm -qf 文件名
# 示例:rpm -qf /usr/sbin/httpd(查看 /usr/sbin/httpd 属于哪个包)
SRPM 包(源码 RPM 包)的处理
SRPM 包(.src.rpm)是未编译的源码包,需先编译为二进制 RPM 包再安装:
# 1. 安装 SRPM 包(解压源码到 /usr/src/redhat/ 目录)
rpm -i 包名.src.rpm
# 2. 进入 SPECS 目录(存放编译配置文件)
cd /usr/src/redhat/SPECS
# 3. 编译为二进制 RPM 包(生成的包在 /usr/src/redhat/RPMS/ 对应架构目录)
rpmbuild -bb 包名.spec
# 4. 安装编译后的二进制包
rpm -ivh /usr/src/redhat/RPMS/x86_64/生成的包.rpm
YUM 包管理工具(自动解决依赖)
YUM(Yellowdog Updater Modified)是基于 RPM 的前端工具,能自动解决依赖关系,支持从软件仓库在线安装 / 升级软件,是 RedHat 系系统的首选工具。
YUM 软件仓库配置
YUM 仓库配置文件位于 /etc/yum.repos.d/ 目录,扩展名为 .repo(如 CentOS-Base.repo)。
示例配置(阿里云镜像源):
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
常用镜像源:阿里云、腾讯云、网易开源镜像站(解决官方源访问慢的问题)。
YUM 核心操作命令
(1)查询软件包
# 1. 列出仓库中所有可用软件包
yum list
# 2. 列出已安装的软件包
yum list installed
# 3. 搜索含关键字的软件包
yum search 关键字
# 示例:yum search httpd(查找与 httpd 相关的包)
(2)安装软件包
yum -y install 包名
# 选项:-y 自动回答 yes(无需手动确认)
# 示例:yum -y install httpd(安装 Apache 服务)
离线安装本地 RPM 包(自动解决依赖):yum localinstall 本地包.rpm
(3)升级软件包
# 1. 升级指定包
yum -y update 包名
# 示例:yum -y update httpd
# 2. 升级系统中所有可升级的包(谨慎使用,可能导致兼容性问题)
yum -y update
(4)卸载软件包
# 1. 卸载包(保留配置文件)
yum remove 包名
# 2. 彻底删除包及所有相关文件
yum erase 包名
注意:卸载会删除依赖该包的其他软件,建议先通过 yum deplist 包名 查看依赖关系。
(5)软件组操作
# 1. 列出所有软件组
yum grouplist
# 2. 安装指定软件组(如 "Development Tools" 开发工具集)
yum -y groupinstall "Development Tools"
# 3. 查看软件组包含的包
yum groupinfo "Development Tools"
(6)缓存与依赖修复
# 清理缓存(解决仓库元数据过期问题)
yum clean all
# 重建缓存
yum makecache
# 修复损坏的依赖关系
yum -y install yum-utils
package-cleanup --problems # 检查问题
package-cleanup --repair # 修复依赖
APT 包管理工具(Debian 系系统:Ubuntu、Debian)
APT(Advanced Package Tool)是 Debian 系列系统的包管理工具,功能类似 YUM,操作对象为 .deb 包,核心命令包括 apt-get 和 apt-cache。
APT 软件源配置
软件源配置文件为 /etc/apt/sources.list,示例(阿里云 Ubuntu 源):
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb:二进制包仓库deb-src:源码包仓库
APT 核心操作命令
(1)更新与安装
# 1. 更新软件源缓存(安装前必做)
apt-get update
# 2. 安装软件包
apt-get install 包名
# 示例:apt-get install nginx(安装 Nginx)
# 3. 自动安装推荐依赖
apt-get install -y 包名
(2)卸载软件
# 1. 卸载包(保留配置文件)
apt-get remove 包名
# 2. 彻底删除包及配置文件
apt-get purge 包名
# 3. 清理无用依赖
apt-get autoremove
(3)查询与搜索
# 1. 搜索软件包
apt-cache search 关键字
# 示例:apt-cache search nginx
# 2. 查看包的依赖关系
apt-cache depends 包名
# 示例:apt-cache depends nginx
# 3. 查看包的详细信息
apt-cache show 包名
源码包安装(自定义编译)
源码包是软件的原始代码,需手动编译为可执行文件,适合需要定制功能或优化性能的场景(如数据库、Web 服务器)。
源码包安装步骤(通用流程)
1. 解压源码包
# 解压 .tar.gz 包
tar -zxvf 包名.tar.gz
# 解压 .tar.bz2 包
tar -jxvf 包名.tar.bz2
# 进入解压目录
cd 包名/
2. 配置(生成 Makefile)
./configure --prefix=安装路径
# --prefix:指定安装目录(如 /usr/local/nginx),便于后续卸载
# 其他可选参数:--with-xxx(启用功能)、--without-xxx(禁用功能)
作用:检测系统环境(如是否有编译器、依赖库),生成编译配置文件 Makefile。
3. 编译(生成可执行文件)
make
# 调用 gcc 编译器,根据 Makefile 编译源码
出错处理:若编译失败,执行 make clean 清空编译产物,排查依赖问题后重新编译。
4. 安装(复制文件到指定目录)
make install
# 将编译好的文件复制到 --prefix 指定的目录
5. 卸载源码包
# 方法 1:若支持 uninstall(需源码目录存在)
cd 源码目录
make uninstall
# 方法 2:手动删除安装目录(适用于无 uninstall 支持的软件)
rm -rf 安装路径
# 示例:rm -rf /usr/local/nginx