Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

Linux 軟件包管理與 RPM 打包全流程詳解

編輯:Linux 系統常見問題解答

Linux 軟件安裝三大流派

方式特點適用場景
源碼編譯 (./configure && make && make install)高度定制、優化針對性強、無依賴自動解決開發調試、特殊優化需求、無包管理器環境
二進制包 (RPM/DEB)安裝快、依賴自動解決 (yum/dnf/apt)、版本管理標準化生產環境批量部署、系統級軟件
腳本/二進制運行文件 (.sh/.bin/.run/AppImage)跨發行版、無需 root、自包含依賴專有軟件、用戶級應用、測試版本

RPM 包管理核心命令


# 安裝/升級
rpm -ivh pkg.rpm          # 安裝
rpm -Uvh pkg.rpm          # 升級 (不存在則安裝)
rpm -Fvh pkg.rpm          # 僅升級已安裝

# 查詢
rpm -qa                   # 所有已安裝
rpm -qi pkg_name          # 詳細信息
rpm -ql pkg_name          # 文件列表
rpm -qc pkg_name          # 配置文件
rpm -qf /path/file        # 文件屬於哪個包
rpm -qR pkg_name          # 依賴關係

# 卸載
rpm -e pkg_name
rpm -e --nodeps pkg_name  # 忽略依賴強制卸載

# 驗證
rpm -V pkg_name           # 已安裝文件完整性
rpm -K pkg.rpm            # 包簽名/摘要驗證

源碼包安裝 (.src.rpm / .tar.gz)


# .src.rpm 重構二進制包
rpmbuild --rebuild pkg.src.rpm
# 生成的 RPM 在 ~/rpmbuild/RPMS/arch/

# .tar.gz 源碼安裝標準流程
tar xf pkg.tar.gz
cd pkg
./configure --prefix=/usr/local/pkg
make
make install
# 協助卸載: make uninstall (需 Makefile 支持)

RPM 打包實戰:編寫 SPEC 文件

目錄結構準備


mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
echo "%_topdir %(echo $HOME)/rpmbuild" > ~/.rpmmacros

Nginx SPEC 文件示例 (~/rpmbuild/SPECS/nginx.spec)


Name:           nginx
Version:        1.24.0
Release:        1%{?dist}
Summary:        High performance web server
License:        BSD-2-Clause
URL:            https://nginx.org/
Source0:        https://nginx.org/download/nginx-%{version}.tar.gz
BuildRequires:  gcc, pcre-devel, openssl-devel, zlib-devel, make
Requires:       pcre, openssl-libs, zlib

%description
Nginx is a high performance HTTP and reverse proxy server.

%prep
%autosetup -n nginx-%{version}

%build
./configure \
    --prefix=%{_prefix}/nginx \
    --with-http_ssl_module \
    --with-http_v2_module \
    --with-pcre \
    --with-openssl \
    --with-zlib
make %{?_smp_mflags}

%install
rm -rf $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT

%files
%defattr(-,root,root,-)
%{_prefix}/nginx
%doc README CHANGES

%changelog
* Mon Jan 01 2024 Builder  - 1.24.0-1
- Initial RPM package

關鍵 SPEC 節點說明

節點用途
%prep解壓源碼、打補丁 (%autosetup, %patch)
%build編譯構建 (configure, make)
%install安裝至 $RPM_BUILD_ROOT (臨時根目錄)
%files聲明包含文件,決定最終 RPM 內容
%pre/%post安裝前/後腳本
%preun/%postun卸載前/後腳本
%clean清理構建目錄 (現代 rpmbuild 自動處理)
%changelog版本變更記錄

構建 RPM


# 放置源碼包
cp nginx-1.24.0.tar.gz ~/rpmbuild/SOURCES/

# 構建二進制 RPM + 源碼 RPM
rpmbuild -ba ~/rpmbuild/SPECS/nginx.spec

# 產物位置
# ~/rpmbuild/RPMS/x86_64/nginx-1.24.0-1.el7.x86_64.rpm
# ~/rpmbuild/SRPMS/nginx-1.24.0-1.el7.src.rpm

現代打包工具推薦

  • fpm (Effing Package Management):gem install fpm,支持 dir, tar, rpm, deb, docker 等多種源/目標格式互轉,極大簡化打包。
  • CheckInstall:make install 時自動生成 RPM/DEB。
  • Copr / OBS:雲端構建服務,提交 SPEC/源碼自動構建多發行版倉庫。
Copyright © Windows教程網 All Rights Reserved