verstrubelte Linux-Installation, Probleme mit NPM

Begonnen von MarkusAutomaticus, 11 Januar 2020, 16:00:07

Vorheriges Thema - Nächstes Thema

MarkusAutomaticus

Hallo zusammen,

mit großer Freude habe ich neulich vom https://wiki.fhem.de/wiki/FHEM_Connector_f%C3%BCr_Amazon_Alexa für Amazon Alexa gelesen und mich gleich an die Installation gemacht.

Leider habe ich Probleme mit meinem Betriebsystem.
Ich setze derzeit folgende Version ein:


markus@Jarvis4:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.6 LTS
Release:        16.04
Codename:       xenial


nodejs konnte ich mit Hilfe von folgendem Artikel installieren:

https://forum.fhem.de/index.php/topic,104021.0.html

Ich habe jetzt folgende Version:

markus@Jarvis4:~$ nodejs -v
v8.17.0


Allerdings funktioniert NPM bei mir überhaupt nicht:


markus@Jarvis4:~$ npm -v
/usr/local/bin/node: 1: /usr/local/bin/node: Syntax error: word unexpected (expecting ")")



besagtes Verzeichnis enthält folgendes:


markus@Jarvis4:/usr/local/bin$ ls -l
insgesamt 26712
-rwxr-xr-x 1 root root 27300456 Mär 18  2018 node
lrwxrwxrwx 1 root root       38 Mär 18  2018 npm -> ../lib/node_modules/npm/bin/npm-cli.js
-rwxr-xr-x 1 root root    47441 Dez  1  2017 speedtest-cli


und wenn ich versuche npm zu installieren bekomme ich folgende Meldung:


markus@Jarvis4:/usr/local/bin$ sudo apt-get install npm
[sudo] Passwort für markus:
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
Einige Pakete konnten nicht installiert werden. Das kann bedeuten, dass
Sie eine unmögliche Situation angefordert haben oder, wenn Sie die
Unstable-Distribution verwenden, dass einige erforderliche Pakete noch
nicht erstellt wurden oder Incoming noch nicht verlassen haben.
Die folgenden Informationen helfen Ihnen vielleicht, die Situation zu lösen:

Die folgenden Pakete haben unerfüllte Abhängigkeiten:
npm : Hängt ab von: nodejs soll aber nicht installiert werden
       Hängt ab von: node-abbrev (>= 1.0.4) soll aber nicht installiert werden
       Hängt ab von: node-ansi (>= 0.3.0-2) soll aber nicht installiert werden
       Hängt ab von: node-ansi-color-table soll aber nicht installiert werden
       Hängt ab von: node-archy soll aber nicht installiert werden
       Hängt ab von: node-block-stream soll aber nicht installiert werden
       Hängt ab von: node-fstream (>= 0.1.22) soll aber nicht installiert werden
       Hängt ab von: node-fstream-ignore soll aber nicht installiert werden
       Hängt ab von: node-github-url-from-git soll aber nicht installiert werden
       Hängt ab von: node-glob (>= 3.1.21) soll aber nicht installiert werden
       Hängt ab von: node-graceful-fs (>= 2.0.0) soll aber nicht installiert werden
       Hängt ab von: node-inherits soll aber nicht installiert werden
       Hängt ab von: node-ini (>= 1.1.0) soll aber nicht installiert werden
       Hängt ab von: node-lockfile soll aber nicht installiert werden
       Hängt ab von: node-lru-cache (>= 2.3.0) soll aber nicht installiert werden
       Hängt ab von: node-minimatch (>= 0.2.11) soll aber nicht installiert werden
       Hängt ab von: node-mkdirp (>= 0.3.3) soll aber nicht installiert werden
       Hängt ab von: node-gyp (>= 0.10.9) soll aber nicht installiert werden
       Hängt ab von: node-nopt (>= 3.0.1) soll aber nicht installiert werden
       Hängt ab von: node-npmlog soll aber nicht installiert werden
       Hängt ab von: node-once soll aber nicht installiert werden
       Hängt ab von: node-osenv soll aber nicht installiert werden
       Hängt ab von: node-read soll aber nicht installiert werden
       Hängt ab von: node-read-package-json (>= 1.1.0) soll aber nicht installiert werden
       Hängt ab von: node-request (>= 2.25.0) soll aber nicht installiert werden
       Hängt ab von: node-retry soll aber nicht installiert werden
       Hängt ab von: node-rimraf (>= 2.2.2) soll aber nicht installiert werden
       Hängt ab von: node-semver (>= 2.1.0) soll aber nicht installiert werden
       Hängt ab von: node-sha soll aber nicht installiert werden
       Hängt ab von: node-slide soll aber nicht installiert werden
       Hängt ab von: node-tar (>= 0.1.18) soll aber nicht installiert werden
       Hängt ab von: node-underscore soll aber nicht installiert werden
       Hängt ab von: node-which soll aber nicht installiert werden
