Is there a way I can specify on my script to prefer particular repository regardless of version?
Você deve fixar a fonte externa usando a opção origin para atribuir uma alta prioridade a "fonte externa" em vez de usar o nome release .
e, g: Adicione as seguintes linhas ao seu /etc/apt/preferences.d/preferences :
Package: *
Pin: origin deb.nodesource.com
Pin-Priority: 1001
O apt-cache policy nodejs será:
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
O pacote nodejs será instalado de nodsource.com a apt install nodejs
Geralmente, se você adicionar a fonte nodejs (usando o script de configuração), o pacote nodejs será instalado a partir de nodesource.com sem adicionar o nome completo do pacote a apt ou usando o modo de fixação. (pode ser um problema e você pode reportá-lo aqui ).
Se o pacote estiver disponível em múltiplos repositórios (repositório debian e repositório externo) você pode usar a tag de lançamento debian para instalar o pacote do repositório debian . digamos que o nodejs esteja fixado em 1001 e você precise instalar o pacote do debian Sid:
apt install nodejs/unstable
Editar
O pacote nodejs está fixado em 990 e será instalado a partir do repositório debian. remova o nodejs do seu arquivo preferences e execute:
apt update
apt install nodejs
O pacote nodejs deve ser instalado a partir do repositório nodesource.