为包指定特定的源 apt 存储库

为包指定特定的源 apt 存储库

在 Debian 上sid,为了安装 Web 服务,我运行了一个添加 NodeJS 存储库并安装nodejs包的脚本。问题已apt解决为 Debian 的软件包版本8.11.2~dfsg-1,由于某种原因不包括npm,而不是 NodeJS repo 的版本8.11.2-1nodesource1。缺少npm弄乱了预期它在安装后出现的脚本nodejs

我通过手动执行解决了这个问题apt install nodejs=8.11.2-1nodesource1,但这是一个临时解决方法。有没有一种方法可以在我的脚本上指定首选特定存储库,无论版本如何?

编辑

# apt policy nodejs
nodejs:
  Installed: 8.11.2-1nodesource1
  Candidate: 8.11.2-1nodesource1
  Version table:
 *** 8.11.2-1nodesource1 500
        500 https://deb.nodesource.com/node_8.x sid/main arm64 Packages
        100 /var/lib/dpkg/status
     8.11.2~dfsg-1 990
        990 http://deb.debian.org/debian unstable/main arm64 Packages

答案1

有没有一种方法可以在我的脚本上指定首选特定存储库,无论版本如何?

您应该使用为origin“外部源”分配高优先级的选项来固定外部源,而不是使用名称release

e,g:将以下行添加到您的/etc/apt/preferences.d/preferences

Package: *
Pin: origin deb.nodesource.com
Pin-Priority: 1001

apt-cache policy nodejs是:

Candidate: 8.11.2-1nodesource1

Version table:
     8.11.2-1nodesource1 1001
       1001 https://deb.nodesource.com/node_8.x sid/main amd64 Packages
     8.11.2~dfsg-1 500
        500 http://deb.debian.org/debian sid/main amd64 Packages

该软件包将从以下位置nodejs安装nodsource.comapt install nodejs

通常,如果您添加nodejs源(使用安装脚本),nodejs则将安装包,而nodesource.com无需添加完整的包名称apt或使用固定方式。 (这可能是一个问题,你可以在这里报告)。

如果该软件包可从多个存储库(debian 存储库和外部存储库)获得,您可以使用 debian 发行版标签来安装该软件包Debian 存储库。假设nodejs已固定1001,您需要从 debian Sid 安装该软件包:

apt install nodejs/unstable

合适的偏好

编辑

该软件包nodejs固定到 990 ,它将从 debian 存储库安装。从文件中删除 nodejspreferences然后运行:

apt update
apt install nodejs

包nodejs应该从nodesource存储库安装。

相关内容