E: Probleme können nicht korrigiert werden, Sie haben zurückgehaltene defekte Pakete.


Spätestens hier bi ich mit meinem dürftigen Linux-Latein am Ende.
Kann mir bitte jemand aus diesem Schlammassel heraushelfen?

Viele Grüße
Markus
FHEM 5.8 |intel NUC Core i3: Ubuntu 22.04 | z-Wave: Aeon Labs USB Stick | Jeelink (v3c): LaCrosse-Sensoren | DuoFern Stick: Rademacher Gurtwickler | Philips Hue Bridge | CUNX: HomeMatic, EnOcean-Pigator

Otto123

Hallo Markus,

eigentlich funktioniert die Installation von der offiziellen Seite ganz easy
https://github.com/nodesource/distributions/blob/master/README.md
dabei wird npm ordentlich mitinstalliert.
Ich würde jetzt an Deiner Stelle:
das alte nodejs löschen (purge)
Auf Fehlerfreiheit des apt Systems achten, ich weiß leider nicht genau was man alles wie prüfen kann
Vielleicht sowas wie apt-get install -f versuchen

Und wenn alles ohne Fehler ist nochmal diesen Weg versuchen:
sudo su
# Using Debian, as root
curl -sL https://deb.nodesource.com/setup_10.x | bash -
apt-get install nodejs


Und Ubuntu 16.04 musst Du auch irgendwann aktualisieren ;) das kommt immerhin ins 4 Jahr

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Wernieman

Beim bereinigen die Manuell installierten Sourcen für npm (zu finden unter /etc/apt/source.list.d/) löschen!

Dein Problem dürfte daran liegen, das Du manuell die Sourcen für 18.04 gesetzt hast, aber ein 16.04 hast.

Ansonsten kann ich Otto nur zustimmen ... mit Ausnahme des Supportzeitraumes: April 2021

- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

MarkusAutomaticus

Hallo zusammen,

vielen Dank für eure Antworten.

Wenn ich Wernieman richtig verstehe, dann lösche ich nodesource.list in /etc/apt/sources.list.d


root@Jarvis4:/etc/apt/sources.list.d# ls -l
insgesamt 16
-rw-r--r-- 1 root root 138 Dez 29  2017 atareao-ubuntu-sunflower-xenial.list
-rw-r--r-- 1 root root 138 Dez 29  2017 atareao-ubuntu-sunflower-xenial.list.save
-rw-r--r-- 1 root root 140 Dez 29  2017 iconnor-ubuntu-zoneminder-xenial.list
-rw-r--r-- 1 root root 108 Jan 11 15:34 nodesource.list


und mache dann das was  Otto vorgeschlagen hat, ja?

Gruß
Markus
FHEM 5.8 |intel NUC Core i3: Ubuntu 22.04 | z-Wave: Aeon Labs USB Stick | Jeelink (v3c): LaCrosse-Sensoren | DuoFern Stick: Rademacher Gurtwickler | Philips Hue Bridge | CUNX: HomeMatic, EnOcean-Pigator

MarkusAutomaticus

So, jetzt habe ich das so gemacht und leider immer noch den gleichen Fehler:


markus@Jarvis4:/etc/apt/sources.list.d$ sudo su
[sudo] Passwort für markus:
root@Jarvis4:/etc/apt/sources.list.d# ls -l
insgesamt 16
-rw-r--r-- 1 root root 138 Dez 29  2017 atareao-ubuntu-sunflower-xenial.list
-rw-r--r-- 1 root root 138 Dez 29  2017 atareao-ubuntu-sunflower-xenial.list.save
-rw-r--r-- 1 root root 140 Dez 29  2017 iconnor-ubuntu-zoneminder-xenial.list
-rw-r--r-- 1 root root 108 Jan 11 15:34 nodesource.list
root@Jarvis4:/etc/apt/sources.list.d# ^C
root@Jarvis4:/etc/apt/sources.list.d# rm nodesource.list
root@Jarvis4:/etc/apt/sources.list.d# ls -l
insgesamt 12
-rw-r--r-- 1 root root 138 Dez 29  2017 atareao-ubuntu-sunflower-xenial.list
-rw-r--r-- 1 root root 138 Dez 29  2017 atareao-ubuntu-sunflower-xenial.list.save
-rw-r--r-- 1 root root 140 Dez 29  2017 iconnor-ubuntu-zoneminder-xenial.list
root@Jarvis4:/etc/apt/sources.list.d# apt-get purge nodejs
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
Die folgenden Pakete werden ENTFERNT:
  nodejs*
