Software-Installation
如何從不同發行版的列表中安裝軟體包?
我想
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 角色(因此,其他人維護“安裝此軟體的軟體包是什麼?”列表)將同時解決多個問題。