close Warning: Can't synchronize with repository "keplertools" (/srv/svn/keplertools does not appear to be a Subversion repository.). Look in the Trac log for more information.

Opened 5 years ago

Closed 5 years ago

#3947 closed Defekt (erledigt)

proxy erlaubt nicht pip install auf raspberrypis

Reported by: Stephan Richter Owned by: bau
Priority: schnell erledigen Milestone: Schuljahr 2020/21
Component: Hardware: Netzwerktechnik Severity: beeinträchtigt den Unterricht vieler Lehrer
Keywords: Cc: Stephan Richter, Rüdiger Kupper

Description

Ziel: Installation von python-Paketen auf den RaspberryPis

Vorgehen: LAN-Verbindung; setzen von http_proxy und https_proxy env-Variablen; python3 -m pip install mh-z19

Erwartung: Das Paket wird installiert.
Ergebnis: Fehlermeldungen wie "Name or Service not known" bzw. "connection refused"

Aus der Seite AdminProxy wird mir nicht wirklich klar, welcher der vielen Proxies hier geeignet/nötig wäre. Ich habe also alle ausprobiert, sowohl mit den env Variablen, als auch mit proxychains, als auch mit Einstellungen des Proxies in der pip.config. Immer das gleiches resultat.

Ergänzungen:

  • apt-get funktioniert über den proxysw; Browsen funktioniert
  • Wenn ich mit dem Gerät im Stützpunkt U3 an die offenen Ports gehe, kann ich nicht mal browsen. Chrome sagt, ich soll die Proxy-Einstellungen überprüfen. Mir ist aber nicht klar, wo die im RaspberryPI gesetzt sind?

Change History (20)

comment:1 by bau, 5 years ago

proxysw ist dafür gedacht. Für Browsen ist der proxys oder proxyl verantwortlich.
Da der aber ohne Auth läuft sind die Quellen einzeln gewhitelistet.
Chrome benutzt die Variablen http_proxy und https_proxy - diese werden vor dem Start (oder beim Start?) gesetzt

comment:2 by Rüdiger Kupper, 5 years ago

Ich kenne das Problem, es tritt immer dann auf, wenn Software-Installationen nicht über apt laufen. In der apt.conf ist nämlich der proxysw eingetragen. Zweischrittige Vorgänge, die z.B. Ein deb-Paket ibstallieren, was dann etwas über wget nachlädt, schlagen also fehl.
Für pip gilt das genauso.

comment:3 by Rüdiger Kupper, 5 years ago

Dein Ansatz, den proxysw in die pip.conf einzutragen, ist da eigentlich genau richtig. Es scheiteert dann nur daran, dass auch der proxysw nicht komplett offen ist. Auf der Maschine läuft ein squid, in dem nur bestimmte Quelladressen geöffnet sind. (Alles, wo wir Software her beziehen.) Dort muss aüso die Quelladreese für pip eingetragen werden (was ist das, python.org?)
Dann sollte pip funktionieren (sofern die Module nicht wieder „privat“ etwas nachladen wollen.)

comment:4 by Rüdiger Kupper, 5 years ago

Auf den proxysw kommst Du mit Deinen Zugangsdaten nicht, aber wenn Du uns die nötigen Qurlladressen schreibst, können wir das da schnell eintragen.

comment:5 by Rüdiger Kupper, 5 years ago

Sonst gilt immer die „schnell-und-schmutzig“-Lösung, die Umgebungsvarisblen http_proxy und https_proxy auf den Lehrerproxy zu setzen (der ist komplett transparent) und zwar komplett mit Passwort im Klartext, denn die meisten Tools sind leider zu dumm, um nach dem Passwort zu fragen.
Also:

export http_proxy=http://kuerzel:passwort@proxyl.kg-fds.de:8080
export https_proxy=http://kuerzel:passwort@proxyl.kg-fds.de:8080

Bitte beachten: rechts vom Gleichzeichen steht beide male nur http ohne s.

Wenn es Dir zu heikel ist, Dein Passwort auf der Kommndozeile im Klartext zu tippen, kanndt Du unseren Testlehrer dazu verwenden. Passwort schreibe ich über schul.cloud.

Last edited 5 years ago by Rüdiger Kupper (previous) (diff)

in reply to:  5 ; comment:6 by Stephan Richter, 5 years ago

Replying to kup:

Sonst gilt immer die „schnell-und-schmutzig“-Lösung, die Umgebungsvarisblen http_proxy und https_proxy auf den Lehrerproxy zu setzen (der ist komplett transparent) und zwar komplett mit Passwort im Klartext, denn die meisten Tools sind leider zu dumm, um nach dem Passwort zu fragen.
Also:

