萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux 軟體安裝全攻略:源碼編譯、RPM、DEB、容器化與現代包管理最佳實踐

三大主流軟體分發格式對比

格式副檔名本質優點缺點適用場景
源碼包.tar.gz, .tar.xz, .tar.bz2原始碼 + 建構腳本極致客製化、優化指令集、無廠商鎖定、可移植編譯耗時、依賴地獄、難升級/移除、需開發工具鏈開發者、嵌入式、特殊優化需求、無二進制發布軟體
RPM.rpm預編譯二進制 + 中繼資料 + 腳本依賴管理、簽名驗證、資料庫追蹤、標準化版本滯後、依賴衝突、跨發行版相容性差RHEL/CentOS/Fedora/SUSE/openSUSE 生產環境
DEB.deb預編譯二進制 + 控制資訊 + 腳本依賴解析強 (APT)、分支豐富、社群龐大同上Debian/Ubuntu/Mint/Kali 生產環境

一、源碼編譯安裝 (傳統三部曲)

# 1. 獲取並解壓
wget https://example.com/software-1.2.3.tar.xz
tar -xf software-1.2.3.tar.xz
cd software-1.2.3

# 2. 閱讀文檔 (關鍵!)
cat README INSTALL

# 3. 配置 (檢查依賴、生成 Makefile)
./configure --prefix=/usr/local/software-1.2.3 \
            --enable-feature-x \
            --with-ssl=/usr/local/openssl
# 常用選項: --prefix 安裝路徑, --enable/disable-*, --with/without-*

# 4. 編譯 (多核加速)
make -j$(nproc)  # nproc 為 CPU 核心數

# 5. 安裝 (需 root)
sudo make install

# 6. 清理 (可選)
make clean
make distclean  # 連 configure 生成文件一起清

源碼安裝進階技巧

  • Checkinstall:將 make install 過程打包為 RPM/DEB,納入包管理器追蹤,便於日後移除/升級。sudo checkinstall -D --pkgname=mysoft --pkgversion=1.2.3 make install
  • Stow/GNU Stow:安裝至 /usr/local/stow/software-1.2.3,再用 stow software-1.2.3 建立符號連結到 /usr/local,多版本共存極易切換/移除。
  • 環境變數注入:export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig 解決庫尋找問題。

二、RPM 套件管理 (RHEL/CentOS/Fedora/SUSE)

底層 rpm 指令

# 查詢
rpm -qa                    # 所有已安裝
rpm -qf /path/to/file      # 檔案屬於哪個包
rpm -ql package            # 包含檔案列表
rpm -qi package            # 詳細資訊
rpm -qpR package.rpm       # 查看未安裝包的依賴

# 安裝/升級
rpm -ivh package.rpm       # 安裝 (-v 詳細 -h 進度條)
rpm -Uvh package.rpm       # 升級 (不存在則安裝)
rpm -Fvh package.rpm       # 升級 (僅已安裝)

# 移除
rpm -e package_name
rpm -e --nodeps package_name  # 強制忽略依賴 (危險)

# 驗證
rpm -V package             # 檢查檔案完整性 (大小/權限/MD5/時間)
rpm --import RPM-GPG-KEY   # 導入 GPG 公鑰
rpm -K package.rpm         # 驗證簽名

高層包管理器 (YUM/DNF) - 強烈推薦日常使用

dnf install nginx          # 自動解決依賴
dnf remove nginx
dnf update                 # 全系統升級
dnf update nginx           # 單包升級
dnf search keyword         # 搜尋
dnf info nginx             # 詳細資訊
dnf provides */nginx.conf  # 反向查找提供檔案的包
dnf history                # 事務歷史 (可回滾)
dnf repoquery --requires nginx # 遞歸依賴樹
dnf module list nodejs     # 模組化串流 (RHEL 8+)

三、DEB 套件管理 (Debian/Ubuntu)

底層 dpkg 指令

dpkg -i package.deb        # 安裝
dpkg -r package            # 移除 (保留配置)
dpkg -P package            # 徹底清除 (含配置)
dpkg -l | grep nginx       # 列出已安裝
dpkg -L package            # 檔案列表
dpkg -c package.deb        # 查看未安裝包內容
dpkg -S /path/to/file      # 檔案歸屬
dpkg-reconfigure package   # 重新配置 (如 tzdata, postfix)

高層 APT 指令 (日常主力)

apt update                 # 更新索引 (必做第一步)
apt upgrade                # 升級所有可升級包
apt full-upgrade           # 智能處理依賴變更的升級
apt install nginx
apt remove nginx           # 移除保留配置
apt purge nginx            # 徹底清除
apt search keyword
apt show nginx             # 詳細資訊
apt list --installed       # 已安裝列表
apt list --upgradable      # 可升級列表
apt autoremove             # 移除孤兒依賴
apt edit-sources           # 編輯軟體源

四、現代通用格式:跨發行版部署新選擇

技術特點適用場景
Flatpak沙箱隔離、運行時共享、Flathub 倉庫、桌面應用優先桌面端應用、專有軟體、舊版庫依賴隔離
SnapCanonical 推動、自動更新、單一文件、伺服器/桌面雙支援Ubuntu 生態、IoT、伺服器應用 (如 microk8s)
AppImage單一可執行檔、無需安裝/root、FUSE 掛載、完全便攜臨時測試、跨系統攜帶、無權限環境
Docker/Podman容器映像、完整隔離、基礎設施即代碼、生產標準微服務、CI/CD、複雜依賴隔離、雲原生

五、最佳實踐總結

  1. 生產環境首選發行版官方倉庫 (dnf/apt):安全更新及時、依賴經測試、支援生命週期長。
  2. 需新版本/特定版本:啟用官方模組化串流 (RHEL 8+ dnf module) 或第三方可信倉庫 (EPEL, Remi, SCL, Docker 官方源)。
  3. 無倉庫源/專有軟體:優先尋找官方提供的 RPM/DEB/容器映像/AppImage。
  4. 極致客製化/嵌入式:源碼編譯 + checkinstall 或 stow 管理。
  5. 複雜多服務部署:容器化 (Docker Compose/Kubernetes) 實現環境一致性與依賴隔離。
  6. 禁止常態化使用 --nodeps --force / --force-overwrite,除非極度清楚後果並有回滾預案。
copyright © 萬盛學電腦網 all rights reserved