aMule Forum
Deutsch => de_Linux => Topic started by: Schuttwegraeumer on April 09, 2010, 03:35:15 AM
-
Ich baue meine amule Builds mit checkinstall und zwar so dass nur das Paket gebaut wird und nicht gleich isntalliert wird.
Jetzt ist mir aufgefallen dass es doch installiert wird, allerdings keine Spuren in der Paketverwaltung hinterlässt, etwa so wie "make install".
Das ist natürlich absolut unbefriedigend.
Keine Ahnung wie lange das schon so ist.
Ich verwende diese Zeile zum bauen des builds:
sudo checkinstall --install=no
und habe derzeit Ubuntu 10.04 für 64bit drauf falls das was ausmacht.
Version ist "checkinstall 1.6.1", die hat sich aber schon seit Ewigkeiten nicht mehr geändert.
-
Auszug kopiert von: http://www.asic-linux.com.mx/~izto/checkinstall/docs/RELNOTES
CheckInstall 1.6.0beta1
======================================
* The "--install=<yes|no>" command line option indicates wether you want
to actually install the package on your system or just create it
without installing it. This is a new feature and still in beta stage.
Please test it and report any bugs you find (Or success, too! :-) )
Sieht demnach ganz so aus, als würde das Feature nicht funktionieren.
-
In einem Forum meint jemand dass es auch am makefile liegen könnte.
Ich habe bisher immer erst das .deb gebaut, dann erst das alte Programm deinstalliert und das neue installiert.
Es kann also sein dass mir das Problem nur sehr lange nicht auffiel.
-
Warum so umständlich?
Du kannst beim configure einen Installationspfad in deinem home angeben und es dann ohne su "installieren".
Dann bleibt dein System unberührt.
-
Warum so umständlich?
Du kannst beim configure einen Installationspfad in deinem home angeben und es dann ohne su "installieren".
Dann bleibt dein System unberührt.
Wie manst du das?
Nur beim checkinstall wird sudo verwendet.
Sonst wird fürs ./configure und das make kein sudo verendet, ich habe mein Verzeichnis in dem sich das alles abspielt ja bei mir im home Verzeichnis.
Aber ich habe jetzt gelesen, dass man mit "make checkinstall" auch die unbeabsichtigte Installation vermeiden kann.
WErde das testen sobald wieder eine neues TAR da ist.
-
Warum nicht einfach "make -f debian/rules <paket>? README.Debian-Package dürfte ausführlich genug sein. Falls nicht, sag Bescheid dann überarbeite ich das. Auf die Art kriegst du alles, ausser plasmamule und fileview. Das dürfte sich aber in nächster Zeit auch ändern.
-
Wie manst du das?
Ich meine, bei configure --prefix=/home/name/amule/bin übergeben. Dann make und make install (als normaler User). Fertig. Kein .deb, kein checkinstall, kein nix.
-
Was ich will ist eigentlich ganz einfach.
Ich will ein .deb Paket das einfach nur den amule installiert.
Und was ich absolut nicht will ist dass ich die Kontrolle über die Installation verliere.
Was ich auf JEDEN FALL vermeiden will ist dass sich etwas am Paketmanager vorbei installiert.
Und Installation direkt ins home Verzeichnis ist nicht mein Ziel.
Ich will einfach nur ein .deb haben das funktioniert.
Installieren kann ich das dann eh selber ohne Probleme.
-
"make -f debian/rules amule i18n-de"
Das baut zwar auch die Pakete für die englische Übersetzung und die Skins, die brauchst du aber nicht installieren.
-
"make -f debian/rules amule i18n-de"
Das baut zwar auch die Pakete für die englische Übersetzung und die Skins, die brauchst du aber nicht installieren.
also das soll ich statt male eingeben zum kompilieren?
Werde ich mal testen.
Das liest "debian" ein, ist dort die Anweisung wie ein .deb zu bauen ist?
Muss mich wohl mehr damit beschäftigen.
-
Ok, ich baue mal ein Build nach dem Rat und schaue auch ob sich da was unerwünscht installiert oder nicht.
Dauert ja nicht lange.
-
Wie gesagt, in der README steht alles, alternativ "make -f debian/rules help" oder nur "make -f debian/rules". Das macht von autogen.sh über configure, make make install in tmp-dir und Pakete bauen alles.
-
Ich habe jetzt das configure vorher laufen lassen wie bisher da ich da eine Menge Angaben dabei habe.
-
Also ich bekomme da nur:
s -lwx_baseu_net-2.8 -lwx_baseu-2.8
make[4]: Verlasse Verzeichnis '/home/schutti/Desktop/X/aMule/amule/src'
make[3]: Verlasse Verzeichnis '/home/schutti/Desktop/X/aMule/amule/src'
Making all in unittests
make[3]: Betrete Verzeichnis '/home/schutti/Desktop/X/aMule/amule/unittests'
make[4]: Betrete Verzeichnis '/home/schutti/Desktop/X/aMule/amule/unittests'
make[4]: Für das Ziel »all-am« ist nichts zu tun.
make[4]: Verlasse Verzeichnis '/home/schutti/Desktop/X/aMule/amule/unittests'
make[3]: Verlasse Verzeichnis '/home/schutti/Desktop/X/aMule/amule/unittests'
make[3]: Betrete Verzeichnis '/home/schutti/Desktop/X/aMule/amule'
make[3]: Verlasse Verzeichnis '/home/schutti/Desktop/X/aMule/amule'
make[2]: Verlasse Verzeichnis '/home/schutti/Desktop/X/aMule/amule'
make[1]: Verlasse Verzeichnis '/home/schutti/Desktop/X/aMule/amule'
touch build-stamp
dh_testdir
dh_testroot
dh_testroot: You must run this as root (or use fakeroot).
make: *** [install] Fehler 255
schutti@hell:~/Desktop/X/aMule/amule$ mv *.deb ..
mv: Aufruf von stat für „*.deb“ nicht möglich: No such file or directory
schutti@hell:~/Desktop/X/aMule/amule$
-
dh_testroot: You must run this as root (or use fakeroot).
Wenn du das ganze als user ausführen willst, musst du es per fakeroot -- <Befehl> starten.
-
Sodala, ist fertig, allerdings mit einem Fehler:
find debian/amule-skin-xfce/usr/share/man debian/amule-skin-xfce/usr/man/ debian/amule-skin-xfce/usr/X11*/man/ -type f -print0 2>/dev/null | xargs -0r chmod 644
find debian/amule-skin-xfce -perm -5 -type f \( -name '*.so*' -or -name '*.la' -or -name '*.a' \) -print0 2>/dev/null | xargs -0r chmod 644
find debian/amule-skin-xfce/usr/include -type f -print0 2>/dev/null | xargs -0r chmod 644
find debian/amule-skin-xfce/usr/share/applications -type f -print0 2>/dev/null | xargs -0r chmod 644
find debian/amule-skin-xfce -perm -5 -type f \( -name '*.cmxs' \) -print0 2>/dev/null | xargs -0r chmod 644
find debian/amule-skin-xfce/usr/lib/perl5 debian/amule-skin-xfce/usr/share/perl5 -type f -perm -5 -name '*.pm' -print0 2>/dev/null | xargs -0r chmod a-X
dpkg-deb --build debian/amule-skin-xfce ..
dpkg-deb: Baue Paket »amule-skin-xfce« in »../amule-skin-xfce_2.2.6+svn-9854_amd64.deb«.
touch amule-common
dh_testdir -pamule
dh_testroot -pamule
dh_installdirs -pamule
install -d debian/amule
install -d debian/amule/usr/bin debian/amule/usr/share/applications debian/amule/usr/share/lintian/overrides debian/amule/usr/share/pixmaps debian/amule/usr/share/menu debian/amule/usr/share/man/man1 debian/amule/usr/share/man/hu/man1 debian/amule/usr/share/man/fr/man1 debian/amule/usr/share/man/eu/man1 debian/amule/usr/share/man/es/man1 debian/amule/usr/share/man/de/man1 debian/amule/usr/share/doc/amule
dh_installchangelogs docs/Changelog -pamule
install -o 0 -g 0 -p -m644 debian/changelog debian/amule/usr/share/doc/amule/changelog.Debian
install -o 0 -g 0 -p -m644 docs/Changelog debian/amule/usr/share/doc/amule/changelog
dh_installdocs -pamule
install -g 0 -o 0 -m 644 -p debian/amule.README.Debian debian/amule/usr/share/doc/amule/README.Debian
install -g 0 -o 0 -m 644 -p debian/TODO debian/amule/usr/share/doc/amule/TODO.Debian
install -g 0 -o 0 -m 644 -p debian/copyright debian/amule/usr/share/doc/amule/copyright
dh_install -Xlicense.txt -pamule
cp -a debian/tmp/debian/tmp/usr/bin/amule debian/amule//usr/bin/
cp: Aufruf von stat für „debian/tmp/debian/tmp/usr/bin/amule“ nicht möglich: No such file or directory
dh_install: cp -a debian/tmp/debian/tmp/usr/bin/amule debian/amule//usr/bin/ returned exit code 1
make: *** [amule-stage1] Fehler 2
schutti@hell:~/Desktop/X/aMule/amule$
Es wurden mehrere Pakete abgelegt.
-rw-r--r-- 1 root root 244828 2010-04-09 20:27 amule-common_2.2.6+svn-9854_amd64.deb
-rw-r--r-- 1 root root 126630 2010-04-09 20:27 amule-skin-gnome_2.2.6+svn-9854_amd64.deb
-rw-r--r-- 1 root root 126632 2010-04-09 20:27 amule-skin-kde4_2.2.6+svn-9854_amd64.deb
-rw-r--r-- 1 root root 126562 2010-04-09 20:27 amule-skin-mac-gray_2.2.6+svn-9854_amd64.deb
-rw-r--r-- 1 root root 126558 2010-04-09 20:27 amule-skin-priscilla_2.2.6+svn-9854_amd64.deb
-rw-r--r-- 1 root root 126624 2010-04-09 20:27 amule-skin-tango_2.2.6+svn-9854_amd64.deb
-rw-r--r-- 1 root root 126632 2010-04-09 20:28 amule-skin-xfce_2.2.6+svn-9854_amd64.deb
allerdings hat die common nur 239 kB, wo ist der Rest?
Ich hsbe bisher immer alles was ich wollte in ein File reingebaut.
-
Den Fehler kann ich ohne ein komplettes log nicht nachvollziehen. Hier klappts einwandfrei. Natrülich ist das common sehr klein, da der Rest in separate Pakete ausgelagert ist. Du kannst auch einfach "dpkg-buildpackage -us -uc -b -rfakeroot" ausführen, dann wird alles gebaut, und du kannst dir aussuchen welche Pakete gebaut werden. Checkinstall ertstellt halt nur ein Paket mit allem, allerdings ohne Abhängigkeits oder Konfliktsauflösung, womit man sich böse in den Fuß schießen kann.
-
Es muss was fehlen denn alle zusammen sind einfach zu klein um alles drinnen zu haben.
-
Welches LOG hättest du gerne, wo finde ich es?
-
Das log das den gesamten Bauvorgang aufzeichenet. Am einfachsten indem du script -c vorne dranstellst. Wenn du meinst, das die Pakete zu klein sind um alles zu enthalten, stimmt. Ich hatte dir aber auch gesagt was gebaut wird und was nicht. Wenn du alles haben willst, dann nehme den dpkg Befehl.
-
Den Fehler kann ich ohne ein komplettes log nicht nachvollziehen. Hier klappts einwandfrei. Natrülich ist das common sehr klein, da der Rest in separate Pakete ausgelagert ist. Du kannst auch einfach "dpkg-buildpackage -us -uc -b -rfakeroot" ausführen, dann wird alles gebaut, und du kannst dir aussuchen welche Pakete gebaut werden. Checkinstall ertstellt halt nur ein Paket mit allem, allerdings ohne Abhängigkeits oder Konfliktsauflösung, womit man sich böse in den Fuß schießen kann.
Einfach?
Wie einfach?
Statt was wird das eingegeben?
Statt dem make?
-
Mit einfach eingeben meint man in der Regel nur das. Du brauchts nichtmal configure aufzurufen, da das sowieso gemacht wird, ebenso wie autogen falls nötig, make usw. Der ein Befehl macht alles andere überflüssig.
-
Soll ich das jetzt komplett ohne vorherigem configure eingeben?
Wie gebe ich da die Schalter ein die ich sonst mit configure eingegeben hätte?
-
Da will er die
libgtk2.0-dev libgd2-xpm-dev libreadline5-dev
haben.
Die braucht er sonst nicht.
-
"make checkinstall" geht auch nicht.
Da gibts keine Regeln dafür.
-
Das ist doch mal ne Meldung mit der man was anfangen kann. Das heißt also das du nicht alles willst, da du amulecmd normalerweise nicht baust. Wenn du mir die Schalter schin auf der letzten Seite genannt hättest, wäre das schonmal klar. Ein checkinstall target hab ich persönblich noch nie gesehen, also kein Wunder das das fehlt.
Du kannst jetzt entweder das log erstellen (man script), oder die fehlenden build-deps installieren. Ich muss jetz nach Gießen aufs Festival, und bin erst morgen wieder da.
-
Das log das den gesamten Bauvorgang aufzeichenet. Am einfachsten indem du script -c vorne dranstellst. Wenn du meinst, das die Pakete zu klein sind um alles zu enthalten, stimmt. Ich hatte dir aber auch gesagt was gebaut wird und was nicht. Wenn du alles haben willst, dann nehme den dpkg Befehl.
Wie wird das gemacht?
Also "script -c make"?
Oder wie ist das gemeint?
-
Das log das den gesamten Bauvorgang aufzeichenet. Am einfachsten indem du script -c vorne dranstellst. Wenn du meinst, das die Pakete zu klein sind um alles zu enthalten, stimmt. Ich hatte dir aber auch gesagt was gebaut wird und was nicht. Wenn du alles haben willst, dann nehme den dpkg Befehl.
Wie wird das gemacht?
Also "script -c make"?
Oder wie ist das gemeint?
So , läuft.
Ich nehme mal an die "typescript" ist das log das du willst.
Wird gleich fertig sein.
-
"script -c make" hat scheinbar das Logfile angelegt.
-
Ich habe jetzt versucht das auch mit dem checkinstall zu machen da dort ja der eigentlich Fehler liegt.
Nur wie baue ich das script in "sudo checkinstall --install=no"
Bei "sudo script -c checkinstall --install=no" und bei "script -c sudo checkinstall --install=no" gehts nicht, da kommt immer
script: invalid option -- '-'
Aufruf: script [-a] [-f] [-q] [-t] [Datei]
Wo mache ich da einen Fehler?
-
Zur Ergänzung noch die config.log.
-
Tja, das log erstellen hat funktioniert. Allerdings wäre das log von der Paketerstellung die das aMule binary icht erstellen konnte wohl sinnvoller um den Fehler zu finden, als das Log von einem Make lauf in dem debian/rules nicht involviert ist.
-
Nur wie bringe ich das log script dort unter?
Meine Test waren wie gesagt nicht erfolgreich.
-
Einfach in dem script commando statt make "make -f debian/rules <deine Auswahl>" anhängen (mit Anführungszeichen). Script schreibt sämtliche Ausgaben mit, es ist egal ob der Befehl erfolgreich beendet wird oder nicht.
-
statt <deine Auswahl> jetzt:
--disable-debug --enable-optimize --disable-ccache --disable-upnp --disable-xas --enable-alc --enable-alcc --disable-xas --enable-amulecmd --enable-webserver --enable-amule-daemon --enable-amule-gui --enable-mmap --enable-fileview
?
-
Ich lasse mal
sudo script -c"make -f debian/rules amule i18n-de"
laufen.
Geduld bitte.
-
Ok, habe mal
sudo script -c "make -f debian/rules amule i18n-de"
laufen lassen, hier das log.
-
Das war zwar kein sauberer sourcetree, aber ich sehe das Problem. Welche debhelper version hast du denn installiert?
Du solltest nochmal die README dir ich dir zuallererst genannt habe lesen. mit amule i18n-de wählst du die Pakete die du erstellt haben willst, in deinem Fall sollten es aber mehr sein. Wenn du debhelper unter v7 hast wird das so nicht funktionieren, da fehlen Funktionen. Falls du doch debhelper 7 hast, wäre die Distribution wichtig, vielleicht haben die ja wieder mal was für sich angepasst wenns nicht Debian ist.
-
7.4.15 sagt Synaptic.
-
Sodala, hat gedauert aber ich habe es geschafft vom checkinstall mit unerwünschter Installation ein LOG zu machen.
-
Was könnte man denn noch loggen?
-
Hab das ganze mal in #debian-mentors zur Sprache gebracht. Falls du nicht irgendwelche merkwürdigen Einstellungen in der Config gemacht hast, gibt es keine logische Erklärung für das Problem. Wie du in deinem log sehen kannst, schlägt die installation von debian/tmp/debian/tmp/usr/bin/amule fehl. Bei mir installiert er debian/tmp/usr/bin/amule welches auch existiert. Die Jungs haben mir zum Versuch mit pbuilder geraten, was allerdings bei mir das selbe Ergebnis brachte. Das könntest du auch ausprobieren, vielleicht klappts dann ja.
Ansonsten mal dumm gefragt, warum nimmst du nicht einfach die fertigen Pakete die ich bereitstelle, du brauchst dann nicht zu kompilieren, und einfach nur auswählen was du gerne hättest. Im Schnitt sind die Pakete eine Stunde nach Veröffentlichung abrufbar.
-
Welche checkinstall Version verendest du genau?
-
Checkinstall ist von Anfang an ein schmutziger Hack, der irgendwann veröffentlicht wurde, und sollte von niemandem benutzt werden.
-
Du kannst auch einfach "dpkg-buildpackage -us -uc -b -rfakeroot" ausführen, dann wird alles gebaut, und du kannst dir aussuchen welche Pakete gebaut werden.
Wie müsste das aussehen wenn ich sonst mit den Parametern
./configure --disable-debug --enable-optimize --disable-ccache --disable-upnp --disable-xas --enable-alc --enable-alcc --disable-xas --enable-amulecmd --enable-webserver --enable-amule-daemon --enable-amule-gui --enable-mmap --enable-fileview
arbeite und den amule als ein einziges .deb File haben will?
-
Checkinstall ist von Anfang an ein schmutziger Hack, der irgendwann veröffentlicht wurde, und sollte von niemandem benutzt werden.
Und darüber diskutiert ihr drei Seiten lang? ;D
-
Ach du scheisse.
dpkg-buildpackage -us -uc -b -rfakeroot
baut wirklich jede Funktion als eigenes Paket, jetzt habe ich 68 .deb Dateien im Verzeichnis.
Wie baue ich alle in ein File rein?
Und kann ich die configure settings auch gleich dort mitübergeben?
-
Wenn du alle .install .manpages .lintian-overrides .links .dirs .postinst und .postrm .menu der Pakete die du haben willst in eine amule.<entsprechende-endung> zusammenkopierst, in der .lintian-overrides die Paketbezeichnung am Anfang der Zeilen änderst, in debian/control in den Zeilen 13, 14 und 15 alle vorkommen desselben Schlüsselwortes im Rest der Datei, sowie der Zeilen die mit "Conflicts:" anfangen zusammen kopierst, alles was mit" amule-" beginnt in "amule" änderst, dafür sorgst das jedes Paket nur einmal genannt wird, dann in Zeile 13 alles rausnimmst was mit "amule" zu beginnt, dann alles ab Zeile 21 löschst und in Zeile 5 entfernst was dich stört, in debian/rules die Variablen in den Zeilen 316 -334 mit den Werten aus den Zeilen 29 - 39 ersetzt und dabei weglässt was du nicht brauchst, Zeile 488 bis auf amule zusammenstreichst und dann die Zeilen 13 - 279, 361 - 387, 398 - 409, 412 - 487 und 489 - 491 entfernst. könnte es klappen, falls ich jetzt nichts übersehen habe.
@Stu: Das hatte ich schonmal in irgendeinem Thread klargestellt. wenn die Scheiße halbwegs brauchbar wäre hätte ich mich hier überhauptnicht geäußert, sondern euch einfach machen lassen.
-
WElche Programme zum Erstellen eines .deb Paketes gibt es denn noch ausser den beiden genannten?
-
Sodala, es geht hier weiter. ;D
Ich habe jetzt checkinstall 1.6.2 drauf und ich schaffe es auch ohne root REchte und sonstige Probleme ein.deb zu bauen.
Ausnahme ist amule.
Das heisst es geht schon, bedingung ist dass im Moment wo checkinstall durchläuft amule installiert ist, dann läuft es schnell durch.
Ist es nicht installiert bricht der Prozess ab mit dieser Meldung:
/bin/mkdir: kann Verzeichnis „/usr/local/share/amule“ nicht anlegen: No such file or directory
make[4]: *** [install-dist_webserverDATA] Fehler 1
make[4]: Verlasse Verzeichnis '/home/schutti/Desktop/X/aMule/amule-2.2.6+svn-r10148/src/webserver/default'
make[3]: *** [install-am] Fehler 2
make[3]: Verlasse Verzeichnis '/home/schutti/Desktop/X/aMule/amule-2.2.6+svn-r10148/src/webserver/default'
make[2]: *** [install-recursive] Fehler 1
make[2]: Verlasse Verzeichnis '/home/schutti/Desktop/X/aMule/amule-2.2.6+svn-r10148/src/webserver'
make[1]: *** [install-recursive] Fehler 1
make[1]: Verlasse Verzeichnis '/home/schutti/Desktop/X/aMule/amule-2.2.6+svn-r10148/src'
make: *** [install-recursive] Fehler 1
**** Installation fehlgeschlagen. Breche Paket-Erzeugung ab.
Räume auf...OK
Auf Wiedersehen!
Sorry, die Fehlermeldung ist leider auf Deutsch.
Das Problem ist beliebig reproduzierbar und scheint nur amule zu betreffen.
Das zweite Programm welches ich doch regelmässig compiliere und alles dafür eingerichtet habe is wesnoth welches aber sich mit einer ähnlichen Mehtode (habe ich auch so umgestellt dass man keine root Rechte braucht ) problemlos kompilieren lässt auch wenn das zusammenstellen jetzt rein subjektiv mehr Zeit braucht.
Ich gehe bei bauen des amule so vor:
./configure --disable-debug --enable-optimize --disable-ccache --disable-upnp --disable-xas --enable-alc --enable-alcc --disable-xas --enable-amulecmd --enable-webserver --enable-amule-daemon --enable-amule-gui --enable-mmap --enable-fileview
make
checkinstall --install=no --fstrans=yes
der letzte Befehl läuft eben nur durch wenn ich den bereits installierten amule erst danach deinstalliere und das neue compilat installiere, deinstalliere ich es davor bricht er ab.
Wie könnte man diesem doch recht eigenwilligen Fehler auf die SPur kommen?