export http_proxy=http://kuerzel:passwort@proxyl.kg-fds.de:8080
export https_proxy=http://kuerzel:passwort@proxyl.kg-fds.de:8080

Bitte beachten: rechts vom Gleichzeichen steht beide male nur http ohne s.

Wenn es Dir zu heikel ist, Dein Passwort auf der Kommndozeile im Klartext zu tippen, kanndt Du unseren Testlehrer dazu verwenden. Passwort schreibe ich über schul.cloud.

Genau das habe ich versucht (mit allen 3 Proxies probiert), hat aber nicht funktioniert. Allerdings ist der proxyl im trac-wiki mit Port 3128 angegeben. Gehen beide, oder ist da ein Fehler?

in reply to:  4 comment:7 by Stephan Richter, 5 years ago

Replying to kup:

Auf den proxysw kommst Du mit Deinen Zugangsdaten nicht, aber wenn Du uns die nötigen Qurlladressen schreibst, können wir das da schnell eintragen.

Soweit ich es verstehe zieht sich pip die Pakete von ​https://pypi.org/

Der tar-Ball liegt aber anscheinend woanders. In meinem Fall: ​https://files.pythonhosted.org/packages/ca/f6/0f4fb7cdd172cb8c1924eb5f095228dec1753dcd7a6b7f08792c9b3dbd83/mh_z19-3.0.2.tar.gz

Last edited 5 years ago by Stephan Richter (previous) (diff)

in reply to:  1 comment:8 by Stephan Richter, 5 years ago

Replying to bau:

proxysw ist dafür gedacht. Für Browsen ist der proxys oder proxyl verantwortlich.
Da der aber ohne Auth läuft sind die Quellen einzeln gewhitelistet.
Chrome benutzt die Variablen http_proxy und https_proxy - diese werden vor dem Start (oder beim Start?) gesetzt

Wenn ich die beiden Variablen entleere und Chrome neustarte, versucht er weiterhin über den proxy zu gehen. Wenn ich den RaspberryPi neustarte, sind die Variablen wieder gesetzt!? Irgendwie unhandlich.... .

comment:9 by Stephan Richter, 5 years ago

Cc: Stephan Richter added

comment:10 by Rüdiger Kupper, 5 years ago

Replying to bau:

Chrome benutzt die Variablen http_proxy und https_proxy -

Achtung, ich glaube, Chrome nutzt diese envs nicht (und weicht damit von jedem Linux-Standard ab). Stattdessen will der den Proxy auf der Kommandozeile übergebeben haben (siehe Manpage), oder in der Systemkonfig gesetzt (wo es aber keine Möglichkeit gibt, das PW einzutragen, für uns also unbrauchbar). Sicher ein „Sicherheutsfeature“. Wuhahahahaha, Google redet über „Sicherheit“, wahaha :-).

diese werden vor dem Start (oder beim Start?) gesetzt

Info:
In einer der rc-Dateien für den graphischen Desktop, .xinitrc oder so was, damit auch die über das GUI gestarteten Programme davon wissen. Habe ewig rumgesucht, um eine passende Stelle zu finden (nach der Anmeldung, weil nutzerabhängig, doch vor dem Start der Desktopumgebung).
Doch leider funktionieren viele Programme trotzdem nicht, weil die wenigsten überhaupt darauf ausgelegt sind, nach dem PW zu fragen. Scheinbar sind wir mit unserem passwortgeschützten Proxy echte Exoten. Proxy ja doch authentifizierte Proxys scheinen die wenigsten Entwickler zu kennen. Wäre alles kein Problem, wenn man in den User-Prefs von GNOME sein PW eintragen könnte. Wird aber nicht implementiert, obgleich seit vielen Jahren gewünscht. Die Selbstherrlichkeit der GNOME-Entwickler ist ja hinlänglich bekannt, die glauben, sie wissen, wss ein Nutzer braucht und was nicht. Nervt mich inzwischen ziemlich.

comment:11 by Rüdiger Kupper, 5 years ago

Cc: Rüdiger Kupper added

Ja, sorry, der Reporter wird neuerdings nicht mehr benachrichtigt, wenn er nicht auf der CC-Liste steht (Wunsch der Kollegen). Muss ich mich auch erst dran gewöhnen.

in reply to:  6 comment:12 by Rüdiger Kupper, 5 years ago

Replying to rich:

Replying to kup:

Sonst gilt immer die „schnell-und-schmutzig“-Lösung, die Umgebungsvarisblen http_proxy und https_proxy auf den Lehrerproxy zu setzen (der ist komplett transparent) und zwar komplett mit Passwort im Klartext, denn die meisten Tools sind leider zu dumm, um nach dem Passwort zu fragen.
Also:

