User-Spezifische Python-Version nutzen

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
Benutzeravatar
Johnnii360
Beiträge: 24
Registriert: 01.07.2019 15:24:40
Wohnort: Mittelfranken
Kontaktdaten:

User-Spezifische Python-Version nutzen

Beitrag von Johnnii360 » 15.08.2020 23:26:40

Hallo zusammen!

Ich nutze schon seit einiger Zeit seafile auf meinem Debian 9 Server. Nun hat seafile jedoch eine neue Version rausgebraucht, für die Python 3.6+ benötigt wird und deshalb nicht mehr mit der 3.5 von Stretch läuft. Ich habe schon irgendwann vor von Stretch auf Buster zu upgraden, aber jetzt erst mal noch nicht.

So, damit ich nun die neue seafile Version nutzen kann, brauch ich eben das neues Python, das ich bereits manuell installiert und auch schon ins update-alternatives mit eingebunden habe. Darüber hinaus habe ich in der .bashrc des Nutzers seafile alias python3='/usr/local/bin/python3.7' eingefügt. Tippe ich nun python3 --version ein, wird mir dann auch Python 3.7.3 ausgegeben. Wenn ich jetzt aber which python3 eingebe, dann zeigt er mir /usr/bin/python3, was auf die 3.5 bzw. in meinem Fall die alternatives verweist. Seafile interessiert daher gar nicht, dass in der .bashrc ein anderer alias drin ist und nimmt immer den Systemstandard. Problem ist, wenn ich nun System weit auf 3.7 stelle, gehen viele Services wie z.B. Borgbackup, UFW oder fail2ban nicht mehr, da es für Strech nur oldstables gibt.

Wie bringt ich nun seafile dazu, dass die neue Version genutzt wird? Vielleicht geht das ja auch ohne die Startscripts NoPaste-Eintrag41116 anzupassen? I.d.R. starte ich seafile via systemctl, der dann die sh-Datei ausführt.

Würde mich über Eure Hilfe und Tipps sehr freuen!
Mit besten Grüßen,
© Johannes

Benutzeravatar
TRex
Moderator
Beiträge: 8038
Registriert: 23.11.2006 12:23:54
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: KA

Re: User-Spezifische Python-Version nutzen

Beitrag von TRex » 15.08.2020 23:37:36

Stell doch den PATH für den Service entsprechend ein, also deine Installation voranstellen.

/etc/systemd/system/seafile.d/bla.conf

Da drin einfach mit Unit-Syntax das Environment modifizieren.
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

Benutzeravatar
Johnnii360
Beiträge: 24
Registriert: 01.07.2019 15:24:40
Wohnort: Mittelfranken
Kontaktdaten:

Re: User-Spezifische Python-Version nutzen

Beitrag von Johnnii360 » 16.08.2020 09:13:19

TRex hat geschrieben: ↑ zum Beitrag ↑
15.08.2020 23:37:36
Stell doch den PATH für den Service entsprechend ein, also deine Installation voranstellen.

/etc/systemd/system/seafile.d/bla.conf

Da drin einfach mit Unit-Syntax das Environment modifizieren.
Guten Morgen!

Oh, hast Du da evtl. bitte ein Beispiel oder so für mich? Bin leider noch nicht so gut in Linux und wüsste nicht wie. Bin nur Fortgeschrittener. ;)

Aber ich habe in der systemd Datei unter Verwendung von Environment auch schon versucht, das alias einzufügen (python3=...), was aber auch nicht funktioniert hat.
Mit besten Grüßen,
© Johannes

Benutzeravatar
TRex
Moderator
Beiträge: 8038
Registriert: 23.11.2006 12:23:54
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: KA

Re: User-Spezifische Python-Version nutzen

Beitrag von TRex » 16.08.2020 10:27:28

Ich hab nochmal nachgelesen - eine Umgebungsvariable zu setzen wär nich so das Problem, aber PATH zu lesen und zu erweitern schon. Krücke:

Bitte passe seafile an den Unit-Namen an, falls der anders ist - ich rate hier nur. Selbiges gilt für den Pfad zu deiner Installation

/etc/systemd/system/seafile.d/custom_python3.conf

Code: Alles auswählen

[Service]
Environment=PATH=/opt/python36/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Du kannst das auch lokal erstmal testen (PATH setzen) - sofern seafile nicht den absoluten Pfad zur python-binary verwendet, funktioniert das. which ignoriert deinen alias, darum hat das als Diagnosetool nicht funktioniert.
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

Benutzeravatar
Johnnii360
Beiträge: 24
Registriert: 01.07.2019 15:24:40
Wohnort: Mittelfranken
Kontaktdaten:

Re: User-Spezifische Python-Version nutzen

Beitrag von Johnnii360 » 16.08.2020 13:06:58

Kleine Frage: Wie kommst Du immer auf das /etc/systemd/system/seafile.d/custom_python3.conf ?

