Apt-get non riconosce il software del nodo installato tramite nvm


15

Sto cercando di installare un .debpacchetto, tuttavia richiede diverse dipendenze come nodejs, nodejs-underscore, ma tutte sono già installate tramite nvme sono disponibili.

Posso comunque apt-getriconoscere i pacchetti installati tramite nvm in modo che non si scontrino? So che apt-get è a livello di sistema mentre nvm funziona nello spazio utente locale, quindi potrebbe essere necessario un po 'di hacking.

Risposte:


13

L'approccio più semplice, quando possibile, è usare solo uno nvm o due .debpacchetti. Questo probabilmente ti farà risparmiare un sacco di mal di testa a lungo termine, quindi guarda prima quello. Sembra che quasi tutto ciò che riguarda il nodo fornito da un .debpacchetto potrebbe essere installato tramite nvm.

Se ciò non fosse realmente possibile, tuttavia, potresti essere in grado di creare .debpacchetti "fittizi" utilizzando equivs-controle equivs-builddi dire aptche hai installato le dipendenze. Nota che questo potrebbe potenzialmente confondere apt se sbagli qualcosa. Inoltre, anche se disinstalli i nvmpacchetti, apt penserà comunque di avere i sostituti che hai definito nei pacchetti fittizi fino a quando non disinstalli i pacchetti fittizi stessi.

Innanzitutto, installa "equivs" in modo da poter creare i pacchetti fittizi:

sudo apt-get install equivs

Creare un file di controllo che descriva il pacchetto fittizio:

cd ~
equivs-control nodejs-dummy

Modifica questo file di controllo:

nano nodejs-dummy

Annulla commento e modifica le righe nel file di controllo come desiderato. In particolare, imposta la riga "Fornisce:" per elencare i pacchetti che hai sostituito usando nvm. Per esempio:

Package: nodejs-dummy
Version: (version slightly higher than what the apt package actually provides)
Maintainer: Your Name <yourname@example.com>
Provides: nodejs
Architecture: all
Description: Something that will remind you what this does ;)

Costruisci il pacchetto:

equivs-build nodejs-dummy

Infine, installalo:

sudo dpkg -i nodejs-dummy_use_the_actual_filename.deb

Risciacqua e ripeti per tutti i pacchetti che hai sostituito usando nvm. Se un pacchetto dipende da una versione specifica di un altro pacchetto sostituito nvm, potrebbe essere necessario utilizzare il numero esatto di versione da cui dipende. Non sono sicuro di quali problemi potrebbero derivare da ciò, tuttavia, e probabilmente dovrai continuare a ricostruire i tuoi pacchetti fittizi ogni volta che i pacchetti del sistema operativo cambiano versione.


1
Grazie mille per la risposta! La mia classifica è bassa, quindi il voto non conta ma ho votato!
Louisgv,

3
@Louisgv se questo ha risposto alla tua domanda, considera di accettarlo .
Boris the Spider,

Non sapevo di equivs. Questo è un ottimo strumento, grazie!
Brandizzi,

5

Questo è un problema con il modo in cui nvm distribuisce il software. Semplicemente non eseguono imballaggi specifici per la distribuzione. Per essere precisi, ho fatto una rapida lettura di nvm e stanno solo facendo binari. Ad esempio, ecco cosa installa per nodejs 6: https://nodejs.org/.../lates.../node-v6.3.1-linux-x64.tar.gz Questo non contiene alcun standard .deb o metadati .rpm quindi fino a quando non rilasciano correttamente i pacchetti reali non c'è molto che nessuno dei gestori di pacchetti a livello di distribuzione possa fare e probabilmente entreranno in conflitto tra loro. Se capisco il punto in cui nvm rilasciare pacchetti adeguati non è qualcosa a cui sono interessati esattamente perché li lega al supporto di pacchetti specifici per la distribuzione. Quindi invece abbiamo l'hack che è NVV. Forse presentare un problema contro il loro git. Questo può essere corretto solo dalla comunità nodejs.

In particolare npm e nvm al momento sembrano non supportare alcun concetto di firma del codice ( sorgente ), quindi rispetto al packaging distro che è ben supportato nella maggior parte dei gestori di pacchetti di distro. Questo è un approccio abbastanza insicuro all'installazione dei pacchetti di sistema.


4

No, non puoi, come hai già detto. Apt funziona a livello di sistema, dove i normali pacchetti di installazione nvm a livello di utente.

Hai due opzioni:

  • O il pacchetto desiderato tramite nvm e utilizzare gli altri pacchetti nvm già installati, oppure

  • installa il pacchetto usando apt-gete installa tutte le dipendenze con esso.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.