export http_proxy=http://kuerzel:passwort@proxyl.kg-fds.de:8080
export https_proxy=http://kuerzel:passwort@proxyl.kg-fds.de:8080

Müssten meines Wissens beide gehen doch ich nutze immer 8080 (weil ich mir die andere Zahl nicht behalten kann.)
Wenn es dann nicht geht, kann es sein, dass die Software die env gar nicht benutzt, so wie Chrome.

comment:13 by Rüdiger Kupper, 5 years ago

Oder pip nutzt ftp, dann musst Du auch noch ftp_proxy setzen.

comment:14 by Stephan Richter, 5 years ago

Ich habe mir die Geräte jetzt mit nach Hause genommen:

  • wenn die env-Variablen gesetzt sind, scheitert die Installation über pip --> er nutzt also die env-Variablen
  • wenn ich die Variablen leere, dann installiert er sauber

zu Chrome: Wenn ich (zu Hause) nach dem leeren der Variablen chromium aus der Konsole starte, habe ich wie erwartet Internet. Wenn ich aber aus der GUI starte, dann versucht er weiterhin den Proxy zu nutzen, da er die Variablen vermutlich von X11 erbt und dieser sie beim Systemstart bekommen hat.

in reply to:  14 comment:15 by Rüdiger Kupper, 5 years ago

Replying to rich:

Ich habe mir die Geräte jetzt mit nach Hause genommen:

  • wenn die env-Variablen gesetzt sind, scheitert die Installation über pip --> er nutzt also die env-Variablen

Dann verstehe ich nicht, woran es hängt. Doch schreib doch mal die URL, die frrigeschaltet werden sollen.

  • wenn ich die Variablen leere, dann installiert er sauber

zu Chrome: Wenn ich (zu Hause) nach dem leeren der Variablen chromium aus der Konsole starte, habe ich wie erwartet Internet. Wenn ich aber aus der GUI starte, dann versucht er weiterhin den Proxy zu nutzen, da er die Variablen vermutlich von X11 erbt und dieser sie beim Systemstart bekommen hat.

Ja, das Verhalten von Chrome kann ich so bestätigen. Wir gesagt, entspricht nicht dem Standard. Ich würde eigentüich gerne wieder auf FOSS-Browser umsteigen. Nur Firefox ist einfach für mich nicht wartbar. Gibt ja aber viele andere.

comment:16 by Stephan Richter, 5 years ago

Die Quell-URL scheint vom Paket abzuhängen. Aus dem Install-log für mein Modul (und dessen Abhängigkeiten):

  • pythonhosted.org
  • piwheels.org

Es gibt vermutlich noch mehr. Dazu auch: ​https://stackoverflow.com/questions/14277088/what-url-should-i-authorize-to-use-pip-behind-a-firewall

comment:17 by Rüdiger Kupper, 5 years ago

Hm, das ist natürlich denkbar dumm für Firewalls, wenn die Daten prinzipiell von überall her kommen können. Eigentlich bräuchte man dazu einen „vertrauenswürdigen Proxy“ über den die Kommunikation immer laufen kann.
pythonhosted.org ist da ja schon msl ein Anfang, viele Pakete werden ja sicher dort liegen.

Ich trage die URLs mal ein und dann müssen wir halt bei Bedarf nachlegen.

Alternative: Viele wichtige Python-Module gibt es auch als .deb-Pakete, bislang habe ich dort alles gefunden, was ich wirklich brauchte.

comment:18 by Stephan Richter, 5 years ago

Das Problem in der NWT sind die Sensoren/Aktuatoren. Für viele gibt es fertige Module, mit denen man diese ansteuern kann - in dem Fall war es ein CO2 Sensor.

Klar kann man die auch per Hand installieren, aber meistens hängen dort Abhängigkeiten dran. Diese einzeln zu finden und dann zu hoffen, dass alle per deb installierbar sind (sonst wieder per Hand) ist zeitraubend und an sich ja unnötig,

Gut, dann probiere ich es nochmal mit dem proxysw. Danke Rüdiger!

comment:19 by Rüdiger Kupper, 5 years ago

pythonhosted.orf und piwheels.org müssten nun im proxysw frei sein.

Version 0, edited 5 years ago by Rüdiger Kupper (next)

comment:20 by Stephan Richter, 5 years ago

Resolution: → erledigt
Status: new → closed

Installation von Python Modulen ist nun möglich:

  • In /etc/pip.conf muss der proxysw eingetragen werden
  • die env Vatriablen http_proxy und https_proxy müssen leer sein (anscheinend gewinnen die gegen die pip-conf)

Alternativ ändert man die env-Variablen auf den proxysw. Das wird aber nach jedem Neustart überschrieben.

Note: See TracTickets for help on using tickets.