Pip install in lmn7

Hallo,

ich hab gerade ein Update gemacht: linuxmuster-webui wurde von 1.0.48-1 auf 1.0.50-1 upgedatet.
Da stand in Gelb dabei:
“You are using pip Version 18.1, however version 19.0.3 is availible. You should consider upgrading via the “pip install --upgrade pip” command.”

Soll ich?

LG

Holger

Hallo Holger,

spricht eigentlich nichts dagegen. pip ist für Python Module ja so etwas wie apt für deb Pakete.

vG Stephan

Hallo Holger,

zefanja hat schon erklärt, was pip macht.
Du kannst den upgrade machen, wenn die Meldung dich stört, aber das ist nicht notwendig.

Gruß

Hallo Arnaud,

ich bin grade dabei auf 7.1. umzusteigen.
https://docs.linuxmuster.net/de/v7.1/migration/upgrade.html

Die Doku suggeriert mir, dass es ok ist, pip auf dem System zu upgraden.

Findet ihr das wirklich so schlau?

Wir haben ein Debiansystem/Ubuntusystem. Bei mir (7.0) sind da 147 python-Pakete installiert. Manche davon python 2.x. Die anderen python 3.6.
Das ist alles z.B. hier

/usr/lib/python3/dist-packages/urllib3/util

abgelegt.

Wenn ich (als root) jetzt pip nutze, wird das auch systemweit abgelegt… wenn das jetzt jemand macht, dann ist das System in einem Zustand, der mit dem apt-package manager eventuell eines Tages gegen die Wand fährt.

hier sind entsprechende Hinweise aus der Community:

Das nur als Nutzer/Admin der so wenig Ahnung hat, dass er bisher eher Abstand von „pip update“ genommen hat, wenn es um Systemweite Installationen ging.

VG, Tobias

Hallo Tobias,

pip upgraden ist gar kein Problem. Genauso kannst du die Software apt upgraden, das wird keine Wirkung haben über die installierte Packete.

Das Problem mit pip steht, wenn man damit ein Packet installiert, der schön mit dem Betriebsystem geliefert ist. Dabei könnte es Konflikte geben. Das habe ich kaum erlebt, und das ist relativ einfach zu lösen.

Stantardmässig sind die Python Packages vom Betriebsystem in /usr/lib/python3/dist-packages installiert, und die von pip in /usr/local/lib/pythonVERSION/dist-packages installiert.

Python sucht in den gegebene Pfade, wie man ein Modul laden kann, in einer Reihefolge :

