sonnenblen.de - Das unabhängige Sun User Forum
Software => Programmieren, Kompilieren => Thema gestartet von: Brenner am 17. Juni 2008, 17:02:15
-
Ich wollte heute die Nagios 3.0.2 Version unter Solaris 10 U5 X86 installieren, aber bekomme es einfach nicht hin. Spätestens bei "make all" werden Fehler geworfen.
Hat es von Euch schon jemand probiert bzw. kennt ein HowTo? Die HowTos für die Nagios 2.X scheinen nutzlos zu sein.
-
Spätestens bei "make all" werden Fehler geworfen.
Was für Fehler? ::)
"make all"? Für welche Zielplattformen willst du denn alles übersetzen? Doch bestimmt nur für Solaris 10/x86 (oder x64).
Ohne die Doku, HowTo's oder die README von Nagios gelesen zu haben. Was passiert bei folgenden Kommandos...
# cd <nagios-src-dir>
# ./configure --help
# ./configure <list with options from Brenner>
# ./make
# ./make install
Gruß
escimo
-
Also,
ich habe mich an folgendes HowTo gehalten:
http://ls5-www.cs.uni-dortmund.de/~windmueller/nagios-solaris10.html
inkl. Configure Optionen usw.
bash-3.00# ./configure --help
`configure' configures this package to adapt to many kinds of systems.
Usage: ./configure [OPTION]... [VAR=VALUE]...
To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE. See below for descriptions of some of the useful variables.
Defaults for the options are specified in brackets.
Configuration:
-h, --help display this help and exit
--help=short display options specific to this package
--help=recursive display the short help of all the included packages
-V, --version display version information and exit
-q, --quiet, --silent do not print `checking...' messages
--cache-file=FILE cache test results in FILE [disabled]
-C, --config-cache alias for `--cache-file=config.cache'
-n, --no-create do not create output files
--srcdir=DIR find the sources in DIR [configure dir or `..']
Installation directories:
--prefix=PREFIX install architecture-independent files in PREFIX
[/usr/local/nagios]
--exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
[PREFIX]
By default, `make install' will install all the files in
`/usr/local/nagios/bin', `/usr/local/nagios/lib' etc. You can specify
an installation prefix other than `/usr/local/nagios' using `--prefix',
for instance `--prefix=$HOME'.
For better control, use the options below.
Fine tuning of the installation directories:
--bindir=DIR user executables [EPREFIX/bin]
--sbindir=DIR system admin executables [EPREFIX/sbin]
--libexecdir=DIR program executables [EPREFIX/libexec]
--datadir=DIR read-only architecture-independent data [PREFIX/share]
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
--libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include]
--infodir=DIR info documentation [PREFIX/info]
--mandir=DIR man documentation [PREFIX/man]
System types:
--build=BUILD configure for building on BUILD [guessed]
--host=HOST cross-compile to build programs to run on HOST [BUILD]
Optional Features:
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
--disable-statusmap=disables compilation of statusmap CGI
--disable-statuswrl=disables compilation of statuswrl (VRML) CGI
--enable-nanosleep enables use of nanosleep (instead sleep) in event timing
--enable-event-broker enables integration of event broker routines
--enable-embedded-perl will enable embedded Perl interpreter
--enable-cygwin enables building under the CYGWIN environment
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
--with-nagios-user=<user> sets user name to run nagios
--with-nagios-group=<grp> sets group name to run nagios
--with-command-user=<user> sets user name for command access
--with-command-group=<grp> sets group name for command access
--with-mail=<path_to_mail> sets path to equivalent program to mail
--with-httpd-conf=<path_to_conf> sets path to Apache conf.d directory
--with-checkresult-dir=<path> sets path to check results spool directory
--with-temp-dir=<path> sets path to temp directory
--with-init-dir=<path> sets directory to place init script into
--with-lockfile=<path> sets path and file name for lock file
--with-gd-lib=DIR sets location of the gd library
--with-gd-inc=DIR sets location of the gd include files
--with-cgiurl=<local-url> sets URL for cgi programs (do not use a trailing slash)
--with-htmurl=<local-url> sets URL for public html
--with-perlcache turns on cacheing of internally compiled Perl scripts
Some influential environment variables:
CC C compiler command
CFLAGS C compiler flags
LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
nonstandard directory <lib dir>
CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
headers in a nonstandard directory <include dir>
CPP C preprocessor
Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.
bash-3.00#
./configure --prefix=/opt/local/nagios-3.0.2 --with-nagios-user=nagios --with-nagios-group=nagios --with-gd-lib=/opt/sfw/lib --with-gd-inc=/opt/sfw/include
*** Configuration summary for nagios 3.0.2 05-19-2008 ***:
General Options:
-------------------------
Nagios executable: nagios
Nagios user/group: nagios,nagios
Command user/group: nagios,nagios
Embedded Perl: no
Event Broker: yes
Install ${prefix}: /opt/local/nagios-3.0.2
Lock file: ${prefix}/var/nagios.lock
Check result directory: ${prefix}/var/spool/checkresults
Init directory: /etc/init.d
Apache conf.d directory: /etc/httpd/conf.d
Mail program: /usr/bin/mail
Host OS: solaris2.10
Web Interface Options:
------------------------
HTML URL: http://localhost/nagios/
CGI URL: http://localhost/nagios/cgi-bin/
Traceroute (used by WAP): /usr/sbin/traceroute
Review the options above for accuracy. If they look okay,
type 'make all' to compile the main program and CGIs.
Ausgabe von "make"
bash-3.00# make
Please supply a command line argument (i.e. 'make all'). Other targets are:
nagios cgis contrib modules
clean
install install-base install-cgis install-html install-config install-init install-commandmode fullinstall
bash-3.00#
Ausgabe von "make all"
bash-3.00# make all
cd ./base && make
gcc -g -O2 -I/opt/sfw/include -DHAVE_CONFIG_H -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -DNSCORE -c broker.c
gcc -g -O2 -I/opt/sfw/include -DHAVE_CONFIG_H -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -DNSCORE -c nebmods.c
gcc -g -O2 -I/opt/sfw/include -DHAVE_CONFIG_H -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -DNSCORE -c checks.c
gcc -g -O2 -I/opt/sfw/include -DHAVE_CONFIG_H -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -DNSCORE -c config.c
gcc -g -O2 -I/opt/sfw/include -DHAVE_CONFIG_H -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -DNSCORE -c commands.c
gcc -g -O2 -I/opt/sfw/include -DHAVE_CONFIG_H -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -DNSCORE -c events.c
gcc -g -O2 -I/opt/sfw/include -DHAVE_CONFIG_H -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -DNSCORE -c flapping.c
gcc -g -O2 -I/opt/sfw/include -DHAVE_CONFIG_H -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -DNSCORE -c logging.c
gcc -g -O2 -I/opt/sfw/include -DHAVE_CONFIG_H -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -DNSCORE -c -o macros-base.o ../common/macros.c
gcc -g -O2 -I/opt/sfw/include -DHAVE_CONFIG_H -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -DNSCORE -c notifications.c
gcc -g -O2 -I/opt/sfw/include -DHAVE_CONFIG_H -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -DNSCORE -c sehandlers.c
gcc -g -O2 -I/opt/sfw/include -DHAVE_CONFIG_H -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -DNSCORE -c -o skiplist.o ../common/skiplist.c
gcc -g -O2 -I/opt/sfw/include -DHAVE_CONFIG_H -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -DNSCORE -c utils.c
gcc -g -O2 -I/opt/sfw/include -DHAVE_CONFIG_H -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -DNSCORE -c -o retention-base.o sretention.c
gcc -g -O2 -I/opt/sfw/include -DHAVE_CONFIG_H -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -DNSCORE -c -o xretention-base.o ../xdata/xrddefault.c
gcc -g -O2 -I/opt/sfw/include -DHAVE_CONFIG_H -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -DNSCORE -c -o comments-base.o ../common/comments.c
gcc -g -O2 -I/opt/sfw/include -DHAVE_CONFIG_H -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -DNSCORE -c -o xcomments-base.o ../xdata/xcddefault.c
gcc -g -O2 -I/opt/sfw/include -DHAVE_CONFIG_H -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -DNSCORE -c -o objects-base.o ../common/objects.c
gcc -g -O2 -I/opt/sfw/include -DHAVE_CONFIG_H -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -DNSCORE -c -o xobjects-base.o ../xdata/xodtemplate.c
gcc -g -O2 -I/opt/sfw/include -DHAVE_CONFIG_H -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -DNSCORE -c -o statusdata-base.o ../common/statusdata.c
gcc -g -O2 -I/opt/sfw/include -DHAVE_CONFIG_H -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -DNSCORE -c -o xstatusdata-base.o ../xdata/xsddefault.c
gcc -g -O2 -I/opt/sfw/include -DHAVE_CONFIG_H -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -DNSCORE -c -o perfdata-base.o perfdata.c
gcc -g -O2 -I/opt/sfw/include -DHAVE_CONFIG_H -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -DNSCORE -c -o xperfdata-base.o ../xdata/xpddefault.c
gcc -g -O2 -I/opt/sfw/include -DHAVE_CONFIG_H -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -DNSCORE -c -o downtime-base.o ../common/downtime.c
gcc -g -O2 -I/opt/sfw/include -DHAVE_CONFIG_H -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -DNSCORE -c -o xdowntime-base.o ../xdata/xdddefault.c
gcc -g -O2 -I/opt/sfw/include -DHAVE_CONFIG_H -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -DNSCORE -c ../common/snprintf.c
gcc -g -O2 -I/opt/sfw/include -DHAVE_CONFIG_H -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -DNSCORE -o nagios nagios.c broker.o nebmods.o checks.o config.o commands.o events.o flapping.o logging.o macros-base.o notifications.o sehandlers.o skiplist.o utils.o retention-base.o xretention-base.o comments-base.o xcomments-base.o objects-base.o xobjects-base.o statusdata-base.o xstatusdata-base.o perfdata-base.o xperfdata-base.o downtime-base.o xdowntime-base.o ../common/snprintf.o -L/opt/sfw/lib -lm -lpthread -ldl -lrt -lglib-2.0
gcc: ../common/snprintf.o: Datei oder Verzeichnis nicht gefunden
*** Error code 1
make: Fatal error: Command failed for target `nagios'
Current working directory /var/tmp/nagios-3.0.2/base
*** Error code 1
make: Fatal error: Command failed for target `all'
bash-3.00#
-
Ok, du nutzt die GNU-Tools unterhalb von /usr/sfw, um Nagios zu übersetzen.
ich habe mich an folgendes HowTo gehalten:
http://ls5-www.cs.uni-dortmund.de/~windmueller/nagios-solaris10.html
inkl. Configure Optionen usw.
Und hast du dich auch an die Installationsanweisungen, die bei den Quellen meist in Form einer/mehrerer README beiliegt, gehalten?
Sind denn alle Vorbedingungen erfüllt:
[1] Alle benötigten Pfade (PATH, LD_LIBRARY_PATH usw.) sind korrekt gesetzt..
Make sure that /usr/ccs/bin is part of your PATH. Then run these commands:
...siehe Howto. Enthält u.a. as, ld, m4, a und mehr die eventuell von Nagios für Solaris zum Build benötigt werden. Sollte /usr/sfw/bin im Pfad an erste Stelle stehen, tauschen. Oder stell bitte mal dem Output von `echo $PATH` zur Verfügung.
[2] Gruppe und Nutzer wurden angelegt?
[3] Das Verzeichnis /opt/local existiert?
[4] Die GD Graphics Library (SFWgd) ist installiert (evtl. von der Solaris Companion CD oder blastwave.org)?
Manchmal hilft auch der Build von einem "Source Code"-externen Verzeichnis aus.
Was passiert, wenn du folgendes machst:
# mkdir nbuild && cd nbuild
# ../nagios-src/configure <...>
# ../nagios-src/make all
Viele Grüße
escimo
-
Die Readme helfen nicht da es keine offiziellen Installationsanweisungen für Nagios unter Solaris gibt.
zu1)
PATH habe ich erweitert, sie hat folgenden Inhalt:
bash-3.00# echo $PATH
/usr/sbin:/usr/bin:/usr/local/bin:/usr/ccs/bin:/usr/sfw/bin:/usr/sfw/bin/gcc
bash-3.00#
Mit "LD_LIBRARY_PATH" kann ich grad nichts anfangen.
zu2) Gruppe und Nutzer habe ich angelegt.
zu3) Verzeichnis /opt/local existiert.
zu4) Habe das Paket von SUN aus der Companion Quelle heruntergeladen und installiert.
zu "waspassiertwenndufolgendesmachst")
Ich habe im / das Verzeichnis angelegt und bin rein gewechselt und habe anschließend configure ausgeführt. "Make all" geht aber auf diese Weise nicht (Datei oder Verzeichnis nicht gefunden). Da muss man wohl doch im Verzeichnis stehen.
Danke für die Bemühungen.
-
bash-3.00# echo $PATH
/usr/sbin:/usr/bin:/usr/local/bin:/usr/ccs/bin:/usr/sfw/bin:/usr/sfw/bin/gcc
Das kann nicht sein: hinten sollte /usr/sfw/bin stehen!
zu4) Habe das Paket von SUN aus der Companion Quelle heruntergeladen und installiert.
Die GD-Libs sind von der Companion-CD wahrscheinlich nach /opt/sfw installiert worden. Das bedeutet, du müsstes /opt/sfw/bin mit in die PATH-Variable aufnehmen.
Mit "LD_LIBRARY_PATH" kann ich grad nichts anfangen.
Setzt den Suchpfad für die zu "linkenden" (System-)Bibliotheken.
# export LD_LIBRARY_PATH=/usr/lib:/usr/local/lib:/usr/css/lib:/usr/sfw/lib:/opt/sfw/lib
zu "waspassiertwenndufolgendesmachst")
Ich habe im / das Verzeichnis angelegt und bin rein gewechselt und habe anschließend configure ausgeführt. "Make all" geht aber auf diese Weise nicht (Datei oder Verzeichnis nicht gefunden). Da muss man wohl doch im Verzeichnis stehen.
Bedeutet das, der relative (aus Build-Verzeichnis) Aufruf von Make schlägt dann fehl? Also hast du folgendes gemacht...
# cd /
# mkdir nbuild && cd nbuild
# ../pfad/zum/nagios/quellverzeichnis/configure <deine Optionen>
# ../pfad/zum/nagios/quellverzeichnis/make all
...Wenn das nicht funktioniert, dann eben direkt aus dem Quellverzeichnis. Nicht vergessen, nach jedem fehlerhaften Build ein `make clean` abzusetzen.
Und auf geht's... ;)
-
bash-3.00# echo $PATH
/usr/sbin:/usr/bin:/usr/local/bin:/usr/ccs/bin:/usr/sfw/bin:/usr/sfw/bin/gcc
Das kann nicht sein: hinten sollte /usr/sfw/bin stehen!
Das war nur mittendrin ein verzweifelter Versuch das zu laufen zu bekommen.
zu4) Habe das Paket von SUN aus der Companion Quelle heruntergeladen und installiert.
Die GD-Libs sind von der Companion-CD wahrscheinlich nach /opt/sfw installiert worden. Das bedeutet, du müsstes /opt/sfw/bin mit in die PATH-Variable aufnehmen.
Mit "LD_LIBRARY_PATH" kann ich grad nichts anfangen.
Setzt den Suchpfad für die zu "linkenden" (System-)Bibliotheken.
# export LD_LIBRARY_PATH=/usr/lib:/usr/local/lib:/usr/css/lib:/usr/sfw/lib:/opt/sfw/lib
Wie kann ich abfragen ob der Pfad erfolgreich eingetragen wurde? Beim ausführen von "export" taucht der LD_Library.... nicht auf.
zu "waspassiertwenndufolgendesmachst")
Ich habe im / das Verzeichnis angelegt und bin rein gewechselt und habe anschließend configure ausgeführt. "Make all" geht aber auf diese Weise nicht (Datei oder Verzeichnis nicht gefunden). Da muss man wohl doch im Verzeichnis stehen.
Bedeutet das, der relative (aus Build-Verzeichnis) Aufruf von Make schlägt dann fehl? Also hast du folgendes gemacht...
# cd /
# mkdir nbuild && cd nbuild
# ../pfad/zum/nagios/quellverzeichnis/configure <deine Optionen>
# ../pfad/zum/nagios/quellverzeichnis/make all
...Wenn das nicht funktioniert, dann eben direkt aus dem Quellverzeichnis. Nicht vergessen, nach jedem fehlerhaften Build ein `make clean` abzusetzen.
Ja genau so und das "make all" danach nochmal direkt aus dem Sourceverzeiochnis, gleiches Ergebnis wie immer. Ich mache immer mit "make distclean" sauber, ist das auch ok?
Und auf geht's... ;)
Ich bin schon fast dabei ´ne CentOS5.1 rauszusuchen. Die Büchsen sollen nur SGD und Nagios machen...
-
Wie kann ich abfragen ob der Pfad erfolgreich eingetragen wurde? Beim ausführen von "export" taucht der LD_Library.... nicht auf.
# echo $LD_LIBRARY_PATH
Du setzt die LD_LIBRARY_PATH Variable einzig für die Laufzeit. Nach Abmeldung oder Schließen der Konsole, sind diese Einstellungen verloren. Dann lohnt der Eintrag in die "~/.profile":
LD_LIBRARY_PATH=<LIBDIR-1>:<LIBDIR-2>:<u.a.>
export LD_LIBRARY_PATH
Speichern, raus und erneut das Profil einlesen mittels
# . .profile
ja Punkt, Leer, Punkt+"profile" ;)
Ich mache immer mit "make distclean" sauber, ist das auch ok?
Nach diesen Angaben von dir wird dieses "Target" nicht aufgeführt...
bash-3.00# make
... Other targets are:
nagios cgis contrib modules
clean
install install-base install-cgis install-html install-config install-init install-commandmode fullinstall
Gib mir mal bitte alle Ausgaben auf folgende Kommandos:
# echo $PATH
# echo $LD_LIBRARY_PATH
# pkginfo | grep gd
(bringt u.a. in etwa: "system SFWgd gd - GD Graphics Library")
# pkgparam -v -d /var/sadm/pkg SFWgd BASEDIR VERSION
(hängt vom Paketnamen z.B. SFWgd ab)
Hier noch eine Alternative: http://www.totkat.org/pages/nagios.shtml (http://www.totkat.org/pages/nagios.shtml)
Gruß
escimo
-
bash-3.00# clear
bash-3.00# echo $PATH
/usr/sbin:/usr/bin:/usr/local/bin:/usr/ccs/bin:/usr/sfw/bin
bash-3.00# echo $LD_LIBRARY_PATH
/usr/lib:/usr/local/lib:/usr/css/lib:/usr/sfw/lib:/opt/sfw/lib
bash-3.00# pkginfo | grep gd
system CSWgdbm gdbm - GNU dbm
system SFWgd gd - GD Graphics Library
bash-3.00# pkgparam -v -d /var/sadm/pkg SFWgd BASEDIR VERSION
BASEDIR='/opt'
VERSION='2.0.15,REV=2006.10.04.21.08'
bash-3.00#
edit:
Sollte ich die Alternative mal ausprobieren und wenn ja, wann, also dann wenn du auch nicht mehr weiter weißt!? ;)
-
bash-3.00# pkgparam -v -d /var/sadm/pkg SFWgd BASEDIR VERSION
BASEDIR='/opt'
Die GD ist also unter /opt/sfw installiert. Sieht gut aus, du könntest aber noch...
bash-3.00# echo $PATH
/usr/sbin:/usr/bin:/usr/local/bin:/usr/ccs/bin:/usr/sfw/bin
"/opt/sfw/bin" ... beim Pfad am Ende hinzufügen. Schadet nicht.
Sofern die GD-Libraries und evtl. Binaries zum Übersetzen benötigt werden...probier es nochmal, bitte.
-
Hab´s probiert, keine Änderung, leider.
-
gcc: ../common/snprintf.o: Datei oder Verzeichnis nicht gefunden
*** Error code 1
Ich kenne nicht deine Build-Umgebung und bin nicht informiert was du alles installiert hast und vor allem wohin du hast' installieren lassen. :-\
gcc -g -O2 -I/opt/sfw/include -DHAVE_CONFIG_H -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -DNSCORE -c broker.c
Nochmal...probier jedes Target einzeln, um den Fehlerherd weiter einzugrenzen.
# make clean
# make nagios
EDIT: Benötigst du Nagios auf Solaris als Server oder Client?
http://forum.java.sun.com/thread.jspa?threadID=5112366&messageID=9879024 (http://forum.java.sun.com/thread.jspa?threadID=5112366&messageID=9879024)
-
Naja, es ist ein Standard Solaris 10 U5 x86 32Bit in Vollinstallation.
Oh Gott, oh Gott, Targets einzeln installieren....
Als Server.
Ich könne dem System jetzt erstmal eine Pause (oder besser gesagt mir) und schaue mal ob mit CentOS nicht doch sinnvoller ist. Schließlich soll das nicht die einzige Büchse in dieser Konfiguration bleiben.
-
1. LD_LIBRARY_PATH sollte nie nie nie in einer Shell gesetzt sein. Wer so was braucht, um etwas ans Laufen zu kriegen, hat etwas gundsätzlich falsch gemacht.
2. Versuch mal Gnu Make:
export MAKE=/usr/sfw/bin/gmake
gmake all
-
1. LD_LIBRARY_PATH sollte nie nie nie in einer Shell gesetzt sein. Wer so was braucht, um etwas ans Laufen zu kriegen, hat etwas gundsätzlich falsch gemacht.
Also, das kommt ganz auf die Anwendung an, die man übersetzen möchte. Es gibt Anwendungen, bei denen es in den README's ausdrücklich "gefordert" wird. Zudem spricht nichts dagegen den LD-Pfad zu setzen, nur man sollte wissen was man tut.
-
1. LD_LIBRARY_PATH sollte nie nie nie in einer Shell gesetzt sein. Wer so was braucht, um etwas ans Laufen zu kriegen, hat etwas gundsätzlich falsch gemacht.
Also, das kommt ganz auf die Anwendung an, die man übersetzen möchte.
Leider so nicht richtig. $LD_LIBRARY_PATH ist zur Laufzeit eines Programms wichtig, nicht zum Übersetzen. Es bringt im Gegenteil meist den Build-Vorgang durcheinander. Siehe dazu ld(1), ld.so.1(1), lari(1) und den "Linker and Libraries Guide".
Es gibt Anwendungen, bei denen es in den README's ausdrücklich "gefordert" wird.
Dann sind die READMEs eben von Ahnungslosen oder Linux-Usern geschrieben worden. :-(
Zudem spricht nichts dagegen den LD-Pfad zu setzen, nur man sollte wissen was man tut.
Wissen was man tut sollte man immer. Und wer $LD_LIBRARY_PATH in einer Shell setzt, weiß das nicht. Das ist dasselbe Problem wie der Verweis auf crle. Für Details bitte Onkel Google fragen.
Gruß -- Volker
-
Und wer $LD_LIBRARY_PATH in einer Shell setzt, weiß das nicht.
Na dann Volker, erweise uns die Ehre und korrigiere meine Fehlangabe, indem du Brenner und mir kurz erläuterst, wie man den Pfad für OpenSource-Anwendungen richtig setzen kann. ::)
Ich mache das mit der Umgebungsvariable LD_LIBRARY_PATH immer - weil ich es nicht anders kenne, bin offen für Vorschläge - und hatte zu keinem Zeitpunkt je Probleme bei irgendeiner laufenden wie auch zu übersetzenden Anwendung. ;)
Grüße
escimo
-
Ich denke die Betonung liegt hier auf "einer" Shell statt auf "in einer Shell".
Also eben nicht nur in einer einzigen Shell setzen, sondern ins Profil eintragen. :)
Bei der Oracle Installation bin ich es gewohnt es immer nur in der Shell zu setzen, von der aus ich Oracle installiere.
-
Dann lohnt der Eintrag in die "~/.profile":
LD_LIBRARY_PATH=<LIBDIR-1>:<LIBDIR-2>:<u.a.>
export LD_LIBRARY_PATH
Speichern, raus und erneut das Profil einlesen mittels
# . .profile
...
Das habe ich doch schon geschrieben. Vielleicht hat Volker das überlesen... :)
Grüße
Stephan
-
Na, hier wird einem ja das Wort im Munde herumgedreht... :-)
Also, nochmal ganz klar formuliert: LD_LIBRARY_PATH ist böse böse böse!
Es soll grundsätzlich nie nie nie gesetzt sein. Nicht in irgendeiner Shell, nicht in .cshrc oder .profile oder sonstwo.
Falls es irgendwo mal eine defekte kaputte fehlerhafte problematische Software gibt, die nicht korrekt mit -R gelinkt wurde, dann findet man die für diese defekte kaputte fehlerhafte problematische Software benötigten Library-Verzeichnisse heraus und schreibt diese (und nur diese) in ein Wrapper-Shell-Script, nennt das so wie das aufzurufende Programm und benennt das Programm entsprechend um.
Beispiel:
# cat /loser/broken/bin/dummtool
#!/bin/sh
LD_LIBRARY_PATH=/opt/sfw/lib
export LD_LIBRARY_PATH
exec /loser/broken/bin/dummtool.bin "$*"
#
Das ist der *einzige* sinnvolle Verwendungszweck. (Na gut, und zum Shared Libraries debuggen...)
Gruß -- Volker
-
Na, hier wird einem ja das Wort im Munde herumgedreht... :-)
Also, nochmal ganz klar formuliert: LD_LIBRARY_PATH ist böse böse böse!
Böse ist wer böses tut. ;)
Aber wo ist denn da der Unterschied? Wenn du die Variable in einem Skript setzt, bleibt diese während der gesamten Lebensdauer der Konsolen-Session erhalten und gesetzt. Oder verstehe ich das falsch? Soll das bedeuten, dass dieses Wrapper-Skript als Sub-Shell ausgeführt wird ???
Tatsache, die LD_LIBRARY_PATH -Umgebungsvariable wird selten gesetzt. Beim Studio z.B. nicht:
Setting Up Access to the Developer Tools and Man Pages (http://docs.sun.com/app/docs/doc/820-0273/6nc1a9djt?a=view#gemls)
-
Wenn man in einem Shell-Script eine Variable definiert, gilt sie nur innerhalb dieses Scripts. Wenn man sie mit "export" als Environment Variable deklariert, gilt dies für das aktuelle Environment und alle Kindprozesse des aktuellen Prozesses, die dieses Environment erben.
Insbesondere hat das nichts mit dem Aufrufer des Shell-Scripts zu tun. Der kann die Variable ganz anders oder garnicht setzen, er kriegt nicht mit, wie die im Shell-Script steht.
Gruß -- Volker
-
[...]
Tatsache, die LD_LIBRARY_PATH -Umgebungsvariable wird selten gesetzt. Beim Studio z.B. nicht:
Setting Up Access to the Developer Tools and Man Pages (http://docs.sun.com/app/docs/doc/820-0273/6nc1a9djt?a=view#gemls)
Ja, natuerlich nicht. Ich denke mal die waren so schlau die richtigen -R flags zu setzen.
Ich hab uebrigens auch noch nie einen LD_LIBRARY_PATH gebraucht um irgendwas zum Laufen zu kriegen, demnach stimme ich vab zu, man braucht ihn nur innerhalb von Scripts. Allerdings hat das bei mir auch ne Weile gedauert bis ich das so einigermassen raus hatte.
Probleme kriegt man wenn eigentlich nur mit fremdkompilierter Software die nicht an ihrem vorgesehenen Platz installiert oder von einem "Experten" zusammengewurstelt wurde ;)
Mfg. Erisch
-
Probleme kriegt man wenn eigentlich nur mit fremdkompilierter Software die nicht an ihrem vorgesehenen Platz installiert oder von einem "Experten" zusammengewurstelt wurde ;)
Dann hatte ich wohl bis jetzt immer "zusammengewurstelte Experten-Software". ;D
Danke Euch beiden.
Grüße
escimo
-
Dann hatte ich wohl bis jetzt immer "zusammengewurstelte Experten-Software". ;D
Ich auch. Und es steht "Oracle" drauf. ;)
-
Dann hatte ich wohl bis jetzt immer "zusammengewurstelte Experten-Software". ;D
Ich auch. Und es steht "Oracle" drauf. ;)
Naja, ich hab von Oracle keine Ahnung. Wie installiert man das? Einfach irgendwo hinschieben und LIBRARY_PATH setzen oder wie? In diesem Falle wuerde sich halt das Script anbieten.
Aber mal anders, es ist ja nicht im Sinne des Erfinders, Bibliotheken im ganzen System zu verstreuen und nachher einfach wieder nen Eintrag zum LD_LIBRARY_PATH hinzuzufuegen.
Das waere genauso, als wenn ihr zuhause eure Buecher im ganzen Haus verteilt: Eins im Schlafzimmer, eins im Keller und eins auf dem Klo und an der Haustuer nen Zettel wo welches Buch zu finden ist ;)
Mfg. Erisch