我必須從原始碼儲存庫下載並安裝庫的一個版本。問題是 Kubuntu 套件管理器中的其他套件需要安裝這個庫。現在我正在使用 ffmpeg,但我以前必須這樣做(例如 OpenCV),我正在尋找未來執行此操作的最佳方法...
所以我想做的是創建一個 debian 軟體包,我可以使用 checkinstall 與 dpkg 一起安裝它。我已經解壓縮了 deb 檔案來修改它,試圖讓它正常工作
問題是,ffmpeg 在套件管理器中被分成多個包,如果不需要的話,我不想編寫 5/6 個包來替換每個包。我已確保它已使用所有這些包所需的所有內容正確編譯。
我一直在嘗試使用“需要”和“替換”,但它似乎無法正常工作。當我之後嘗試安裝 VLC 時,它要求安裝套件管理器中的所有內容。我還確保版本號碼比套件管理器中的版本號晚。
這是我的 deb 控製文件中寫入的內容。據我所知,這一切都在 muon 套件管理器中被識別。
Package: ffmpeg
Priority: extra
Section: checkinstall
Installed-Size: 172216
Maintainer: root@skund
Architecture: amd64
Version: 8:1.2.1-git-2
Provides: ffmpeg,libav-tools,libpostproc52,libavdevice53,libavutil51,libavformat53,libavcodec53,libswscale2
Replaces: ffmpeg,libav-tools,libpostproc52,libavdevice53,libavutil51,libavformat53,libavcodec53,libswscale2
Description: Package created with checkinstall 1.6.2
這裡它被安裝在套件管理器中:
有人對讓它發揮作用有什麼想法嗎?
答案1
一方面,它Provides:
不適用於指定版本的依賴項。來自Debian 政策手冊,“虛擬包 - 提供”:
如果關係欄位附加了版本號,則只有真正的套件才會被考慮[...]。換句話說,如果指定了版本號,則這是忽略該套件名稱的所有 Provides 並僅考慮真實套件的請求。
對庫的依賴關係幾乎總是有版本的。所以那是行不通的。
相反,您可以:
- 下載 Debian 軟體包 (
apt-get source PACKAGE
) 並將其更新為最新的 ffmpeg(事實上,您甚至可以將所需的修補程式傳送到 Debian bug 追蹤器)。當然,您需要更新庫的 sonames(我敢打賭 ABI 已更改),並且可能需要重建許多依賴 ffmpeg 的東西。如果 API 發生變化,其中一些可能需要更改原始程式碼。 - 或者,簡單的方法:將其安裝到
/usr/local
.您可以建置其中.deb
的一個,並為其指定一個不同的套件名稱(例如,local-ffmpeg
)。然後您可以將它與 Debian 提供的 ffmpeg 一起安裝,而不必擔心上述所有問題。您也可以使用stow
將其安裝在/usr/local
.