使用诸如npm
(对于javascript)或pip
(对于python)之类的软件包管理器来安装软件包,这告诉我要非常具体地了解软件包的版本,以避免在我编写的软件中出现奇怪的行为甚至是意外的错误。
我知道apt
包管理器是一种完全不同的动物,但是我认为非常精确不会造成伤害。我错了!
直到几天前,以下命令仍在运行:
我创建了一个脚本,该脚本安装在apt程序包的特定版本的“步骤”中。一个步骤的示例如下:
apt-get install git=1:2.20.1-2+deb10u1
但是现在我得到了:
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Version '1:2.20.1-2+deb10u1' for 'git' was not found
为了完成安装,我需要安装以下版本:
apt-get install git=1:2.20.1-2+deb10u3
必须有一种方法可以使用相同的脚本在其他计算机上始终安装相同的软件,对吗?也许:
apt-get install git=1:2.20.1-2*
请帮助以正确的方式完成此操作。
提前致谢。
您提到的工具之间,或者说它们提供的存储库之间,在理念上存在根本差异。
该库谈到了npm
,pip
等可以访问所有他们分发包的发布版本。作为依赖这些程序包的项目的开发人员,您可以选择适合您项目的版本-无论是范围,特定版本还是“最新”,都由您决定并确定由您承担选择的责任。
apt
在诸如Debian之类的发行版中,由寻址的仓库仅提供对他们发行的软件包的少数版本(在大多数情况下为一个)的访问。发行版的开发人员为您选择版本,然后由他们负责选择。选择带有一些许诺,或者至少是意图。具体来说,当您使用大多数基于发行版的发行版时,安装给定的软件包将在发行版的整个生命周期内始终提供相同的功能。
因此,由于您使用的是Debian 10,因此适当的咒语是
apt install git
在Debian 10的整个生命周期中,这将安装git
具有相同功能的版本。唯一的更改将解决严重的错误和安全性问题(在以下情况中就是这种情况git
:您列出的两个版本之间的更改解决了两个安全性问题)。
当然会发生错误,但是一旦发生错误,分发程序就会认真对待它们。如果您提交的错误描述了在给定发行版本中由软件包升级引起的回归,那么我希望它能在短时间内得到解决。(事实是,给定的软件包已在稳定的发行版中升级,这意味着有些人没有睡着。)
(如果您真的想承担所有责任,则可以使用snapshot.debian.org安装特定版本的软件包。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句