Der einfachste Ansatz besteht, wann immer möglich, darin, entweder nur Pakete nvm
oder nur .deb
Pakete zu verwenden. Dies erspart Ihnen wahrscheinlich auf lange Sicht eine Menge Kopfschmerzen. Sehen Sie sich das also zuerst an. Es sieht so aus, als ob fast alles, was knotenbezogen von einem .deb
Paket bereitgestellt wird , über installiert werden könnte nvm
.
Wenn dies jedoch nicht möglich ist, können Sie möglicherweise mit "Dummy" .deb
-Paketen erstellen equivs-control
und equivs-build
feststellen apt
, dass die Abhängigkeiten installiert sind. Beachten Sie, dass dies apt möglicherweise verwirren kann, wenn Sie etwas falsch machen. Auch wenn Sie nvm
Pakete deinstallieren , geht apt davon aus, dass Sie die Ersatzkomponenten haben, die Sie in den Dummy-Paketen definiert haben, bis Sie die Dummy-Pakete selbst deinstallieren.
Installieren Sie zuerst "equivs", damit wir die Dummy-Pakete erstellen können:
sudo apt-get install equivs
Erstellen Sie eine Steuerdatei, die das Dummy-Paket beschreibt:
cd ~
equivs-control nodejs-dummy
Bearbeiten Sie diese Steuerdatei:
nano nodejs-dummy
Kommentar entfernen und Zeilen in der Steuerdatei wie gewünscht ändern. Stellen Sie insbesondere die Zeile "Provides:" ein, um die Pakete aufzulisten, die Sie mit ersetzt haben nvm
. Beispielsweise:
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 ;)
Bauen Sie das Paket:
equivs-build nodejs-dummy
Zum Schluss installieren Sie es:
sudo dpkg -i nodejs-dummy_use_the_actual_filename.deb
Spülen Sie und wiederholen Sie für alle Pakete, die Sie mit ersetzt haben nvm
. Wenn ein Paket von einer bestimmten Version eines anderen Pakets abhängt, durch das Sie es ersetzt haben nvm
, müssen Sie möglicherweise die genaue Versionsnummer verwenden, von der es abhängt. Ich bin mir jedoch nicht sicher, welche Probleme dabei auftreten können, und Sie müssen wahrscheinlich Ihre Dummy-Pakete immer wieder neu erstellen, wenn die Betriebssystempakete die Version ändern.
Dies ist ein Problem bei der Verteilung von Software durch nvm. Sie machen einfach keine Distribution-spezifischen Verpackungen. Um genau zu sein, habe ich kurz nvm gelesen und sie haben nur Binärdateien geschrieben. Zum Beispiel, hier ist was es für NodeJS installiert 6: https://nodejs.org/.../lates.../node-v6.3.1-linux-x64.tar.gz Dies enthält keinen Standard .deb oder RPM-Metadaten, sodass die Paketmanager auf Distributionsebene so lange nicht in der Lage sind, echte Pakete ordnungsgemäß freizugeben, bis sie miteinander in Konflikt geraten. Wenn ich verstehe, dass es nicht wichtig ist, dass nvm die richtigen Pakete veröffentlicht, sind sie genau daran interessiert, weil es sie an die Unterstützung von distro-spezifischen Paketen bindet. Also haben wir stattdessen den Hack, der nvm ist. Vielleicht ein Problem gegen ihren Schwachkopf einreichen. Dies kann nur von der nodejs-Community korrigiert werden.
Insbesondere scheinen npm und nvm derzeit kein Konzept der Codesignatur ( Quelle ) zu unterstützen, im Vergleich zu Distributionspaketen, die von den meisten Distributions-Paketmanagern gut unterstützt werden. Dies ist ein ziemlich unsicherer Ansatz für die Installation von Systempaketen.
quelle
Nein, das kannst du nicht, wie du schon gesagt hast. Apt funktioniert auf Systemebene, wo reguläre NVM-Installationspakete auf Benutzerebene installiert werden.
Sie haben zwei Möglichkeiten -
Entweder das gewünschte Paket über nvm und die anderen bereits installierten nvm-Pakete verwenden, oder
Installieren Sie das Paket mit
apt-get
und installieren Sie alle Abhängigkeiten damit.quelle