checkinstall bricht wegen nicht vorhandenem Verzeichnis ab
Hallo, da ich für die Installation von Plone Python 2.4.x benötige, habe ich mir dieses aus den Sourcen kompiliert und auf meiner openSUSE 11.1-x64 parallel installiert. ./configure und make liefen als user problemlos durch. Aber als ich mit checkinstall ein RPM erstellen wollte, brach der Prozess reproduzierbar ab. Die letzten Zeilen in der Konsole lauteten: --------- schnipp --------------------------- ~/python/Python-2.4.6/Modules/_curses_panel.c:412: error: ‘PANEL’ undeclared (first use in this function) ~/python/Python-2.4.6/Modules/_curses_panel.c:412: error: ‘pan’ undeclared (first use in this function) ~/python/Python-2.4.6/Modules/_curses_panel.c:424: warning: assignmentmakes pointer from integer without a cast ~/python/Python-2.4.6/Modules/_curses_panel.c: In function ‘PyCurses_update_panels’: ~/python/Python-2.4.6/Modules/_curses_panel.c:437: warning: implicit declaration of function ‘update_panels’ running build_scripts Creating directory /usr/local/lib/python2.4/config ranlib: could not create temporary file whilst writing archive: No more archived files make: *** [libainstall] Fehler 1 **** Installation failed. Aborting package creation. Räume auf...OK Bye. ------------------ schnapp -------------------------- Gelöst habe ich es, indem ich das Verzeichnis /usr/local/lib/python2.4/config angelegt habe (nachdem ich mit einem anderen Benutzer probiert hatte ohne Änderung). Danach konnte checkinstall das Paket bauen. Dieses ließ sich auch mit rpm -ivh installieren. Da ich checkinstall als root ausgeführt habe, ist mir dieses aktuelle Verhalten der Maschine unverständlich. Ich frage mich nun, ob da mit Updates von Paketen an der Systemumgebung etwas kaputt gegangen ist. Denn auch beim Kompilieren von OpenOffice.org tauchen seit kurzem Fehler auf, die mit der Systemumgebung zu tun haben (auch hier das Anlegen von Verzeichnissen). Ich habe mal "set >" in eine Datei schreiben lassen, bin mir aber nicht sicher, wonach ich in dieser Datei greppen soll. Danke für jeden Tipp Andreas -- ## Content Developer OpenOffice.org: lang/DE ## Freie Office-Suite für Linux, Mac, Windows, Solaris ## http://de.openoffice.org ## OpenOffice.org Portable: http://oooportable.org ## Meine Seite: http://www.amantke.de -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Sun, 17 May 2009 22:40:35 +0200 schriebst Du:
./configure und make liefen als user problemlos durch. Aber als ich mit checkinstall ein RPM erstellen wollte, brach der Prozess reproduzierbar ab. Gelöst habe ich es, indem ich das Verzeichnis /usr/local/lib/python2.4/config angelegt habe (nachdem ich mit einem anderen Benutzer probiert hatte ohne Änderung). Danach konnte checkinstall das Paket bauen. Dieses ließ sich auch mit rpm -ivh installieren. Da ich checkinstall als root ausgeführt habe, ist mir dieses aktuelle Verhalten der Maschine unverständlich. Ich frage mich nun, ob da mit Updates von Paketen an der Systemumgebung etwas kaputt gegangen ist.
Checkinstall ist eine Krücke, denn damit versaut man sich u.U. sein System, weil die Pakete nicht nach den Regeln gebaut werden, die für die Distribution gelten. Die aktuelle Version in openSUSE ist relativ unbrauchbar, da wichtige Systemfunktionen nicht abgefangen werden. Checkinstall verwendet ein Tool, welches alle Funktionen der glibc, die mit Dateien hantieren abfängt, die Daten quasi notiert und diese dann an die wahren Funktionen in der Glibc weiterreicht. Nun sind seit dem Erscheinen der letzten stabilen Version von Checkinstall etliche Funktionen zur Glibc hinzugekommen, von denen Checkinstall nichts weiss. Somit merkt es dann nicht, dass z.B. das Verzeichnis angelegt wurde. Die aktuelle Entwicklungsversion von Checkinstall kennt nun die at-Funktionen und sollte damit funktionieren. Den Link zum Git-Repository findest Du hier: http://checkinstall.izto.org . Ich werde nächster Tage - sobald mein Urlaub vorbei ist - zusehen, dass ich diese Version Für Factory einchecke. Du solltest aber wirklich solche Pakete direkt z.B. im Buildservice bauen und nicht auf dem Umweg über checkinstall. Philipp -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Philipp Thomas schrieb:
Am Sun, 17 May 2009 22:40:35 +0200 schriebst Du:
./configure und make liefen als user problemlos durch. Aber als ich mit checkinstall ein RPM erstellen wollte, brach der Prozess reproduzierbar ab. Gelöst habe ich es, indem ich das Verzeichnis /usr/local/lib/python2.4/config angelegt habe (nachdem ich mit einem anderen Benutzer probiert hatte ohne Änderung). Danach konnte checkinstall das Paket bauen. Dieses ließ sich auch mit rpm -ivh installieren. Da ich checkinstall als root ausgeführt habe, ist mir dieses aktuelle Verhalten der Maschine unverständlich. Ich frage mich nun, ob da mit Updates von Paketen an der Systemumgebung etwas kaputt gegangen ist.
Checkinstall ist eine Krücke, denn damit versaut man sich u.U. sein System, weil die Pakete nicht nach den Regeln gebaut werden, die für die Distribution gelten.
Die aktuelle Version in openSUSE ist relativ unbrauchbar, da wichtige Systemfunktionen nicht abgefangen werden. Checkinstall verwendet ein Tool, welches alle Funktionen der glibc, die mit Dateien hantieren abfängt, die Daten quasi notiert und diese dann an die wahren Funktionen in der Glibc weiterreicht. Nun sind seit dem Erscheinen der letzten stabilen Version von Checkinstall etliche Funktionen zur Glibc hinzugekommen, von denen Checkinstall nichts weiss. Somit merkt es dann nicht, dass z.B. das Verzeichnis angelegt wurde.
Die aktuelle Entwicklungsversion von Checkinstall kennt nun die at-Funktionen und sollte damit funktionieren. Den Link zum Git-Repository findest Du hier: http://checkinstall.izto.org . Ich werde nächster Tage - sobald mein Urlaub vorbei ist - zusehen, dass ich diese Version Für Factory einchecke.
Du solltest aber wirklich solche Pakete direkt z.B. im Buildservice bauen und nicht auf dem Umweg über checkinstall.
Wobei das ganze hier wohl weniger ein Problem von checkinstall sein dürfte. Läuft denn nach dem configure und make ein "make -n install" durch? Wenn nein ist der Fehler im Makefile zu suchen. Checkinstall macht nichts anderes als "make install" und merkt sich (wie oben bereits geschrieben) was der make install so alles anstell. Daraus baut er sich ein SPEC-File mit dem er dann das RPM bastelt und installiert. Gruß Daniel
Philipp
-- Daniel Spannbauer Software Entwicklung marco Systemanalyse und Entwicklung GmbH Tel +49 8333 9233-27 Fax -11 Rechbergstr. 4 - 6, D 87727 Babenhausen Mobil +49 171 4033220 http://www.marco.de/ Email ds@marco.de Geschäftsführer Martin Reuter HRB 171775 Amtsgericht München -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Mon d. 18 Mai 2009 08:17:33 +0200 schriebst Du:
Wobei das ganze hier wohl weniger ein Problem von checkinstall sein dürfte.
Genau solche nicht angelegten Verzeichnisse sind ein starker Hinweis dafür, dass der Fehler bei Checkinstall liegt. Philipp -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Philipp Thomas schrieb:
Am Mon d. 18 Mai 2009 08:17:33 +0200 schriebst Du:
Wobei das ganze hier wohl weniger ein Problem von checkinstall sein dürfte.
Genau solche nicht angelegten Verzeichnisse sind ein starker Hinweis dafür, dass der Fehler bei Checkinstall liegt.
Wenn ein make install die VErzeichnisse schon nicht anleget kann der checkinstall doch nichts dafür (was nicht heißen soll das der checkinstall fehlerfrei ist). Ich würde zuerst den install testen bevor ich da mit checkinstall rangehe..... Gruß Daniel
Philipp
-- Daniel Spannbauer Software Entwicklung marco Systemanalyse und Entwicklung GmbH Tel +49 8333 9233-27 Fax -11 Rechbergstr. 4 - 6, D 87727 Babenhausen Mobil +49 171 4033220 http://www.marco.de/ Email ds@marco.de Geschäftsführer Martin Reuter HRB 171775 Amtsgericht München -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Mon, 18 May 2009 13:03:54 +0200 schriebst Du:
Wenn ein make install die VErzeichnisse schon nicht anleget kann der checkinstall doch nichts dafür (was nicht heißen soll das der checkinstall fehlerfrei ist).
Wenn "make install" sie nicht anlegt, kann checkinstall natürlich ni hts finden. BTW, http://checkinstall.izto.org/cklist/msg00319.html legt nahe, dass wenn es das bekannte Problem mit den at-Funktionen ist, es sich mit --ftrans=no umschiffen lässt. Philipp -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo Daniel, *, Am Montag 18 Mai 2009 08:17:33 schrieb Daniel Spannbauer: (...)
Wobei das ganze hier wohl weniger ein Problem von checkinstall sein dürfte.
Läuft denn nach dem configure und make ein "make -n install" durch? Wenn nein ist der Fehler im Makefile zu suchen. Checkinstall macht nichts anderes als "make install" und merkt sich (wie oben bereits geschrieben) was der make install so alles anstell. Daraus baut er sich ein SPEC-File mit dem er dann das RPM bastelt und installiert.
Ein make -n install (als user ausgeführt) gibt mir folgendes zurück: ------------ schnipp --------------------------- make -n install if test "no-framework" != no-framework; then \ if test ! -f /Versions/Current/Resources/Info.plist; then \ echo 'Framework build: use "make frameworkinstall" in stead of "make install"'; \ exit 1; \ fi; \ fi for i in /usr/local/bin /usr/local/lib; \ do \ if test ! -d $i; then \ echo "Creating directory $i"; \ /usr/bin/install -c -d -m 755 $i; \ else true; \ fi; \ done /usr/bin/install -c python /usr/local/bin/python2.4 if test -f libpython2.4.so; then \ if test ".so" = .dll; then \ /usr/bin/install -c -m 555 libpython2.4.so /usr/local/bin; \ else \ /usr/bin/install -c -m 555 libpython2.4.so /usr/local/lib/libpython2.4.a; \ if test libpython2.4.so != libpython2.4.a; then \ (cd /usr/local/lib; ln -sf libpython2.4.a libpython2.4.so); \ fi \ fi; \ else true; \ fi for i in /usr/local/lib /usr/local/lib/python2.4; \ do \ if test ! -d $i; then \ echo "Creating directory $i"; \ /usr/bin/install -c -d -m 755 $i; \ else true; \ fi; \ done for d in lib-old lib-tk site-packages test test/output test/data test/decimaltestdata encodings email email/test email/test/data compiler hotshot logging bsddb bsddb/test csv idlelib idlelib/Icons distutils distutils/command distutils/tests xml xml/dom xml/parsers xml/sax curses plat- linux2 ; \ do \ a=./Lib/$d; \ if test ! -d $a; then continue; else true; fi; \ b=/usr/local/lib/python2.4/$d; \ if test ! -d $b; then \ echo "Creating directory $b"; \ /usr/bin/install -c -d -m 755 $b; \ else true; \ fi; \ done for i in ./Lib/*.py ./Lib/*.doc; \ do \ if test -x $i; then \ /usr/bin/install -c $i /usr/local/lib/python2.4; \ echo /usr/bin/install -c $i /usr/local/lib/python2.4; \ else \ /usr/bin/install -c -m 644 $i /usr/local/lib/python2.4; \ echo /usr/bin/install -c -m 644 $i /usr/local/lib/python2.4; \ fi; \ done for d in lib-old lib-tk site-packages test test/output test/data test/decimaltestdata encodings email email/test email/test/data compiler hotshot logging bsddb bsddb/test csv idlelib idlelib/Icons distutils distutils/command distutils/tests xml xml/dom xml/parsers xml/sax curses plat- linux2 ; \ do \ a=./Lib/$d; \ if test ! -d $a; then continue; else true; fi; \ b=/usr/local/lib/python2.4/$d; \ for i in $a/*; \ do \ case $i in \ *CVS) ;; \ *.py[co]) ;; \ *.orig) ;; \ *~) ;; \ *) \ if test -d $i; then continue; fi; \ if test -x $i; then \ echo /usr/bin/install -c $i $b; \ /usr/bin/install -c $i $b; \ else \ echo /usr/bin/install -c -m 644 $i $b; \ /usr/bin/install -c -m 644 $i $b; \ fi;; \ esac; \ done; \ done /usr/bin/install -c -m 644 ./LICENSE /usr/local/lib/python2.4/LICENSE.txt PYTHONPATH=/usr/local/lib/python2.4 \ ./python -Wi -tt /usr/local/lib/python2.4/compileall.py \ -d /usr/local/lib/python2.4 -f \ -x 'badsyntax|site-packages' /usr/local/lib/python2.4 PYTHONPATH=/usr/local/lib/python2.4 \ ./python -Wi -tt -O /usr/local/lib/python2.4/compileall.py \ -d /usr/local/lib/python2.4 -f \ -x 'badsyntax|site-packages' /usr/local/lib/python2.4 PYTHONPATH=/usr/local/lib/python2.4 \ ./python -Wi -t /usr/local/lib/python2.4/compileall.py \ -d /usr/local/lib/python2.4/site-packages -f \ -x badsyntax /usr/local/lib/python2.4/site-packages PYTHONPATH=/usr/local/lib/python2.4 \ ./python -Wi -t -O /usr/local/lib/python2.4/compileall.py \ -d /usr/local/lib/python2.4/site-packages -f \ -x badsyntax /usr/local/lib/python2.4/site-packages for i in /usr/local/include /usr/local/include /usr/local/include/python2.4 /usr/local/include/python2.4; \ do \ if test ! -d $i; then \ echo "Creating directory $i"; \ /usr/bin/install -c -d -m 755 $i; \ else true; \ fi; \ done for i in ./Include/*.h; \ do \ echo /usr/bin/install -c -m 644 $i /usr/local/include/python2.4; \ /usr/bin/install -c -m 644 $i /usr/local/include/python2.4; \ done /usr/bin/install -c -m 644 pyconfig.h /usr/local/include/python2.4/pyconfig.h case $MAKEFLAGS in \ *-s*) CC='gcc -pthread' LDSHARED='gcc -pthread -shared' OPT='-DNDEBUG -g -O3 -Wall -Wstrict-prototypes' ./python -E ./setup.py -q build;; \ *) CC='gcc -pthread' LDSHARED='gcc -pthread -shared' OPT='-DNDEBUG -g -O3 -Wall -Wstrict-prototypes' ./python -E ./setup.py build;; \ esac for i in /usr/local/lib /usr/local/lib/python2.4 /usr/local/lib/python2.4/config; \ do \ if test ! -d $i; then \ echo "Creating directory $i"; \ /usr/bin/install -c -d -m 755 $i; \ else true; \ fi; \ done if test -d libpython2.4.a; then :; else \ if test "no-framework" = no-framework; then \ if test ".so" = .dll; then \ /usr/bin/install -c -m 644 libpython2.4.a /usr/local/lib/python2.4/config ; \ else \ /usr/bin/install -c -m 644 libpython2.4.a /usr/local/lib/python2.4/config/libpython2.4.a ; \ ranlib /usr/local/lib/python2.4/config/libpython2.4.a ; \ fi; \ else \ echo Skip install of libpython2.4.a - use make frameworkinstall; \ fi; \ fi /usr/bin/install -c -m 644 Modules/config.c /usr/local/lib/python2.4/config/config.c /usr/bin/install -c -m 644 Modules/python.o /usr/local/lib/python2.4/config/python.o /usr/bin/install -c -m 644 ./Modules/config.c.in /usr/local/lib/python2.4/config/config.c.in /usr/bin/install -c -m 644 Makefile /usr/local/lib/python2.4/config/Makefile /usr/bin/install -c -m 644 Modules/Setup /usr/local/lib/python2.4/config/Setup /usr/bin/install -c -m 644 Modules/Setup.local /usr/local/lib/python2.4/config/Setup.local /usr/bin/install -c -m 644 Modules/Setup.config /usr/local/lib/python2.4/config/Setup.config /usr/bin/install -c ./Modules/makesetup /usr/local/lib/python2.4/config/makesetup /usr/bin/install -c ./install-sh /usr/local/lib/python2.4/config/install-sh if [ -s Modules/python.exp -a \ "`echo linux2 | sed 's/^\(...\).*/\1/'`" = "aix" ]; then \ echo; echo "Installing support files for building shared extension modules on AIX:"; \ /usr/bin/install -c -m 644 Modules/python.exp \ /usr/local/lib/python2.4/config/python.exp; \ echo; echo "/usr/local/lib/python2.4/config/python.exp"; \ /usr/bin/install -c ./Modules/makexp_aix \ /usr/local/lib/python2.4/config/makexp_aix; \ echo "/usr/local/lib/python2.4/config/makexp_aix"; \ /usr/bin/install -c ./Modules/ld_so_aix \ /usr/local/lib/python2.4/config/ld_so_aix; \ echo "/usr/local/lib/python2.4/config/ld_so_aix"; \ echo; echo "See Misc/AIX-NOTES for details."; \ else true; \ fi case "linux2" in beos*) \ echo; echo "Installing support files for building shared extension modules on BeOS:"; \ /usr/bin/install -c -m 644 Misc/BeOS-NOTES /usr/local/lib/python2.4/config/README; \ echo; echo "/usr/local/lib/python2.4/config/README"; \ /usr/bin/install -c Modules/ar_beos /usr/local/lib/python2.4/config/ar_beos; \ echo "/usr/local/lib/python2.4/config/ar_beos"; \ /usr/bin/install -c Modules/ld_so_beos /usr/local/lib/python2.4/config/ld_so_beos; \ echo "/usr/local/lib/python2.4/config/ld_so_beos"; \ echo; echo "See Misc/BeOS-NOTES for details."; \ ;; \ esac ./python -E ./setup.py install \ --prefix=/usr/local \ --install-scripts=/usr/local/bin \ --install-platlib=/usr/local/lib/python2.4/lib-dynload \ --root=/ for i in X ; do \ if test $i != X; then \ echo /usr/bin/install -c -m 555 $i /usr/local/lib/python2.4/lib-dynload/`basename $i`; \ /usr/bin/install -c -m 555 $i /usr/local/lib/python2.4/lib-dynload/`basename $i`; \ fi; \ done if test -f /usr/local/bin/python -o -h /usr/local/bin/python; \ then rm -f /usr/local/bin/python; \ else true; \ fi (cd /usr/local/bin; ln python2.4 python) for i in /usr/local/man /usr/local/man/man1; \ do \ if test ! -d $i; then \ echo "Creating directory $i"; \ /usr/bin/install -c -d -m 755 $i; \ else true; \ fi; \ done /usr/bin/install -c -m 644 ./Misc/python.man \ /usr/local/man/man1/python.1 ---------------- schnapp ----------------------- Das sieht so aus, als wenn die Verzeichnisse angelegt werden, oder interpretiere ich das jetzt falsch? Schönen Abend Andreas -- ## Content Developer OpenOffice.org: lang/DE ## Freie Office-Suite für Linux, Mac, Windows, Solaris ## http://de.openoffice.org ## OpenOffice.org Portable: http://oooportable.org ## Meine Seite: http://www.amantke.de -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo Philipp, *, Am Montag 18 Mai 2009 01:08:14 schrieb Philipp Thomas: (...)
Die aktuelle Entwicklungsversion von Checkinstall kennt nun die at-Funktionen und sollte damit funktionieren. Den Link zum Git-Repository findest Du hier: http://checkinstall.izto.org . Ich werde nächster Tage - sobald mein Urlaub vorbei ist - zusehen, dass ich diese Version Für Factory einchecke.
die werde ich mir dann installieren. Kannst Du mich kurz informieren, wenn Du die Version erstellt hast?
Du solltest aber wirklich solche Pakete direkt z.B. im Buildservice bauen und nicht auf dem Umweg über checkinstall.
Wenn ich die Tage wieder Zeit habe, werde ich mich mal wieder mit Buildservice beschäftigen und gucken, ob ich ein Paket gebaut bekomme. Schönen Abend und Danke für die Tipps Andreas -- ## Content Developer OpenOffice.org: lang/DE ## Freie Office-Suite für Linux, Mac, Windows, Solaris ## http://de.openoffice.org ## OpenOffice.org Portable: http://oooportable.org ## Meine Seite: http://www.amantke.de -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (3)
-
Andreas Mantke
-
Daniel Spannbauer
-
Philipp Thomas