Re: spezieller lib-Pfad pro user

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Fri, 11 Aug 2006 20:25:44 +0200 (CEST)

Marc Santhoff wrote:
> Oliver Fromme wrote:
> > 1. Bereits beim Compilieren + Linken eines Programms kann
> > ein Benutzer einen (oder mehrere) Library-Pfade fest-
> > legen. Dies geht mit der Option -rpath des Linkers
> > ld(1), z.B.:
> > ld -rpath /home/marc/lib -lmeinelib -o foo foo.o
> > Verwendet man cc(1) bzw. gcc(1) zum Linken, kann man
> > die ld(1)-Option mit der Option -Xlinker übergeben,
> > siehe die Manpage.
>
> Ah, das wußte ich noch nicht. Klingt auch praktisch.

Ist auch die einfachste und sauberste Lösung. Einfach beim
make und/oder configure das eigene Library-Verzeichnis per
$LDFLAGS oder $CCFLAGS mitgeben, und schon kriegt es das
Binary eingeimpft. Das Setzen irgendwelcher Umgebungs-
variablen ist zum Ausführen des Binaries nicht erforder-
lich; es »weiß« immer, wo »seine« Libraries sind.

> > 3. Wenn man bereits ein fertiges Binary hat und es nicht
> > neu linken will, kann man mit der Umgebungsvariable
> > LD_LIBRARY_PATH einen Pfad festlegen, wo Libraries
> > gesucht werden sollen.
>
> Jupp, so hat es ja jetzt auch funktioniert. :)

Ist nicht ganz so sauber, ab wenn's Dir genügt, ist das OK.

> > > Die sollen dann aber nur für diesen Benutzer
> > > installiert werden können (unter $HOME/local/ oder so).
> >
> > Üblicher wäre wohl $HOME/lib.
>
> Das mag sein, aber es geht hier um PRogramme, die auch noch bin und doc
> oder share mitbringen, aber nicht unter /usr/local landen sollen.

Und inwiefern spricht das jetzt gegen $HOME/lib?
/usr/local habe ich gar nicht erwähnt.

> Das ist weniger ein Problem, ich frage mich nur noch: Ist das mit den
> libs mit den Rechten zur Laufzeit so wie bei regulären Programmen?

Ja.

> Wenn jemand eine Bibliothek schreibt, kann er am System
> (normalerweise) nix kaputt machen?

Richtig, kann er nicht. Jedenfalls nicht mehr oder weniger
als mit ganz normalen Programmen.

Libraries und Binaries laufen beide im Userland und somit
auf derselben »Berechtigungsebene«. Jeden Code, den man in
einer Library programmieren kann, kann man auch in eine
Library tun, und umgekehrt. Libraries dienen ja nur der
Modularisierung von Programmen, der Resourcenschonung (so-
wohl auf Festplatte als auch im Speicher) und der Wieder-
verwendbarkeit von Code. Eine Library hat per-se nicht
mehr Rechte als irgendwelcher andere Code in einem Binary.

> Alles andere wäre unlogisch.

In der Tat.

Gruß
   Olli

-- 
Oliver Fromme,  secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing
Dienstleistungen mit Schwerpunkt FreeBSD: http://www.secnetix.de/bsd
Any opinions expressed in this message may be personal to the author
and may not necessarily reflect the opinions of secnetix in any way.
"If you think C++ is not overly complicated, just what is a protected
abstract virtual base pure virtual private destructor, and when was the
last time you needed one?"
        -- Tom Cargil, C++ Journal
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Fri 11 Aug 2006 - 20:27:32 CEST

search this site