我正在尝试固定通过apt
Ubuntu 20.04 安装的软件包。不幸的是,旧版本的软件包似乎很快就被删除了,例如:
apt install -y git=1:2.25.1-1ubuntu3.6
产量:
E: Version '1:2.25.1-1ubuntu3.6' for 'git' was not found
我能在 Launchpad 上查看完全相同的软件包版本:https://launchpad.net/ubuntu/+source/git/1:2.25.1-1ubuntu3.6我可以下载该.deb
文件并安装它。
我如何才能知道apt
在 Launchpad 存储库中搜索此包?这可能吗?如果转到构建页面,它似乎列在~ubuntu-security
私有 PPA 下,我无法添加:
# add-apt-repository ppa:ubuntu-security/ppa
Adding private PPAs is not supported currently
(但我不确定我是否正确使用它)。
答案1
Launchpad 的历史库不是与 apt 兼容的存储库。用户操作也无法使其成为兼容的存储库。
目前没有已知工具可以使 Launchpad 与 apt 兼容。(那将是一场支持噩梦!)
您必须手动浏览并下载您想要的 deb。
答案2
在尝试解决这个问题时,我发现 Debian 维护了他们完整软件包存储库的快照(例如http://snapshot.debian.org/archive/debian/20230804T031641Z/)。您可以添加此快照作为 apt 的源 - 并且这应该(我相信)始终导致安装完全相同的软件包:
echo 'deb [trusted=yes] http://snapshot.debian.org/archive/debian/20230804T031641Z/ bullseye main' > /etc/apt/sources.list.d/snapshot.list && \
printf "Package: r-*\nPin: origin snapshot.debian.org\nPin-Priority: 990\n" > /etc/apt/preferences.d/snapshot && \
apt -o Acquire::Check-Valid-Until=false update
当现在apt install -y curl
这样做时你应该总能得到7.74.0-1.3+deb11u7
。
不幸的是,Debian 快照(在我测试的短时间内)非常慢且不可靠;所以如果有人能制作它的商业版本就太好了。