YUM(Yellowdog Updater Modified)是CentOS传统包管理器,DNF(Dandified Yum)是其下一代版本,两者均能自动解决软件依赖问题,简化安装流程。
sudo yum update
sudo yum search apache
httpd
Web服务器),按提示输入y
确认:sudo yum install httpd
rpm -q
命令检查软件是否安装成功:rpm -q httpd
DNF兼容YUM命令,但性能更优,是CentOS 8+的默认包管理器。
sudo dnf update
wget
下载工具):sudo dnf search wget
sudo dnf install wget
sudo
或root用户执行安装命令。yum install epel-release
安装EPEL(Extra Packages for Enterprise Linux)仓库,扩展可用软件范围。若软件不在YUM/DNF仓库中,可下载其RPM包手动安装,但需自行解决依赖问题。
从软件官方网站或可信镜像站下载对应版本的RPM包(如example.rpm
)。
使用rpm
命令安装,-ivh
参数表示安装(i
)、显示进度(v
)、显示详细信息(h
):
sudo rpm -ivh example.rpm
若安装时提示缺少依赖,需先安装缺失的包(如libssl
):
sudo yum install libssl # 通过YUM解决依赖
若依赖无法通过仓库解决,可使用--nodeps
强制安装(不推荐,可能导致软件无法运行):
sudo rpm -ivh --nodeps example.rpm
使用rpm -e
命令卸载,需指定软件名称(而非RPM文件名):
sudo rpm -e example
若系统无法联网,可先在一台联网机器上下载软件及所有依赖的RPM包,使用createrepo
工具创建本地仓库,再通过YUM安装:
sudo yum install createrepo # 安装createrepo工具
createrepo /path/to/rpms # 生成仓库元数据
sudo yum --disablerepo="*" --enablerepo="local-repo" install example # 指定本地仓库安装
若需要特定版本的软件或自定义功能,可从源代码编译安装,但步骤较复杂,需手动管理依赖。
编译前需安装开发工具组(包含gcc
、make
等工具):
sudo yum groupinstall "Development Tools" # CentOS 7
sudo dnf groupinstall "Development Tools" # CentOS 8+
从软件官方网站下载源代码包(如nginx-1.20.2.tar.gz
),解压后进入目录:
wget http://nginx.org/download/nginx-1.20.2.tar.gz
tar -zxvf nginx-1.20.2.tar.gz
cd nginx-1.20.2
运行./configure
脚本检查环境并设置安装路径(如--prefix
指定安装目录):
./configure --prefix=/usr/local/nginx --with-http_ssl_module
常用选项:--prefix
(安装路径)、--with-*
(启用模块,如SSL、Gzip)。
make
命令编译源代码(耗时较长,取决于系统性能)。sudo make install
将编译后的文件安装到指定路径。sudo vim /etc/systemd/system/nginx.service
添加以下内容(指定启动脚本路径):[Unit]
Description=Nginx Web Server
After=network.target
[Service]
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
Type=forking
[Install]
WantedBy=multi-user.target
sudo systemctl enable nginx # 开机自启
sudo systemctl start nginx # 立即启动
yum search
或dnf search
查找)。yum install epel-release
安装)。yum update
更新仓库索引,解决常见依赖冲突。yum install
安装)。sudo
或root用户执行安装命令,避免“Permission denied”错误。