$ python3 -c 'import sys; print(sys.path)'
['', '/usr/lib/python36.zip', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', '/root/.local/lib/python3.6/site-packages', '/usr/lib/linuxmuster', '/usr/lib/linuxmuster/setup.d', '/usr/local/lib/python3.6/dist-packages', '/usr/lib/python3/dist-packages']

Hier kannst du deutlich sehen, dass ‚/usr/lib/python3/dist-packages‘ zuletzt getestet wird, wenn das Modul noch nicht geladen wurde.
So, falls es Konflikte geben sollte, muss man nur das betroffene Packet, der mit pip installiert wurde, entfernen.

Gruß

Arnaud

ok, wenn das so ist, ist alles in Ordnung :slight_smile:

Hallo Arnaud,

ich nochmal,

hm. Ich habe jetzt den upgrade-Befehl von pip gemacht. Bin mir allerdings nicht sicher, was der stand der Dinge vorher war, ich hatte ja scheinbar schon eine Version 20.x auf dem System.
Die Debian-Version ist aber bei 9.0.1…

Nach dem upgrade ist mir dann aufgefallen, dass es die Datei /usr/bin/pip3 nicht mehr auf dem System gibt (gab es vermutlich vorher schon nicht, weil ich ja pip v20 vermutlich schon lokal hatte).

Beim Neuinstallieren (apt install --reinstall python3-pip) ist dann /usr/bin/pip3 wieder auf der Platte… aber nutzen will man das ja nicht, da kommt ja nur quark raus:

root@server ~ # /usr/bin/pip3 --version
WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.
Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.
To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.
pip 21.3.1 from /usr/local/lib/python3.6/dist-packages/pip (python 3.6)

ok, soweit so gut. Aber deinstallieren will man das Debian-Paket python3-pip auch nicht, denn sonst würden sich alle linuxmuster-Pakete mitentfernen.

root@server ~ # /usr/bin/python3 -m pip install --upgrade pip
Requirement already satisfied: pip in /usr/local/lib/python3.6/dist-packages (21.3.1)
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv

Also: Einerseits hängen Pakete auf dem Server von python3-pip ab, andererseits ist dieses Paket (und vielleicht andere auch) überhaupt unbenutzbar. Ihr seht das nicht als Problem, weil pip (und andere Bibliotheken auch) in der Zwischenzeit durch pip aktualisiert sein sollten.
(Ich finde das nicht geschickt, aber der Aufwand mit virtualenv für alle nötigen linuxmuster-Programme eine saubere pip-aktuelle Basis zu erstellen ist vermutlich enorm?)

Egal: In der Doku steht

„Solltest du in den Log-Dateien oder bei der Installation folgenden Hinweis finden, kannst du wie beschrieben das Update entsprechend ausführen:“

… und dann kommt ein Beispiel, dass man pip install --upgrade pip machen sollte.

Entweder ist das dringend empfohlen es so zu machen, oder es ist egal. Ich denke, es ist nicht egal und daher dringend empfohlen.
Dann könnte das auch statt manuell ein Paket upgrade von ajenti machen, oder?

VG, Tobias

Achso, ich vergaß:

folgt daraus nicht auch, dass der Administrator dafür sorgen sollte, dass alle python-Pakete auf dem neuesten Stand sind?
Im Moment verlassen wir uns auf Debian/Ubuntu, die Sicherheitspatches zu backporten.
Wenn wir python-Bibliotheken nicht mehr zwangsläufig durch Ubuntu aktualisieren, sollte in die Doku, was man für das Aktualisieren der python-Bibliotheken braucht, z.B. ein

python3 -m pip list --outdated --format=freeze | grep -v '^\-e' | cut -d = -f 1  | xargs -n1 python3 -m pip install -U

?
Oder ist das als Ratschlag schon wieder zu gefährlich… werden dann bleeding-edge Bibliotheken installiert?

VG, Tobias

Hallo,

in dem Zusammenhang möchte ich noch einwerfen, dass ajenti als root läuft (zumindest auf meinem Server mit lmn7.1 ist das so). Das heißt Fehler im Framework könnten dazu führen, dass Webseitennutzer root-Rechte auf dem Server erlangen.

VG Buster

Hallo Tobias,

/usr/bin/pip3 gehört zur Packet python3-pip, und das Python Package pip3 wird unter /usr/local/bin installiert, da kann ich das gleiche mit dem Suchpfad zeigen :

$ which pip3       
/usr/local/bin/pip3

$ echo $PATH
/usr/local/bin:/usr/local/sbin:/bin:/usr/bin:/usr/sbin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/sbin:/root/bin

Was ich nicht weiss, ist ob das Python Package pip3 die Datei /usr/bin/pip3 löscht, das könnte aber sein.

Wenn man ein python3 -m pip nutzt ist man immer auf die sichere Seite, da man es als importiert Modul im Python3 nutzt.

Yep, da muss man tatsächlich aufpassen, vielleicht ist so eine Geschichte was den @Jesko letzte Woche passiert ist.

Die Webui sorgt die Packet Versionen, ich empfehle dringend ab Ajenti manuell upzugraden, da die Kompatibilität mit der Webui nicht unbedingt vorhanden ist.

Nein, wie oben geschrieben, pinnen wir die benötigte Versionen, und das wird bei jedem Update überprüft und angepasst, z.B. hier :

Gruß

Arnaud ( der der hofft, er hat alles verstanden )

Hallo Buster,

Ich sehe persönnlich nicht den Zusammenhang mit pip, das ist eine andere Diskussion.

Gruß

Arnaud

Hallo Arnaud,

danke für die ganzen anderen Antworten!

Das meinte ich gar nicht. Ich meinte: Könnte beim regulären debian-update von ajenti (oder ein cron-job, der ajenti kontrolliert) nicht die Python-Pakete aktualisieren?

Deine Antwort darunter hat das ja schon beantwortet: Ihr pinnt Pakete, damit ist für diese Pakete ein Update bereits vorgesehen. Das ist ja gut.

VG, Tobias