Ich nutze eigentlich nur zwei Service-Files - einmal für seafile und einmal für seahub.

seahub.service sieht nun wie folgt aus: (funktioniert mit dem Environment nicht)

Code: Alles auswählen

[Unit]
Description=Seafile hub
After=network.target seafile.service

[Service]
Type=forking
WorkingDirectory=/home/seafile
ExecStart=/home/seafile/seafile-server-latest/seahub.sh start
ExecStop=/home/seafile/seafile-server-latest/seahub.sh stop
User=seafile
Group=seafile
Environment=PATH=/usr/local/bin/python3.6:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

[Install]
WantedBy=multi-user.target
In /opt hab ich ein Python-Verzeichnis für 3.6 und 3.7, jedoch beide ohne bin-Verzeichnis. Die Ausführung über manuell installierte Python-Versionen läuft dann u.a. über /usr/local/bin/python3.6 .

Code: Alles auswählen

root@canterlot /opt/Python-3.6.11 # ls
aclocal.m4     config.sub    Include          Mac              Modules  Programs        Python            setup.py
build          configure     install-sh       Makefile         Objects  pybuilddir.txt  python-config     Tools
config.guess   configure.ac  Lib              Makefile.pre     Parser   pyconfig.h      python-config.py
config.log     Doc           libpython3.6m.a  Makefile.pre.in  PC       pyconfig.h.in   python-gdb.py
config.status  Grammar       LICENSE          Misc             PCbuild  python          README.rst
Mit besten Grüßen,
© Johannes

Benutzeravatar
TRex
Moderator
Beiträge: 8038
Registriert: 23.11.2006 12:23:54
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: KA

Re: User-Spezifische Python-Version nutzen

Beitrag von TRex » 16.08.2020 14:57:38

Johnnii360 hat geschrieben: ↑ zum Beitrag ↑
16.08.2020 13:06:58
Kleine Frage: Wie kommst Du immer auf das /etc/systemd/system/seafile.d/custom_python3.conf ?
${UNIT_NAME}.d/ ist der Ort für Anpassungen an den Units. Wie ich die Datei nenne, ist meines Wissens nach beliebig.
Johnnii360 hat geschrieben: ↑ zum Beitrag ↑
16.08.2020 13:06:58
funktioniert mit dem Environment nicht
Weil du nicht verstanden hast, was du da tust - PATH ist der Suchpfad, gibts auch unter Windows. Darin werden ausführbare Dateien gesucht, wenn du sie wie "python" aufrufst. which -a zeigt dir alle an, die es findet (von links nach rechts in den durch : getrennten Orten im PATH):

Code: Alles auswählen

$ which -a python
/usr/bin/python
/bin/python
Ist aber unerheblich - dein binary liegt in /usr/local/bin/, und das ist bereits im PATH. Liegt da auch ein entsprechendes "python3", was auf python3.6 zeigt? Wie wird python aus seafile/seahub aufgerufen?
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

Benutzeravatar
Johnnii360
Beiträge: 24
Registriert: 01.07.2019 15:24:40
Wohnort: Mittelfranken
Kontaktdaten:

Re: User-Spezifische Python-Version nutzen

Beitrag von Johnnii360 » 16.08.2020 17:32:15

Allmächt, das hat echt was gebracht einen symlink mit ln -s python3.6 python3 zu erstellen. Vielen herzlichen Dank!

Aber stimmt, ich habe nicht genau verstanden, was Du von mir wolltest. Wie gesagt: Ich bin nur fortgeschrittener und habe mir Linux auch nur selber beigebracht, ohne es je in einer Informatik studiert zu haben. :) Dennoch habe ich nun wieder was gelernt und kann es in meinem Eiweiscomputer ablegen. ;)

Ach ja, bzgl. Deiner Frage: So wie es aussieht durch python3 - steht zumindest so im Status.

Code: Alles auswählen

CGroup: /system.slice/seahub.service
           ├─8552 python3 /home/seafile/seafile-server-7.1.4/seahub/thirdpart/bin/gunicorn seahub.wsgi:application -c /home/seafil...
           ├─8561 python3 /home/seafile/seafile-server-7.1.4/seahub/thirdpart/bin/gunicorn seahub.wsgi:application -c /home/seafil...
           ├─8562 python3 /home/seafile/seafile-server-7.1.4/seahub/thirdpart/bin/gunicorn seahub.wsgi:application -c /home/seafil...
           ├─8563 python3 /home/seafile/seafile-server-7.1.4/seahub/thirdpart/bin/gunicorn seahub.wsgi:application -c /home/seafil...
           ├─8564 python3 /home/seafile/seafile-server-7.1.4/seahub/thirdpart/bin/gunicorn seahub.wsgi:application -c /home/seafil...
           └─8565 python3 /home/seafile/seafile-server-7.1.4/seahub/thirdpart/bin/gunicorn seahub.wsgi:application -c /home/seafil...
Mit besten Grüßen,
© Johannes

Antworten