| 維度 | RPM 二進制包 | 源碼包 (.tar.gz) |
|---|---|---|
| 文件後綴 | .rpm (.i386.rpm, .x86_64.rpm) | .tar.gz / .tar.bz2 / .tar.xz |
| 安裝速度 | 秒級,預編譯 | 分鐘至小時級,需本地編譯 |
| 依賴處理 | 自動檢查,需配合 yum/dnf | 手動解決,configure 階段報錯 |
| 定制化程度 | 固定編譯選項 | 完全可控,支持 --prefix、功能裁剪 |
| 卸載乾淨度 | 數據庫記錄,乾淨 | 依賴 make uninstall,常有殘留 |
| 適用場景 | 生產環境、標準化部署 | 開發調試、特殊優化、無 RPM 發布軟件 |
# 1. 獲取並解壓
wget https://example.com/software-1.0.tar.gz
tar -xzf software-1.0.tar.gz
cd software-1.0
# 2. 閱讀文檔(關鍵步驟!)
cat INSTALL
cat README
./configure --help # 查看所有編譯選項
# 3. 配置編譯參數
./configure --prefix=/usr/local/software \
--enable-feature-x \
--with-ssl=/usr/local/openssl
# 4. 編譯(可並行加速)
make -j$(nproc)
# 5. 安裝(需 root 權限)
make install
# 6. 清理構建產物
make clean
make distclean # 連同 configure 生成文件一起清理
config.log--prefix 指定目錄ldconfig 更新動態鏈接庫緩存rpm -ivh package.rpm # 安裝顯示進度
rpm -Uvh package.rpm # 升級/安裝(推薦)
rpm -ivh --nodeps package.rpm # 強制忽略依賴(慎用!)
rpm -qa # 列出所有已安裝包
rpm -qa | grep kernel # 過濾查詢
rpm -qi package_name # 詳細信息
rpm -ql package_name # 文件列表
rpm -qf /path/to/file # 反查文件屬於哪個包
rpm -V package_name # 驗證文件完整性(S.5....T. 代碼含義見 man rpm)
rpm -e package_name # 標準卸載
rpm -e --nodeps package_name # 忽略依賴強制卸載(極度慎用,會破壞系統一致性)
# 使用 rpmbuild 將源碼打包為 RPM
rpmbuild -tb software-1.0.tar.gz
# 生成的 RPM 在 ~/rpmbuild/RPMS/
使用 checkinstall 替代 make install,自動生成 RPM/DEB 包並註冊到數據庫:
./configure && make
checkinstall -D --install=yes --fstrans=yes
# 產生 package.rpm 並自動安裝,未來可用 rpm -e 卸載
gcc gcc-c++ make (RHEL) 或 build-essential (Debian/Ubuntu)ldconfig 或將庫路徑加入 /etc/ld.so.conf.d/rpm --rebuilddb 重建數據庫虛擬機遷移後網卡名稱變更修復:從 eth1 改回 eth0 的 udev 規則與配置同步
Linux epoll 高性能 I/O 多路復用深度解析:原理、ET/LT 模式與實戰避坑指南
Linux 核心等待佇列機制詳解:資料結構、API 與實作流程圖解
Linux 磁碟空間分析實戰:df 與 du 指令進階用法與差異解析
Linux 網絡核心命令大全:netstat、nslookup、host、finger、ping 實戰詳解
Linux 使用 iptables connlimit 模組限制單一 IP 對特定埠的連線數
Linux 下 Oracle DBCA 創建數據庫報錯「Xlib: connection refused」解決:X11 轉發與顯示授權
Linux LVM 安全移除物理卷 (PV) 完整實戰:縮減邏輯卷、pvchange 離線、pvmove 資料遷移、vgreduce 移除、掛載驗證零資料遺失