Nie znaleziono polecenia podczas wykonywania pakietu node.js n na sudo

13

Próbuję zaktualizować moją wersję węzła do najnowszej stabilnej.

Korzystając z tego zasobu mogłem:

sudo npm install n -g

Ale kiedy spróbuję

sudo npm n stable

Dostaję:

sudo: n: command not found

Jeśli uruchomię n stable, polecenie jest obecne:

n stable
mkdir: cannot create directory ‘/usr/local/n’: Permission denied
mkdir: cannot create directory ‘/usr/local/n’: Permission denied
mkdir: cannot create directory ‘/usr/local/n’: Permission denied
mkdir: cannot create directory ‘/usr/local/n’: Permission denied

     install : node-v0.12.2
       mkdir : /usr/local/n/versions/node/0.12.2
mkdir: cannot create directory ‘/usr/local/n’: Permission denied

  Error: sudo required
JonRed
źródło
Fajny pomysł, ale kiedy to zrobię, zwraca mi „n: polecenie nie znaleziono”, mimo że upuściłem „sudo”
JonRed
sudo sh -c "ŚCIEŻKA = $ ŚCIEŻKA; n stabilna" <nowa linia> sh: 1: n: nie znaleziono
JonRed 13.04.15
Brak wyjścia. To przygnębiające :-(
JonRed
Proszę zamieścić dane wyjściowe zls /usr/local/bin/n
Helio

Odpowiedzi:

5

O dziwo, twoja npminstalacja ma globalny prefiks w folderze o nazwie npmtwojego katalogu domowego, co oznacza, że ​​każdy pakiet zainstalowany z -gflagą zostanie zainstalowany w tym folderze.

Możesz zmienić ten folder na dowolny folder znajdujący się na sudobezpiecznej ścieżce, wykonując następujące kroki:


Sposób graficzny:

  1. Otwórz Menedżera plików (alias Nautilus).
  2. Przejdź do folderu domowego.
  3. Naciśnij Ctrl+, Haby wyświetlić ukryte pliki.
  4. Otwórz plik o nazwie za .npmrcpomocą ulubionego edytora tekstu.
  5. Znajdź wiersz w tym pliku z tą zawartością:

    prefix=/home/<your_username>/npm
    
  6. Zastąp /home/<your_username>/npmbezpieczną ścieżką (np. /usr/local/bin).
  7. Po wymianie będzie wyglądać następująco:

    prefix=/usr/local/bin
    
  8. Zapisz plik.
  9. Uruchomić ponownie sudo npm install n -g

Terminal sposób:

Uruchom to polecenie:

sed -i.bak "s%^prefix=.*$%prefix=/usr/local/bin%" ~/.npmrc
Helio
źródło
Myślę, że to przybite! Pomogło mi to również teraz, gdy zaktualizowałem moją wersję npm, ale nie rozpoznałem jej. Tak, zaakceptowano i dziękuję!
JonRed
Nie pomogłem, wciąż ten sam problem: /
Luckylooke
To mi pomogło! Nie miałem pliku ~ / .npmrc, więc dodałem go i teraz działa dobrze
Kirill Gusyatin
2
Uwaga: to będzie cofnąć Opcja 2 o ustalenie uprawnień KMP
Edson Horacio Junior
23

Znalazłem rozwiązanie, które działało dla mnie:

sudo -E env "PATH=$PATH" n stable

Znaleziono to tutaj: /programming//a/29400598/861615

Luckylooke
źródło
env: n: Brak takiego pliku lub katalogu
użytkownik3311522
1
@ user3311522 czy używałeś: sudo npm install n -gprzed sudo -E env "PATH=$PATH" n stable?
Luckylooke 17.07.16
2

Wiem, że jest to forum Ubuntu, ale jestem pewien, że to pomoże komuś z tym samym problemem na temat smaków RHEL, który przejrzał tutaj Google tak jak ja. Być może działa również w Ubuntu.

Oto podejście :

ln -s /usr/local/bin/n /usr/bin/n
najszerszy
źródło
0

Aby uniknąć bałaganu z .npm-globalfolderu jak zauważył przez @Edson Horacio Junior, a na podstawie @ pohest na odpowiedź , oto jak naprawiłem go:

sudo ln -s /home/<username>/.npm-global/bin/n /usr/local/bin/n
sudo n --version # test it

Uwaga: prawdopodobnie nie zadziała to, jeśli nie wykonałeś kroków npm dotyczących zmiany domyślnego katalogu globalnego .

Gus
źródło
0

Znalazłem rozwiązanie, które działało dla mnie. Użyj nvmpakietu, aby pobrać najnowszy węzeł.

  1. Zainstaluj nvm za pomocą poniższego polecenia

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash

  1. Utwórz zmienną środowiskową, aby użyć nvm
export NVM_DIR="${XDG_CONFIG_HOME/:-$HOME/.}nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
  1. Spróbuj, nvm -vjeśli nie można go nvmzainstalować, uruchom poniższy skrypt

command -v nvm

  1. Aby zainstalować polecenie uruchamiania węzła poniżej

nvm install node

  1. Po zrestartowaniu terminala spróbuj sprawdzić wersję węzła, należy ją zaktualizować

node -v

Więcej informacji tutaj: https://github.com/nvm-sh/nvm

Jacek Góraj
źródło
0

Oznacza to, że nie masz N zainstalowanego systemu, N jest menedżerem wersji węzłów opartym na npm. Możesz go zainstalować, najpierw instalując wersję węzła, a następnie uruchamiając

sudo npm install -g n

teraz możesz zainstalować wersję na węźle za pomocą polecenia n

sudo n stable

Powyżej zainstaluje najnowszą stabilną wersję

sudo n lates

spowoduje to zainstalowanie wersji Lates

możesz także zainstalować konkretną wersję, określając wersję jak poniżej

sudo n  10.16.0
satyam chinna
źródło
0

Żadna z powyższych odpowiedzi nie działała dla mnie. To jednak:

sudo /usr/local/bin/bin/n stable
Matt
źródło
-1

Napotkałem ten sam problem, oto jak go rozwiązać:

  1. Uzyskaj prefiks konfiguracji npm
    npm config get prefix 
    // get -> ${myhome}/.npm-global
    
  2. Dodaj następujące wiersze .zshrc

    # Specify `n` to put the version of `node` in the `.n` directory.
    export N_PREFIX=${myhome}/.npm-global/.n
    
    # Make `nman` command work
    export PATH=${myhome}/.npm-global/bin:$PATH
    
    # Add this line to use `node -v` command
    export PATH=${myhome}/.npm-global/.n/bin:$PATH
    

Odniesienie: GitHub - tj / n: Zarządzanie wersjami węzłów

Uwaga edytora: Ta odpowiedź została pierwotnie napisana w języku chińskim i została przetłumaczona i zredagowana za pomocą narzędzi internetowych. Aby zobaczyć oryginalną odpowiedź, zobacz wersję 1

dingyanhe
źródło