Jak zainstalować najnowszą wersję NodeJS na Debian Jessie?

29

Właśnie zainstalowałem NodeJS i NPM na Debian Jessie, stosując zalecane podejście:

apt-get install curl
curl -sL https://deb.nodesource.com/setup | bash -
apt-get install -y nodejs

Jest to jednak dość stara wersja (węzeł v0.10.38 i npm 1.4.28).

Wszelkie sugestie dotyczące najprostszego sposobu instalowania nowszych wersji, np. Obecnie węzłem jest v0.12.4, a npm to 2.7.4? Czy instalowanie ze źródła jest moim jedynym podejściem?

MrColes
źródło

Odpowiedzi:

48

Dostępny jest skrypt instalacyjny dla Node.js (zobacz instrukcje instalacji ):

# Adapt version number to the version you want
curl -sL https://deb.nodesource.com/setup_0.12 | sudo bash -
sudo apt-get install -y nodejs

Mały komentarz: Moim skromnym zdaniem jest to bardzo zły pomysł curl | sudo bash. Używasz skryptu, którego nie sprawdziłeś z uprawnieniami roota. To zawsze lepiej, aby pobrać skrypt, przeczytać jej sprawdzić złośliwych komend, a po to , uruchom go. Ale to tylko moje dwa centy.

Instalację można wykonać ręcznie w kilku krokach zgodnie z procedurą instalacji ręcznej :

  • Usuń stary PPA (jeśli dotyczy)
  • Dodaj klucz ssh repo węzła
  • Dodaj repozytorium węzła do sources.list
  • zaktualizuj listę pakietów i zainstaluj za pomocą ulubionego narzędzia apt
embik
źródło
5
ops, użyj go, ale teraz są setup_4.x... przerobić curl i apt-get ok?
Peter Krauss
3
Ponieważ być może potrzebujesz najnowszej, rzeczywistej wersji, zalecamy odwiedzić ich witrynę: github.com/nodesource/distribution .
starszy kaznodzieja
Dlaczego nie miałbyś do tego zaufania, gdyby pochodziło ono z bezpiecznego połączenia z tego samego źródła, z którego korzystasz w
@ acidzombie24 racja, ale nawet jeśli ufasz kodowi, że nie jest zły, zawsze istnieje szansa na błąd w skrypcie, przestarzały skrypt lub twoja konfiguracja jest nieco egzotyczna. A może chcesz w jakiś sposób zamówić źródła.list, a skrypty robią inaczej. W każdym razie uważam, że jest to zła praktyka i nie należy zachęcać początkujących (nie celuję w PO, ale ogólnie). Zwłaszcza podczas wykonywania akcji ręcznie jest znacznie prostsze niż sprawdzanie skryptu.
Jérôme
12

Możesz pobrać najnowszą wersję Node ( 4.2.2) z ich strony internetowej , zamiast używać pakietu, który zapewnia Debian (0.12 ). Oznacza to również, że masz zaktualizowaną wersję npm. Nie miałem żadnych problemów z zrobieniem tego na Jessie.

Pobierz .tar.gzz ich strony internetowej i cddo tego katalogu (nazwa pliku jest oczywiście specyficzna dla mojego pobierania):

$ tar -xzvf node-v4.2.2-linux-x64.tar.gz
$ cd node-v4.2.2-linux-x64

Jeśli zajrzysz do folderu bin, zobaczysz pliki binarne potrzebne dla węzła i npm:

$ ls node-v4.2.2-linux-x64/bin 
node  npm

Teraz zmieniłem nazwę folderu na coś łatwiejszego do śledzenia

$ mv node-v4.2.2-linux-x64 nodejs

Jeśli nie chcesz aktualizować węzła, po prostu przenieś ten folder do jednej z lokalizacji bin (używam ~/bin) i pomiń następny krok.

Jeśli chcesz mieć możliwość łatwej aktualizacji wersji swojego węzła, przenieś nodejsfolder gdzieś, gdzie możesz go śledzić ( ~/nodejsbyć może?). Następnie chcesz utworzyć dowiązanie symboliczne do jednej z lokalizacji bin, aby pliki binarne mogły być używane z powłoki bez zapisywania pełnej ścieżki.

Zakładając, że umieścisz folder nodejs w katalogu domowym, możesz teraz:

$ ln -s ~/nodejs ~/bin/nodejs

Oczywiście może to być dowolne miejsce w pojemniku. Użyłem mojego katalogu domowego, więc jest on dostępny tylko dla mnie, ale możesz również łatwo:

$ ln -s ~/nodejs /usr/local/bin/nodejs

Spowoduje to utworzenie dowiązania symbolicznego z folderu nodejs w katalogu domowym do katalogu bin (co oznacza, że ​​wszelkie aktualizacje katalogu w folderze domowym są odzwierciedlane w folderze w innym miejscu za pośrednictwem łącza symbolicznego ). Teraz chcesz się upewnić, że folder bin zawierający katalog nodejs znajduje się w $PATHzmiennej środowiskowej , więc otwórz ~/.profileplik w katalogu domowym. Chcesz dodać to na dole tego pliku (zmieniając ścieżkę, jeśli nie używałeś ~/bin/):

# Set the node PATH if it exists
if [ -d "$HOME/bin/nodejs/bin" ] ; then
    PATH="$HOME/bin/nodejs/bin:$PATH"
fi

Spowoduje to sprawdzenie, czy katalog istnieje, a jeśli tak, to dodaj go do ŚCIEŻKI. Używam, zshwięc właśnie zaktualizowałem wiersz w ~/.zshrc:

export PATH="$HOME/bin/nodejs/bin:$PATH"

Zamknij terminal i ponownie otwórz, a następnie wpisz następujące polecenie, aby sprawdzić:

$ node -v
v4.2.2

$ npm -v
2.14.7

Utworzenie łącza sym oznacza teraz, że w przyszłości możesz pobrać nowy .tar.gzze strony internetowej Nodejs, wyodrębnić go ~/nodejs, a pliki binarne dostępne dla twojej $PATH zmiennej środowiskowej są automatycznie aktualizowane.

Luke
źródło
Ten działał dla mnie, ponieważ dał również działający npm.
artfulrobot
4

w moim przypadku wykonałem zalecane polecenia powłoki:

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

problem polegał na tym, że skrypt bash nie zaktualizował mojego przypinania APT, więc apt-get zainstalował domyślny, stary pakiet Debiana ze źródła debian.org, a nie z nodesource.com

sprawdź, czy to jest problem z apt-cache policy nodejs. powinieneś zobaczyć coś takiego Candidate: 6.10.2-1nodesource1~jessie1a nieCandidate: 0.10.29~dfsg-2

aby ustawić priorytet pin dla źródła węzłów, dodaj plik o /etc/apt/preferences.d/nazwie nodelub cokolwiek z tą zawartością:

Package: nodejs
Pin: release o=Node Source
Pin-Priority: 1200

zapisz i biegnij apt-get cache update. następnie spróbuj apt-cache policy nodejsponownie. jeśli kandydat wygląda poprawnie, zainstaluj jak zwykleapt-get install nodejs

georgiecasey
źródło
apt-get cache updatewróciłem E: Invalid operation cachewięc pobiegłem sudo aptitude update.
user394
2

Możesz postępować zgodnie z oficjalną dokumentacją node.js, aby zainstalować najnowszą wersję za pomocą menedżera pakietów.

Node.js v6:

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

Node.js v7:

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

Działając na tym ostatnim, w moim systemie zainstalowano węzeł v7.5.0 i npm v4.1.2. Zarówno nodei nodejsaliasy zostały włączone dla Węzła automatycznie.

mrkvon
źródło