Debian
如何按照我們的意圖通過 Apt 安裝軟體包?
描述
舉例說明:
- 我
my-app
將從原始碼建構。- 它需要一些依賴項。安裝它們
apt-get install foo bar baz
。- 建構應用程序。
- 安裝另一個
hello.deb
依賴於foo
.my-app
稍後通過刪除整個源文件夾來刪除。- 刪除
my-app
.但是,在第 6 步中,您不能簡單地
apt-get remove foo bar baz
為依賴項發出問題,因為hello.deb
仍然需要foo
包,所以只有bar
和baz
包應該被刪除。提議
為了解決這個問題,可以創建一個虛擬包來聲明 , 的依賴關係,
foo
我們可以簡單地安裝這個虛擬包。稍後,我們可以通過解除安裝這個虛擬包來安全地解除安裝所有這些依賴項。包裝腳本會即時建構這樣的包並安裝它:bar``baz
$ apt-get-named install foo bar baz Intention: for-myapp
問題
這種方法能解決問題嗎?是否有針對此類問題的已實施解決方案?我們如何為此目的創建一個虛擬包?
沒有現成的工具可以準確地提供這一點,因為 Debian 中的一般期望是有人會打包
my-app
,這將是真正的包,確保只要my-app
安裝了依賴項(獨立於hello
.然而,在這種情況下,有兩種工具可以派上用場。我懷疑與您最相關的是
equivs
,它提供了一種創建具有依賴關係的虛擬包的快速方法;有關詳細資訊,請參閱創建僅包含依賴項的 .deb 包。另一個工具是mk-build-deps
,它用於生成反映另一個包的建構依賴關係的虛擬包,並且在稍微不同的場景中很有用:目標是保持給定包的建構依賴關係作為一個單元進行管理。有關詳細資訊,請參閱dpkg-checkbuilddeps 檢測到的自動安裝未滿足的建構依賴項。