[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: /etc/init.d/* vs. /usr/bin/env



On 11.01.06 23:38:25, Andre Berger wrote:
> * Andreas Pakulat (2006-01-11):
> > On 11.01.06 20:43:27, Andre Berger wrote:
> > > Wie meinen? DenyHosts laeuft eben als Daemon und wird alle dreissig
> > > Sekunden aktiv. Dass es als root laeuft, ist nicht optimal, aber
> > > daran bastele ich spaeter mit Hilfe der DenyHosts-FAQ. Oder meintest
> > > du das Shebang?
> > 
> > Genau das Shebang, insbesondere das du dir anguckst was env eigentlich
> > bewirkt und warum dann "das richtige" Python aufgerufen wird.
> 
> Das ist mir schon klar, ich fand nur keinen Grund dafuer, dass es mit
> meinem (einzigen) Python von der Kommandozeile aus ja, aus dem
> Init-Script heraus aber nicht ging.

Das liegt einfach daran dass dein User eine andere Umgebung hat als root
(root startet das init-Script). Unter anderem werden bei normalen Usern
bei Default-Einstellungen eben /usr/local/bin und falls existent auch
$HOME/bin in PATH aufgenommen. root's PATH enthaelt per Default nur
/bin,/usr/bin,/sbin und /usr/sbin.

> Ich tippe auf einen Fehler in meiner update-alternatives-Syntax.

Vergiss alternatives.

> > > > > Um DenyHosts allerdings aus dem Runlevel aus zu starten, musste ich
> > > > > in beiden Scripts die Interpeter-Zeile in den absoluten Pfad zum
> > > > > Python-Binary aendern.
> > > > 
> > > > Hmm, wo ist das Python denn installiert? /usr/bin sollte doch auch bei
> > > > Skripten in /etc/init.d im Pfad liegen oder irre ich mich da jetzt?
> > > 
> > > Vielen Dank, das hat mich zur Loesung gefuehrt. Ich hatte python-2.3
> > > installiert und mit update-alternatives /etc/alternatives/python
> > > erzeugt -- genauer gesagt manuell erzeugen muessen, da apt-get
> > > install es nicht von sich aus tat. 
> > 
> > Das liegt daran, dass die Python-Pakete nicht das Alternatives-System
> > nutzen. Die Python-Pakete installieren selbststaendig einen Symlink
> > /usr/bin/python der auf die richtige Version zeigt. Bzw. tut das Paket
> > python dies. 
> 
> python2.3 tat das hier jedenfalls nicht. 

Ich sagte doch, das Paket python installiert einen Symlink
/usr/bin/python der auf das aktuelle Debian-Default-Python-Binary (im
Moment noch python2.3) zeigt.

> > > Ich stelle nun allerdings fest, dass kein Link /usr/bin/python
> > > erzeugt wurde und "which python" auf meinen manuellen Symlink
> > > /usr/local/bin/python zeigte.
> > 
> > Das wird der Grund gewesen sein, IIRC ist PATH initial auf
> > "/bin:/sbin:/usr/sbin:/usr/bin" wenn root die UID ist. Somit wird python
> > nicht gefunden.
> 
> So erklaere ich mir das nachtraeglich auch.

So ist es auch, entferne mal dein alternatives-Zeug und es wird wieder
nicht gehen.

> > apt-get install python loest das Problem ohne manuelles Eingreifen.
> > Analog gcc installiert dir das immer nen Symlink auf das aktuelle
> > Default-Python.
> 
> Das war also der Trick. Ich hatte per apt-cache search python mit
> einem Auge gesehen, dass es auch 2.2er-Pakete gibt und irgendwie
> gleich vermutet, dass die aelteste Version der Debian stable-Default
> ist :) Da DenyHosts python2.3 benoetigt, habe ich dies Paket eben
> direkt installiert. 

Nein, seit Sarge ist python2.3 Default bei Debian. So angestaubt ist es
dann auch nicht ;-)

Andreas

-- 
Live in a world of your own, but always welcome visitors.



Reply to: