Linux Probleme mit curl?
Guten Abend,
ich habe mir vor kurzem einen Rechner mit einer Linux Distro aufgesetzt um etwas rumzuprobieren, bin dementsprechen ein Anfänger.
Nun brauche ich für ein Plugin Nodejs und habe versucht dieses mit den Commands
curl -sL install-node.vercel.app/lts | bash
oder alternativ:
curl -sL install-node.now.sh | bash
zu installieren, diese habe ich aus einer (orginalen, vertrauenswürdigen) Anleitung.
Nachdem ich der Installation zugestimmt habe kommt aberleider nur ein paar hundert mal etwas in der Form:
/Pfadxy/datei.h Cannot open: No such file or directory
/Pfadxy/ Cannot mkdir: Permission denied
Ich führe den Befehl im Home directory aus, falls das etwas ausmacht und es scheint als wolle es sich in /usr/local installieren. Liegt da irgendwo das Problem? Es scheint ja so, als hätte ich nicht die Berechtigungen bzw. dem Command die Berechtigungen gegeben, sodass er die Installation ausführen kann, wie ändere ich das? Ein "sudo" davor reicht leider nicht.
Über Antworten freue ich mich sehr!
3 Antworten
Ja, da liegt das Problem. Der normale Nutzer hat zurecht nicht die Berechtigung, nach /usr zu schreiben. Dafür brauchst du Root Rechte, die du bekommst, wenn du sudo vor bash dran schreibst oder zunächst
sudo -i
Und dann die Befehle.
Es ist aber nicht zu empfehlen, das bei unbekannten Paketen zu machen. Versuche lieber die Installation des Plugins über npm oder yarn, wenn da verfügbar. Kenne mich mir Node.js nicht aus.
Gleich mal ausprobieren :D
Kann ich mich irgendwie aus dem root Modus wieder ausloggen und geschieht das automatisch, wenn ich die Konsole schließe und eine andere aufmache? Und ist es "konsolenübergreifend", also wenn ich mehrere Terminals gleichzeitig offen habe und das in eine eingebe, gilt das auch für die anderen?
Sorry für die vielen Fragen, aber sonst lernt man ja nichts und vielleicht kannst du ja was davon beantworten.
Du öffnest quasi einfach eine Shell mit root rechten in deiner Shell die du in deinem Terminal hast. Wenn du den Terminal zu machst sind im Normalfall beide Weg.
Wenn du in deiner root shell bist kannst du die in der Regel einfach mit exit beenden und kommst dann in die Shell zurück in der du vorher warst (und die zweite shell aufgemacht hast).
Wenn du dir unsicher bist, gib einfach whoami ein, mit dem Befehl siehst du ob du root oder du selber bist.
Problem ist nicht curl sondern das script welches danach ausgeführt wird.
sudo -i funktioniert, du könntest aber auch direkt in | sudo bash pipen, dann musst du keine root shell aufmachen.
generell kannst du in einer pipe einfach sudo nutzen und das gibt den Inhalt dann quasi an das Programm weiter welches du mit sudo aufrufst.
Was hier passiert ist du lädst ein Script aus dem Internet, ohne es zu lesen, und führst es einfach auf. Mit sudo -i oder | sudo bash dann mit kompletten Admin Rechten. So etwas steht oft in Anleitungen, würde ich aber quasi nie ausführen (ausnahmen sind isolierte sowieso nicht trusted VMs, Container usw. eventuell, aber das ist was anderes). Du kannst das auch in eine Datei, echo, less, tee was auch immer pipen, dir den Inhalt anschauen und das Script *danach* ausführen. Das macht absolut keinen unterschied, außer eben das du ungefähr weißt was dieses Script mit erhöhten Rechten auf deinem PC macht.
Erstmal danke!
Ja, dass das nicht sonderlich sicher ist, ist mir bewusst, aber da ich das System erstmal sowieso nur experimentell nutze und ich der Quelle relativ vertraue, passt das für mich. Die Admin Rechte, welche ich gebe, gelten doch "nur" dem Installationsprozess (was natürlich genauso viel anstellen kann), nicht aber dem schlussendlichen Programm, oder?
Kommt natürlich darauf an was das Installationsscript genau macht. Das könnte ja quasi alles machen, auch irgendein Programm automatisch immer beim Systemstart mit root rechten starten oder so. Aber ja, in der Regel hat das Programm welches du installierst danach erst mal keine root rechte wenn du es nicht darüber startest oder so.
Also generell hat ein Programm eben eigentlich nicht irgendwelche Rechte, sondern es kommt drauf an was der Nutzer darf der es ausführt.
Plugins kannst du dir am besten mittels NodePacketManager (https://www.npmjs.com/) Holen.
Wenn das nicht klappt, Mache es auf deinen weg nochmal,
Führe davor aber "sudo su" aus.
Erstmal vielen Dank für die Antwort!
Da ich immer noch ein paar Probleme habe schildere ich diese hier mal, in der Hoffnung dass du dich eventuell etwas auskennst (nicht tragisch wenn nicht).
Ich versuche gerade coc für neovim zu installieren, habs zuerst, wie auf ihrer github Seite beschrieben, mit curl versucht und dann den path der node bin angegeben, leider erfolglos. Nun bin ich, wie irgendwo anders geschildert, in den plugin bzw. coc Ordner navigiert und habe dort npm install versucht. Das wirft aber auch nur Fehlermeldungen:
Ein Ausschnitt:
code ERESOLVE
ERESOLVE could not resolve
...
Could not resolve dependency
Conflicting peer dependency
etc.
Weißt du an was das liegen kann? Ich stehe da komplett im dunkeln.
Unabhängig davon, nochmal danke!
Vielen Dank, hat funktioniert!
Ja, das mit den Paketen hatte ich auch gelesen bzw. ist auch selbsterklärend, aber die Quelle ist ziemlich vertrauenswürdig, weshalb ich das auch in der Frage noch hinzugefügt habe.
sudo -i ist "login", ich logge mich also als root user ein und alle folgenden Befehle werden mit dieser Berechtigung ausgeführt. Verstehe ich das so richtig?