0 aktualisiert, 0 neu installiert, 1 zu entfernen und 0 nicht aktualisiert.
Nach dieser Operation werden 70,5 MB Plattenplatz freigegeben.
Möchten Sie fortfahren? [J/n] J
(Lese Datenbank ... 229534 Dateien und Verzeichnisse sind derzeit installiert.)
Entfernen von nodejs (8.17.0-1nodesource1) ...
Trigger für man-db (2.7.5-1) werden verarbeitet ...
root@Jarvis4:/etc/apt/sources.list.d# apt-get install -f
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
0 aktualisiert, 0 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
root@Jarvis4:/etc/apt/sources.list.d# apt-get update
OK:1 http://de.archive.ubuntu.com/ubuntu xenial InRelease
OK:2 http://ppa.launchpad.net/atareao/sunflower/ubuntu xenial InRelease
Holen:3 http://de.archive.ubuntu.com/ubuntu xenial-updates InRelease [109 kB]
OK:4 https://download.docker.com/linux/ubuntu xenial InRelease
OK:5 http://ppa.launchpad.net/iconnor/zoneminder/ubuntu xenial InRelease
Holen:6 http://de.archive.ubuntu.com/ubuntu xenial-backports InRelease [107 kB]
Holen:7 http://security.ubuntu.com/ubuntu xenial-security InRelease [109 kB]
Es wurden 325 kB in 0 s geholt (360 kB/s).
Paketlisten werden gelesen... Fertig
root@Jarvis4:/etc/apt/sources.list.d# apt-get upgrade
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
Paketaktualisierung (Upgrade) wird berechnet... Fertig
0 aktualisiert, 0 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
root@Jarvis4:/etc/apt/sources.list.d# apt-get autoremove
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
0 aktualisiert, 0 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
root@Jarvis4:/etc/apt/sources.list.d# curl -sL https://deb.nodesource.com/setup_10.x | bash -

## Installing the NodeSource Node.js 10.x repo...


## Populating apt-get cache...

+ apt-get update
OK:1 http://de.archive.ubuntu.com/ubuntu xenial InRelease
OK:2 http://de.archive.ubuntu.com/ubuntu xenial-updates InRelease
OK:3 http://ppa.launchpad.net/atareao/sunflower/ubuntu xenial InRelease
OK:4 http://de.archive.ubuntu.com/ubuntu xenial-backports InRelease
OK:5 https://download.docker.com/linux/ubuntu xenial InRelease
OK:6 http://ppa.launchpad.net/iconnor/zoneminder/ubuntu xenial InRelease
OK:7 http://security.ubuntu.com/ubuntu xenial-security InRelease
Paketlisten werden gelesen... Fertig

## Confirming "xenial" is supported...

+ curl -sLf -o /dev/null 'https://deb.nodesource.com/node_10.x/dists/xenial/Release'

## Adding the NodeSource signing key to your keyring...

+ curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add -
OK

## Creating apt sources list file for the NodeSource Node.js 10.x repo...

+ echo 'deb https://deb.nodesource.com/node_10.x xenial main' > /etc/apt/sources.list.d/nodesource.list
+ echo 'deb-src https://deb.nodesource.com/node_10.x xenial main' >> /etc/apt/sources.list.d/nodesource.list

## Running `apt-get update` for you...

+ apt-get update
OK:1 http://de.archive.ubuntu.com/ubuntu xenial InRelease
OK:2 http://de.archive.ubuntu.com/ubuntu xenial-updates InRelease
OK:3 http://ppa.launchpad.net/atareao/sunflower/ubuntu xenial InRelease
OK:4 http://de.archive.ubuntu.com/ubuntu xenial-backports InRelease
Holen:5 https://deb.nodesource.com/node_10.x xenial InRelease [4.584 B]
OK:6 https://download.docker.com/linux/ubuntu xenial InRelease
OK:7 http://ppa.launchpad.net/iconnor/zoneminder/ubuntu xenial InRelease
OK:8 http://security.ubuntu.com/ubuntu xenial-security InRelease
Holen:9 https://deb.nodesource.com/node_10.x xenial/main amd64 Packages [766 B]
Es wurden 5.350 B in 0 s geholt (5.421 B/s).
Paketlisten werden gelesen... Fertig

## Run `sudo apt-get install -y nodejs` to install Node.js 10.x and npm
## You may also need development tools to build native addons:
     sudo apt-get install gcc g++ make
## To install the Yarn package manager, run:
     curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
     echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
     sudo apt-get update && sudo apt-get install yarn


root@Jarvis4:/etc/apt/sources.list.d# apt-get install nodejs
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
Die folgenden NEUEN Pakete werden installiert:
  nodejs
