在 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.com
apt 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存储库安装。