Non è ansible installare pacchetti usando il gestore di pacchetti di nodes in Ubuntu

Il nome dell’interprete NodeJS ( node ) su Ubuntu è stato rinominato in nodejs causa del conflitto di nome con un altro pacchetto. Ecco cosa dice readme.debian:

Il nome upstream per il comando interprete Node.js è “node”. In Debian il comando dell’interprete è stato cambiato in “nodejs”.

Questo è stato fatto per prevenire una collisione nello spazio dei nomi: altri comandi usano lo stesso nome nei loro upstream, come ax25-node dal pacchetto “node”.

Gli script che chiamano Node.js come comando della shell devono essere modificati per utilizzare invece il comando “nodejs”.

Tuttavia, l’uso di nodejs richiede l’installazione dei pacchetti utilizzando npm . L’installazione del pacchetto non riesce con il seguente errore:

 sh: 1: node: not found npm WARN This failure might be due to the use of legacy binary "node" npm WARN For further explanations, please read /usr/share/doc/nodejs/README.Debian 

Come faccio a capire che npm è già installato sul sistema, ma il nome dell’interprete è diverso?

TL; DR:

 sudo apt-get install nodejs-legacy 

Prima di tutto fammi chiarire la situazione un po ‘. Nell’estate del 2012 i manutentori Debian hanno deciso di rinominare l’eseguibile di Node.js per evitare un qualche tipo di collisione nello spazio dei nomi con un altro pacchetto. È stata una decisione molto difficile per il Debian Technical Committee, perché rompe la retrocompatibilità.

Quanto segue è una citazione dalla bozza di risoluzione della commissione, pubblicata nella mailing list Debian:

  1. Il pacchetto nodejs deve essere modificato per fornire / usr / bin / nodejs, non / usr / bin / node. Il pacchetto dovrebbe dichiarare un’interruzione: relazione con qualsiasi pacchetto in Debian che faccia riferimento a / usr / bin / node.

  2. Il pacchetto source nodejs fornisce anche un pacchetto binario nodejs-legacy su Priorità: extra che contiene / usr / bin / node come link simbolico a / usr / bin / nodejs. Nessun pacchetto nell’archivio può dipendere o consigliare il pacchetto nodejs-legacy, che è fornito esclusivamente per l’upstream
    Compatibilità. Questo pacchetto dichiara anche dichiarare un conflitto: relazione con il pacchetto del nodo.

<...>

Il paragrafo 2 è la soluzione reale per il problema dell’OP. OP dovrebbe provare a installare questo pacchetto invece di fare symlink a mano. Ecco un link a questo pacchetto nel sito web dell’indice del pacchetto Debian.

Può essere installato utilizzando sudo apt-get install nodejs-legacy .

Non ho trovato alcuna informazione sull’adozione dell’intero progetto da parte degli sviluppatori NPM, ma penso che il pacchetto npm sarà corretto su qualche punto e il nodejs-legacy diventerà davvero legacy.

Prova a colbind il nodo a nodejs. Prima scopri dove si trova nodejs

 whereis nodejs 

Quindi il nodo del collegamento software a nodejs

 ln -s [the path of nodejs] /usr/bin/node 

Sto assumendo che / usr / bin sia nel tuo percorso di esecuzione. Quindi puoi testare digitando node o npm nella riga di comando, e tutto dovrebbe funzionare ora.

È inoltre ansible installare Nodejs utilizzando NVM o Nodejs Version Manager. Esistono molti vantaggi nell’utilizzo di un gestore delle versioni. Uno di questi è che non devi preoccuparti di questo problema.

Istruzioni:

 sudo apt-get update sudo apt-get install build-essential libssl-dev 

Una volta installati i pacchetti prerequisiti, è ansible eseguire lo script di installazione di nvm dalla pagina GitHub del progetto. Il numero di versione potrebbe essere diverso, ma in generale è ansible scaricarlo e installarlo con la seguente syntax:

 curl https://raw.githubusercontent.com/creationix/nvm/v0.16.1/install.sh | sh 

