Apt-get erkennt keine über nvm installierte Knotensoftware

15

Ich versuche, ein .debPaket zu installieren , aber es erfordert verschiedene Abhängigkeiten wie nodejs, nodejs-underscore, aber alle sind bereits über installiert nvmund verfügbar.

Kann ich trotzdem apt-getPakete erkennen, 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.

Louisgv
quelle

Antworten:

13

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 .debPaket 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-controlund equivs-buildfeststellen apt, dass die Abhängigkeiten installiert sind. Beachten Sie, dass dies apt möglicherweise verwirren kann, wenn Sie etwas falsch machen. Auch wenn Sie nvmPakete 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.

hampercm
quelle
1
Vielen Dank für die Antwort! Mein Ranking ist niedrig, also zählt die Aufwertung nicht, aber ich habe abgestimmt!
Louisgv
3
@Louisgv Wenn dies Ihre Frage beantwortet, können Sie sie akzeptieren .
Boris die Spinne
Wusste nichts über Äquivalente. Dies ist ein großartiges Tool, danke!
Brandizzi
5

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.

Siebenbitbyte
quelle
4

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-getund installieren Sie alle Abhängigkeiten damit.

Anwar
quelle