Software-Installation

如何從不同發行版的列表中安裝軟體包?

  • March 3, 2022

我想pkglist.txt至少在 Manjaro 和 Ubuntu 中安裝一個軟體包列表,儘管如果有辦法在所有發行版上安裝它會更好。我怎樣才能做到這一點?

我想到了類似的東西:

# If on Manjaro:
yay -S --no-confirm --needed - < pkglist.txt
# Else if on Ubuntu:
xargs sudo apt install < pkglist.txt

問題是我得到了一堆Unable to locate package錯誤。我可以從文件中一一安裝軟體包並忽略錯誤。

這基本上歸結為“不同的發行版是不同的”:一般來說這是不可能的。您需要維護兩個發行版的軟體包名稱列表。

仍然有一些技巧可以實現自動化:

  • 大多數發行版允許您詢問軟體包儲存庫哪些軟體包提供了特定文件 - 例如,如果您知道該東西將被呼叫/usr/bin/oocalc,您可以使用apt-file search /usr/bin/oocalc在 debian、ubuntu 等上查找軟體包,dnf repoquery --whatprovides在 Fedora/RHEL 上也是如此- oids,我確信 Arch/Manjaro 也有類似的工具。但是,這一切很快就會崩潰,因為不同的發行版可以將文件放在不同的位置。例如,一些發行版使用架構前綴。此外,可能有多個包提供相同的文件。(例如,同一程序的不同版本,或社區與上游包等;有關範例,請參見 mariadb/mysql)
  • 你當然可以嘗試從包名中自動猜測並模糊匹配最好的包。祝你好運!您通常不會獲得 100% 的成功率
  • 由於這聽起來像您想自動設置機器,也許只使用其他人維護的 ansible 角色(因此,其他人維護“安裝此軟體的軟體包是什麼?”列表)將同時解決多個問題。

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