J'essaie d'installer un paquetage .deb
, mais il nécessite plusieurs dépendances telles que nodejs, nodejs-underscore, mais toutes celles-ci sont déjà installées via nvm
et sont disponibles.
Est-ce que je peux quand même faire en sorte que apt-get
reconnaisse les paquets installés via NVM afin qu'ils ne se contredisent pas? Je sais qu'apt-get concerne l'ensemble du système, alors que nvm fonctionne sur un espace utilisateur local, ce qui pourrait nécessiter un piratage.
L’approche la plus simple, chaque fois que possible, consiste à niquement utiliser soit les packages nvm
o.deb
. Cela vous évitera probablement beaucoup de maux de tête à long terme, alors examinez-vous en premier. Il semble que presque tout ce qui concerne les nœuds fourni par un paquetage .deb
pourrait être installé via nvm
à la place.
Si cela n’est vraiment pas possible, vous pourrez peut-être créer des packages "factices" .deb
utilisant equivs-control
et equivs-build
pour indiquer à apt
que les dépendances sont installées. . Notez que cela pourrait potentiellement confondre apt si vous vous trompez. De même, même si vous désinstallez nvm
paquets, apt pensera toujours que vous avez les substituts que vous avez définis dans les paquets factices jusqu'à ce que vous désinstalliez eux-mêmes les paquets factices.
Tout d’abord, installez "equivs" pour pouvoir construire les paquets factices:
Sudo apt-get install equivs
Créez un fichier de contrôle décrivant le package factice:
cd ~
equivs-control nodejs-dummy
Editez ce fichier de contrôle:
nano nodejs-dummy
Décommentez et changez les lignes dans le 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 de 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 paquet:
equivs-build nodejs-dummy
Enfin, installez-le:
Sudo dpkg -i nodejs-dummy_use_the_actual_filename.deb
Rincez et répétez l'opération que vous avez remplacée avec nvm
. Si un package dépend d'une version spécifique d'un autre package que vous avez remplacé par 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 reconstruire vos packages factices chaque fois que les packages du système d'exploitation changent de version.
Ceci est un problème avec la façon dont nvm distribue les logiciels. Ils ne font tout simplement pas d'emballage spécifique à la distribution. Pour être précis, faites une lecture rapide de NVM et ils ne font que lire des binaires. Par exemple, voici ce qu’il installe pour nodejs 6: https://nodejs.org/.../lates.../node-v6.3.1-linux-x64.tar.gz Ceci ne ne contient pas de métadonnées .deb ou .rpm standard. Par conséquent, les gestionnaires de paquets au niveau de la distribution n’auront pas grand chose à faire jusqu’à ce que les vrais paquets soient correctement distribués et ils seront probablement en conflit les uns avec les autres. Si je comprends bien, l’intérêt de la publication des paquets appropriés par nvm ne les intéresse pas tout à fait, car cela les lie au support des paquets spécifiques à la distribution. Donc, au lieu de cela, nous avons le hack qui est 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 ), alors comparé à l’emballage de la distribution qui est bien pris en charge par la plupart des gestionnaires de paquets de la distribution. C'est une approche assez peu sécurisée pour l'installation de packages système.
Non, vous ne pouvez pas comme vous l'avez déjà dit. Apt fonctionne au niveau système, où nvm normal installe les packages au niveau utilisateur.
Vous avez deux options -
Soit le paquet souhaité via NVM et utilisez les autres paquets NVM déjà installés, soit
installez le paquet en utilisant apt-get
et installez toutes les dépendances avec.