Apt-get ne reconnaît pas les logiciels de nœuds installés via nvm

15

J'essaie d'installer un .debpackage mais il nécessite plusieurs dépendances telles que nodejs, nodejs-underscore, mais toutes celles-ci sont déjà installées via nvmet sont disponibles.

Existe-t-il de toute façon que je puisse faire apt-getreconnaître les packages installés via nvm afin qu'ils ne s'affrontent pas? Je sais que apt-get est à l'échelle du système alors que nvm fonctionne à l'espace utilisateur local, donc cela pourrait nécessiter un piratage.

Louisgv
la source

Réponses:

13

L'approche la plus simple, chaque fois que possible est de n'utiliser soit ou paquets. Cela vous évitera probablement beaucoup de maux de tête à long terme, alors examinez-le d'abord. Il semble que presque tout ce qui est lié aux nœuds et fourni par un package puisse être installé à la place.nvm .deb.debnvm

Si cela n'est vraiment pas possible, cependant, vous pourrez peut-être créer des .debpackages "factices" en utilisant equivs-controlet equivs-buildpour indiquer aptque les dépendances sont installées. Notez que cela pourrait potentiellement confondre apt si vous vous trompez. De plus, même si vous désinstallez des nvmpackages, apt pensera toujours que vous avez les substituts que vous avez définis dans les packages factices jusqu'à ce que vous désinstalliez les packages factices eux-mêmes.

Tout d'abord, installez "equivs" afin que nous puissions construire les paquets factices:

sudo apt-get install equivs

Créez un fichier de contrôle qui décrit le package factice:

cd ~
equivs-control nodejs-dummy

Modifiez ce fichier de contrôle:

nano nodejs-dummy

Décommentez et modifiez les lignes du fichier de contrôle comme vous le souhaitez. En particulier, définissez la ligne "Fournit:" pour répertorier les packages que vous avez substitués à l'aide nvm. Par exemple:

Package: nodejs-dummy
Version: (version slightly higher than what the apt package actually provides)
Maintainer: Your Name <[email protected]>
Provides: nodejs
Architecture: all
Description: Something that will remind you what this does ;)

Construisez le package:

equivs-build nodejs-dummy

Enfin, installez-le:

sudo dpkg -i nodejs-dummy_use_the_actual_filename.deb

Rincez et répétez pour tous les packages que vous avez substitués en utilisant nvm. Si un package dépend d'une version spécifique d'un autre package que vous avez remplacé nvm, vous devrez peut-être utiliser le numéro de version exact dont il dépend. Cependant, je ne sais pas quels problèmes pourraient en résulter, et vous devrez probablement continuer à reconstruire vos packages factices chaque fois que les packages du système d'exploitation changent de version.

panier
la source
1
Merci beaucoup pour la réponse! Mon classement est bas donc le vote positif ne compte pas mais j'ai voté!
Louisgv
3
@Louisgv si cela répond à votre question, pensez à l' accepter .
Boris the Spider
Je ne connaissais pas les équivs. Ceci est un excellent outil, merci!
brandizzi
5

Il s'agit d'un problème avec la façon dont nvm distribue les logiciels. Ils ne font tout simplement aucun emballage spécifique à la distribution. Pour être précis, j'ai fait une lecture rapide de nvm et ce ne sont que des binaires. Par exemple, voici ce qu'il installe pour nodejs 6: https://nodejs.org/.../lates.../node-v6.3.1-linux-x64.tar.gz Cela ne contient aucun .deb ou Les métadonnées .rpm, donc jusqu'à ce qu'elles libèrent correctement les vrais packages, il n'y a pas grand-chose que les gestionnaires de packages de niveau distribution puissent faire et ils entreront probablement en conflit les uns avec les autres. Si je comprends l'intérêt de nvm publier des packages appropriés n'est pas quelque chose qui les intéresse exactement parce que cela les lie à la prise en charge de packages spécifiques à la distribution. Donc, à la place, nous avons le hack nvm. Peut-être déposer un problème contre leur git. Cela ne peut être corrigé que par la communauté nodejs.

Notamment, npm et nvm ne semblent actuellement prendre en charge aucun concept de signature de code ( source ), par rapport au package distro qui est bien pris en charge dans la plupart des gestionnaires de packages de distro. Il s'agit d'une approche assez peu sûre pour l'installation de packages système.

sept bits octets
la source
4

Non, tu ne peux pas comme tu l'as déjà dit. Apt fonctionne au niveau du système, où les packages d'installation réguliers de nvm au niveau de l'utilisateur.

Vous avez deux options -

  • Soit votre package souhaité via nvm et utilisez les autres packages nvm déjà installés, soit

  • installez le package en utilisant apt-getet installez toutes les dépendances avec lui.

Anwar
la source