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”錯誤。