Debian

如何按照我們的意圖通過 Apt 安裝軟體包?

  • December 27, 2020

描述

舉例說明:

  1. my-app將從原始碼建構。
  2. 它需要一些依賴項。安裝它們apt-get install foo bar baz
  3. 建構應用程序。
  4. 安裝另一個hello.deb依賴於foo.
  5. my-app稍後通過刪除整個源文件夾來刪除。
  6. 刪除my-app.

但是,在第 6 步中,您不能簡單地apt-get remove foo bar baz為依賴項發出問題,因為hello.deb仍然需要foo包,所以只有barbaz包應該被刪除。

提議

為了解決這個問題,可以創建一個虛擬包來聲明 , 的依賴關係,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 檢測到的自動安裝未滿足的建構依賴項

引用自:https://unix.stackexchange.com/questions/626250