我写了一些涉及命令的安装说明
apt-get install libgdbm5
...但较新的 ubuntu 版本只有libgdbm6
(我认为是 focus 以上版本)
显然,我可以为不同的版本写出不同的指令,但是有没有简单的方法来编写此命令,以便它可以在任一 ubuntu 版本上运行并安装可用的两个包中的哪一个?
我想知道是否apt-get install libgdbm
可以提供某种有用的别名,但是没有。不存在。
我想知道这是否apt-get install libgdbm*
会起到一些有用的作用。这种方法可行,但会安装具有相同前缀的其他各种软件包。
我看见这个问题但这并不是询问名称中带有数字后缀的包。
答案1
...但较新的 Ubuntu 版本只有
libgdbm6
确实:根据https://packages.ubuntu.com/search?keywords=libgdbm5,libgdm5
仅适用于 Bionic (18.04LTS),而libgdm6
(参见https://packages.ubuntu.com/search?keywords=libgdbm6) 适用于 Focal (20.04LTS)、Groovy (20.10) 和 Hirsuite (21.04)。
因此,Focal/Groovy/Hirsuite 包存储库不应有任何依赖于libgdbm5
(或依赖于任何不可用的包)的包。
如果您的 APT 实例中没有配置 Bionic 存储库,则无法安装libgdm5
,无论是包别名还是虚拟(提供的)包。
一种方法是将 Bionic 存储库添加到您的 APT 配置中。我建议您通过创建一个/etc/apt/sources.list.d/bionic.list
文件并在其中配置相关的deb
存储库配置来做到这一点。实现此目的的一行代码是
sudo echo "deb http://in.archive.ubuntu.com/ubuntu/ bionic main restricted universe" > /etc/apt/sources.list.d/bionic.list
...接着是apt-get update
和apt-get install libgdbm6
。
还请记住,默认情况下,您发布的存储库应优先于 中定义的任何其他存储库/etc/apt/sources.list.d
。请阅读https://wiki.debian.org/AptConfiguration更好地了解存储库优先级的工作原理。
答案2
“有没有简单的方法来编写此命令,以便它可以在任一 ubuntu 版本上运行并安装可用的两个包中的任一个?“
无论如何,您都不应该明确安装库。您应该安装应用程序,然后让 apt 找出依赖项。这就是 apt 的用途。
NO: sudo apt install python3-gdbm libgdbm6
YES: sudo apt install python3-gdbm
- 指定库将会将它们标记为“手动”,这可能会破坏未来的版本升级……或者让旧的、未使用的库不必要地悬在您的系统上。
如果您仍然确实想要指定库,则必须首先在脚本中测试可用的版本。
$ apt list libgdbm6
Listing... Done
libgdbm6/hirsute,now 1.19-2 amd64 [installed,automatic]
$ dpkg -l | grep libgdbm6
ii libgdbm6:amd64 1.19-2
amd64 GNU dbm database routines (runtime version)
$ apt list libgdbm5
Listing... Done
$
$ dpkg -l | grep libgdbm5
$