0 aktualisiert, 1 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
Es müssen 16,2 MB an Archiven heruntergeladen werden.
Nach dieser Operation werden 81,1 MB Plattenplatz zusätzlich benutzt.
Holen:1 https://deb.nodesource.com/node_10.x xenial/main amd64 nodejs amd64 10.18.1-1nodesource1 [16,2 MB]
Es wurden 16,2 MB in 1 s geholt (10,7 MB/s).
Vormals nicht ausgewähltes Paket nodejs wird gewählt.
(Lese Datenbank ... 225512 Dateien und Verzeichnisse sind derzeit installiert.)
Vorbereitung zum Entpacken von .../nodejs_10.18.1-1nodesource1_amd64.deb ...
Entpacken von nodejs (10.18.1-1nodesource1) ...
Trigger für man-db (2.7.5-1) werden verarbeitet ...
nodejs (10.18.1-1nodesource1) wird eingerichtet ...
root@Jarvis4:/etc/apt/sources.list.d# npm -v
/usr/local/bin/node: 1: /usr/local/bin/node: Syntax error: word unexpected (expecting ")")



Was mich stutzig macht, ist die ziemlich große Datei namens node unter "/usr/local/bin"


root@Jarvis4:/usr/local/bin# ls -l
insgesamt 26712
-rwxr-xr-x 1 root root 27300456 Mär 18  2018 node
lrwxrwxrwx 1 root root       38 Mär 18  2018 npm -> ../lib/node_modules/npm/bin/npm-cli.js
-rwxr-xr-x 1 root root    47441 Dez  1  2017 speedtest-cli


Ist da alles Ausführbare drin?

Sorry, aber Linux ist für mich ein bömisches Dorf :-[
FHEM 5.8 |intel NUC Core i3: Ubuntu 22.04 | z-Wave: Aeon Labs USB Stick | Jeelink (v3c): LaCrosse-Sensoren | DuoFern Stick: Rademacher Gurtwickler | Philips Hue Bridge | CUNX: HomeMatic, EnOcean-Pigator

Wernieman

1)
nach dem löschen der "source" hättest Du auch die interne DB updaten müssen
apt-get update
Sofern ich gesehen habe, hast Du gleich ein "upgrade" und damit das Problem wieder ...

2) Brauchst Du wirklich so viele verschiedene sourcen?
-rw-r--r-- 1 root root 138 Dez 29  2017 atareao-ubuntu-sunflower-xenial.list
-rw-r--r-- 1 root root 138 Dez 29  2017 atareao-ubuntu-sunflower-xenial.list.save
-rw-r--r-- 1 root root 140 Dez 29  2017 iconnor-ubuntu-zoneminder-xenial.list

Das sagt mir aktuell nichts ....
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

MarkusAutomaticus

Hallo Wernieman,

Danke für deine Geduld! :)

Also als erstes mal alle sourcen unter etc/apt/sources.list.d wegsichern.
Dann alle Dateien unter etc/apt/sources.list.d löschen.

Dann

apt-get update


Dadurch, wird dann die interne DB bereinigt.

Dann


apt-get purge nodejs


Dann


apt-get install -f


Dann

sudo su
# Using Debian, as root
curl -sL https://deb.nodesource.com/setup_10.x | bash -
apt-get install nodejs


Und jetzt müsste ich mit npm weiterarbeiten können, richtig?

Gruß
Markus
FHEM 5.8 |intel NUC Core i3: Ubuntu 22.04 | z-Wave: Aeon Labs USB Stick | Jeelink (v3c): LaCrosse-Sensoren | DuoFern Stick: Rademacher Gurtwickler | Philips Hue Bridge | CUNX: HomeMatic, EnOcean-Pigator

Wernieman

Teoretisch ja ...
Allerdings würde ich Dir vorschlagen:
apt-get update
apt-get upgrade
apt-get purge nodejs
apt-get autoremove
apt-get autoclean
apt-get purge $(dpkg --get-selections | grep deinstall | cut -f1 | xargs)


Hinweis:
Ich habe mit Absicht nirgendwo den Schalter "-y" gesetzt, man sollte versuchen die Ausgaben, die man Bestätigt, zu lesen.

Hintergrund:
durch autoremove werden die überflüssigen Packete nicht gepurged, sondern nur "entfernt". Durch die letzte Zeile werden diese definitiv auch gepurged und damit bereinigt. Durch autoremove werden auch die Installationspakete entfernt, müssen (und sollen) in diesem Falle aber neu geladen werden. Damit verlängert sich die Installation durch das Downloaden der Pakete,  aber es ist sauberer.

Eventuell könntest Du vor dem installieren von nodejs gucken, ob noch irgendwo "Reste" zu finden sind:
find / -name "*nodejs*"

Edit:
Und bitte alles als root .....
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html