從原始碼 make install 安裝的軟體,往往難以乾淨移除(除非提供 make uninstall)。Checkinstall 解決這個痛點:它攔截安裝過程、記錄所有新增/異動檔案,自動打包成標準 RPM 或 DEB 套件,讓您以後能用 dnf/apt 管理、升級、移除。本文以 htop 為例,示範在紅帽系與 Debian 系系統上完整流程。
sudo apt update && sudo apt install checkinstall
官方倉庫常無 Checkinstall,需手動抓 RPM:
# CentOS 7/8、RHEL 7/8 通用(從 openSUSE 構建服務下載)
wget https://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/ikoinoba/CentOS_CentOS-7/x86_64/checkinstall-1.6.2-3.el7.1.x86_64.rpm
sudo yum localinstall checkinstall-1.6.2-3.el7.1.x86_64.rpm
或啟用 EPEL 後嘗試 yum install checkinstall(部分版本已移除)。
cd /usr/local/src
wget https://github.com/htop-dev/htop/archive/refs/tags/3.3.0.tar.gz -O htop-3.3.0.tar.gz
tar xzf htop-3.3.0.tar.gz
cd htop-3.3.0
./autogen.sh # 若為 git clone 版本需執行
./configure
sudo checkinstall
預設會執行 make install 並攔截檔案操作。過程中會互動詢問:
YInteractive process viewer),空行結束。Enter 繼續。/root/rpmbuild/RPMS/x86_64/htop-3.3.0-1.x86_64.rpm 或 ~/rpmbuild/.../usr/local/src/htop-3.3.0/htop_3.3.0-1_amd64.deb# RPM 系
sudo rpm -i htop-3.3.0-1.x86_64.rpm
sudo rpm -e htop
# DEB 系
sudo dpkg -i htop_3.3.0-1_amd64.deb
sudo apt remove htop
| 參數 | 用途 |
|---|---|
-D | 強制產生 DEB 套件(預設依系統判斷) |
-R | 強制產生 RPM 套件 |
--pkgname=名稱 | 指定套件名稱 |
--pkgversion=版本 | 指定版本號 |
--pkgrelease=釋出號 | 指定 release 編號 |
--arch=架構 | 指定架構(x86_64, aarch64...) |
--maintainer=信箱 | 指定維護者資訊 |
--requires=套件清單 | 指定相依套件(逗號分隔) |
--provides=提供功能 | 指定提供的虛擬套件 |
--nodoc | 不包含文件檔案 |
--strip=no | 不 strip 二進制檔(利於除錯) |
--fstrans=no | 關閉虛擬檔案系統轉換(某些編譯系統需關閉) |
--backup=no | 不備份被覆蓋的既有檔案 |
sudo checkinstall -D --pkgname=htop --pkgversion=3.3.0 --pkgrelease=1 \
--arch=amd64 --maintainer="admin@example.com" --default \
--requires="libncursesw6,libc6" --backup=no
./configure && make && make install 流程、CMake、Meson 等產生標準 Makefile 的專案。make install 部署的情況。install 階段的檔案操作;make 階段產生的中間檔不會被打包(正常)。若需打包 Python Gem、Node 模組、Docker 映像、或跨平台產生 RPM/DEB/APK/Pacman,推薦 FPM (Effing Package Management):
gem install fpm
fpm -s dir -t rpm -n myapp -v 1.0 /usr/local/myapp
掌握 Checkinstall,讓「編譯安裝」不再是一次性操作,而是可追蹤、可升級、可移除的標準套件管理一環,大幅降低生產環境維運風險。
CentOS 6.4 升級 Python 導致 yum 失效?修復指南(修改 yum shebang + 重裝系統 Python RPM)
scp 跨伺服器安全複製實戰:參數全表、壓縮/限速/指定金鑰/批次模式、與 rsync 效能對比
Linux Shell 腳本輸出文字顏色設定技巧:自訂函式讓訊息一目瞭然
Linux 虛擬機 SCSI 設備 ID 與盤符不匹配的解決方案
Linux 使用 script 命令記錄用戶終端操作審計軌跡
Linux Shell 腳本自動備份系統檔案:支援完整/增量備份、快照、互動確認與定時清理