it-swarm.com.de

Apt-get erkennt keine über nvm installierte Knotensoftware

Ich versuche, ein .deb -Paket zu installieren, es erfordert jedoch mehrere Abhängigkeiten wie nodejs, nodejs-underscore, aber all diese sind bereits über nvm installiert und verfügbar.

Kann ich apt-get Pakete erkennen lassen, die über nvm installiert wurden, damit sie nicht in Konflikt geraten? Ich weiß, dass apt-get systemweit ist, wohingegen nvm im lokalen User-Space arbeitet, so dass dies möglicherweise etwas Hacking erfordert.

15
Louisgv

Der einfachste Ansatz ist, wenn immer möglich, nur entweder nvmoder.deb -Pakete zu verwenden. Dies erspart Ihnen wahrscheinlich auf lange Sicht eine Menge Kopfschmerzen. Sehen Sie sich das also zuerst an. Es scheint, als ob fast alles, was knotenbezogen von einem .deb -Paket bereitgestellt wird, stattdessen über nvm installiert werden könnte.

Wenn dies jedoch nicht möglich ist, können Sie möglicherweise mit .deb und equivs-control "Dummy" equivs-build -Pakete erstellen, um apt mitzuteilen, 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 in den Dummy-Paketen definierten Ersatzpakete 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. Setzen Sie insbesondere die Zeile "Provides:", um die Pakete aufzulisten, die Sie mit nvm ersetzt haben. Zum Beispiel:

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

Waschen und wiederholen Sie für alle Pakete, die Sie mit nvm ersetzt haben. Wenn ein Paket von einer bestimmten Version eines anderen Pakets abhängt, das Sie durch nvm ersetzt haben, 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.

13
hampercm

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. Für nodejs 6 wird beispielsweise Folgendes installiert: https://nodejs.org/.../lates.../node-v6.3.1-linux-x64.tar.gz Dies funktioniert Sie dürfen keine Standard-.deb- oder .rpm-Metadaten enthalten. Bis sie also echte Pakete ordnungsgemäß veröffentlichen, kann keiner der Paketmanager auf Distributionsebene viel tun und sie werden wahrscheinlich miteinander in Konflikt geraten. Wenn ich verstehe, dass es nicht wichtig ist, dass nvm die richtigen Pakete veröffentlicht, interessiert sie das nicht, weil es sie an die Unterstützung von Distributions-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 ( source ) zu unterstützen, im Vergleich zu Distribution Packaging, das von den meisten Paketmanagern der Distribution gut unterstützt wird. Dies ist ein ziemlich unsicherer Ansatz für die Installation von Systempaketen.

5
sevenbitbyte

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.

4
Anwar