Questo scaricherà lo script ed eseguirlo. Installa il software in una sottodirectory della directory home in ~/.nvm . Aggiungerà anche le linee necessarie al tuo file ~/.profile per utilizzare il file.

Per accedere alla funzionalità nvm, è necessario disconnettersi e ricollegarsi nuovamente oppure è ansible generare il file ~ / .profile in modo che la sessione corrente sia al corrente delle modifiche:

 source ~/.profile 

Ora che hai installato nvm, puoi installare versioni Node.js isolate.

Per scoprire le versioni di Node.js che sono disponibili per l’installazione, puoi digitare:

 nvm ls-remote . . . v0.11.10 v0.11.11 v0.11.12 v0.11.13 v0.11.14 

Come puoi vedere, la versione più recente al momento in cui scrivo è la v0.11.14. Puoi installarlo digitando:

 nvm install 0.11.14 

Di solito, nvm cambierà per usare la versione installata più di recente. Puoi dire esplicitamente a nvm di usare la versione appena scaricata digitando:

 nvm use 0.11.14 

Quando installi Node.js usando nvm, l’eseguibile si chiama nodo. Puoi vedere la versione attualmente utilizzata dalla shell digitando:

 node -v 

Il tutorial su comeplete può essere trovato qui

  1. Installa nvm prima usando:

     curl https://raw.githubusercontent.com/creationix/nvm/v0.11.1/install.sh | bash 
  2. Esegui comando

     source ~/.profile 
  3. Ora esegui questo e questo mostrerà tutte le versioni installate o altre versioni dei pacchetti:

     nvm ls-remote 
  4. I pacchetti installati saranno in verde. Installa la versione che desideri:

     nvm install 6.0.0 
  5. Controlla dove non è installato:

     which node 
  6. Controlla la versione attuale:

     node -v n=$(which node); n=${n%/bin/node}; chmod -R 755 $n/bin/*; sudo cp -r $n/{bin,lib,share} /usr/local 
 sudo apt-get --purge remove node sudo apt-get --purge remove nodejs-legacy sudo apt-get --purge remove nodejs sudo apt-get install nodejs-legacy source ~/.profile 

Combinato la risposta accettata con source ~/.profile dal commento che è stato ripiegato e alcuni comandi di pulizia prima. Molto probabilmente avrai bisogno di sudo apt-get install npm after.

Ecco un altro approccio che utilizzo poiché mi piace n per passare facilmente tra le versioni dei nodes.

Su un nuovo sistema Ubuntu, prima installa il nodo ‘sistema’:

 curl -sL https://deb.nodesource.com/setup | sudo bash - 

Quindi installare n module globally:

 npm install -gn 

Poiché il nodo di sistema è stato installato per primo (sopra), il sistema alternativo può essere utilizzato per puntare in modo pulito al nodo fornito da n . Innanzitutto assicurati che il sistema alternativo non abbia nulla per il nodo:

 update-alternatives --remove-all node 

Quindi aggiungere il nodo fornito da n :

 update-alternatives --install /usr/bin/node node /usr/local/bin/node 1 

Successivamente aggiungere il nodo fornito dal sistema (quello che è stato installato con curl):

 update-alternatives --install /usr/bin/node node /usr/bin/nodejs 2 

Ora seleziona il nodo fornito da n usando il menu interattivo (seleziona /usr/local/bin/node dal menu presentato dal seguente comando):

 update-alternatives --config node 

Infine, poiché /usr/local/bin ha in genere una precedenza più alta in PATH rispetto a /usr/bin , è necessario creare il seguente alias (immettere in .bashrc o .zshrc) se il nodo del sistema alternativo deve essere efficace; altrimenti il ​​nodo installato con n in / usr / local / bin ha sempre la precedenza:

 alias node='/usr/bin/node' 

Ora puoi facilmente passare da una versione del nodo a un altro n .

per me il problema è stato risolto da

 sudo apt-get remove node sudo apt-get remove nodejs curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - sudo apt-get install -y nodejs sudo ln -s /usr/bin/nodejs /usr/bin/node alias node=nodejs rm -r /usr/local/lib/python2.7/dist-packages/localstack/node_modules npm install -g [email protected] || sudo npm install -g [email protected] 

Su Linux Mint 17, ho provato entrambe le soluzioni (creando un nodejs-legacy simbolico o utilizzando il pacchetto nodejs-legacy ) senza successo.

L’unica cosa che alla fine ha funzionato per me è stata l’utilizzo del ppa di Chris Lea:

 sudo apt-get purge node-* sudo apt-get autoremove sudo add-apt-repository ppa:chris-lea/node.js sudo apt-get update sudo apt-get install nodejs 

Questo nodo installato versione 10.37 e npm 1.4.28. Successivamente, ho potuto installare i pacchetti a livello globale.

Come altri già menzionano, suggerirò di non usare “sudo apt-get” per installare il nodo o qualsiasi libreria di sviluppo. È ansible scaricare la versione richiesta da https://nodejs.org/dist/v6.9.2/ e impostare il proprio ambiente.

Raccomanderò strumenti come nvm e n , per gestire la versione del tuo nodo. È molto comodo cambiare e lavorare con questi moduli. https://github.com/creationix/nvm https://github.com/tj/n

Oppure scrivi bash di base per scaricare zip / tar, estrarre la cartella di spostamento e creare un collegamento software. Ogni volta che è necessario aggiornare, basta puntare il vecchio soft link alla nuova versione scaricata. Come ho creato per conto mio, puoi fare riferimento a: https://github.com/deepakshrma/NodeJs-4.0-Reference-Guide/blob/master/nodejs-installer.sh

 #Go to home cd ~ #run command #New Script wget https://raw.githubusercontent.com/deepakshrma/NodeJs-4.0-Reference-Guide/master/nodejs-installer.sh bash nodejs-installer.sh -v lts #here -v or --version can be sepecific to 0.10.37 or it could be latest/lts #Examples bash nodejs-installer.sh -v lts bash nodejs-installer.sh -v latest bash nodejs-installer.sh -v 4.4.2 

Soluzione semplice da qui

 curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -- sudo apt-get install nodejs 

È ansible specificare la versione cambiando il valore setup_x.x, ad esempio su setup_5.x.

Disinstalla qualsiasi versione del nodo che hai

 sudo apt-get --purge remove node sudo apt-get --purge remove nodejs-legacy sudo apt-get --purge remove nodejs 

installare nvm (Node Version Manager) https://github.com/creationix/nvm

 wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash 

Ora puoi installare qualsiasi versione del nodo che vuoi e passare tra le versioni.

Il tuo sistema non è in grado di rilevare il nodo del percorso js binario.

1. quale nodo

2. Quindi nodo di collegamento software a nodojs

 ln -s [the path of nodejs] /usr/bin/node 

Sto assumendo che / usr / bin sia nel tuo percorso di esecuzione. Quindi puoi testare digitando node o npm nella riga di comando, e tutto dovrebbe funzionare ora.

Ho risolto lo scollegamento / usr / sbin / node (che è collegato al pacchetto ax25-node), quindi ho creato un collegamento a nodejs utilizzando questo sulla riga di comando

 sudo ln -s /usr/bin/nodejs /usr/bin/node 

Perché il pacchetto come karma non funziona con il nome del nodo, ma cambiando la prima riga dello script karma dal nodo al nodojs, ma preferisco risolvere questo problema una volta per tutte

Per me la correzione stava rimuovendo i pacchetti node * e anche i pacchetti npm.

Quindi una nuova installazione come:

 sudo apt-get install autoclean sudo apt-get install nodejs-legacy npm install 

puoi creare un collegamento ln -s nodejs nodo ln -s nodejs in /usr/bin sperare che questo risolva il tuo problema.

Il problema non è nell’installer
sostituire nodejs con nodo o modificare il percorso da / usr / bin / nodejs a / usr / bin / node

Questo è il tuo nodo non è installato correttamente, in primo luogo è necessario disinstallare il nodo quindi installare di nuovo. Per installare il nodo questo può aiutarti http://array151.com/blog/nodejs-tutorial-and-set-up/

dopodiché puoi installare facilmente i pacchetti. Per installare i pacchetti questo può aiutarti

http://array151.com/blog/npm-node-package-manager/