HowTo Compile In Gentoo-de
Contents
Einführung
Gentoo ist bekannt für seine Auswahl. Unglücklicherweise sind einige Wahlmöglichkeiten arbeitsintensiver als andere. So kommt auch aMule in einer Vielzahl von Versionen und Installationmethoden, abhängig von der wxGTK Version die du nutzen willst...
Wenn du planst eine Version ohne grafische Oberfläche zu bauen, solltest du einen Blick auf http://bugs.gentoo.org/show_bug.cgi?id=109515 werfen, Kommentar #3 enthält ein Patch für wxGTK, das die Abhängigkeit auf X entfernt.
Methoden der Installation
amule-2.1.3.ebuild
Dieser ebuild passt zur aktuell stabilen Veröffentlichung von aMule, es ist seit 13.10.2007 im portage Verfügbar.
Abhängigkeiten: >=x11-libs/wxGTK-2.6.*; >=sys-libs/zlib-1.2.1; >=media-libs/libpng-1.2.0 für Fernsteuerung; >=media-libs/gd-2.0.26 für Unicode-Unterstützung.
amule-svn
Dieser ebuild ist als instabil auf allen Architekturen markiert.
Nicht gedacht für die breite Öffentlichkeit. Wenn du den täglichen Entwicklungsschnappschuß ausprobieren willst, dann ist dies der richtige für dich.
Abhängigkeiten: >=x11-libs/wxGTK-2.6.* oder 2.8.*; >=sys-libs/zlib-1.2.1; >=media-libs/gd-2.0.26; >=media-libs/libpng-1.2.0; devs-libs/geoip
Status: In Entwicklung; 2 Versionen im portage; das aktuelle Archiv braucht einen persönlichen overlay
Installationsanweisungen
amule-2.1.3.ebuild
1. Emerge Paket:
emerge --sync emerge amule -pv emerge amule
amule SVN (portage)
Portage hat 2 SVN ebuilds: amule-2.2.0_pre20070422.ebuild mit wXgtk-2.6 Untertstützung und amule-2.2.0_pre20071204.ebuild mit wXgtk-2.8 Unterstützung. Beide sind als instabil auf allen Architekturen markiert.
Um amule-2.2.0_pre20070422 zu installieren
1. Hinzufügen zu package.keywords:
echo "net-p2p/amule ~x86" >> /etc/portage/package.keywords
2. Installationseinstellungen prüfen:
emerge amule -pv
3. Passe /etc/portage/package.use an deine Bedürfnisse an:
net-p2p/amule -amuled -debug gtk nls -remote -stats unicode
Dies installiert amule ohne Deamon und Fernsteuerungsunterstützung. Um Deamon und Fernsteuerung zu aktivieren entferne das '-'. Ungefähr so:
net-p2p/amule amuled -debug gtk nls remote -stats unicode
Da aMule Unicode-Unterstützung benötigt, wird es erstmal nicht kompilieren. Du musst noch eine Zeile in x11-libs/wxGTK hinzuügen um Unicode zu aktivieren
x11-libs/wxGTK unicode
Persönlich habe ich das unicode USE flag in /etc/make.conf, so dass jedes Programm das Unicode unterstützt mit Unicode-Unterstützung kompiliert wird.
4. aMule installieren:
emerge amule
Um amule-2.2.0_pre-20071204 zu installieren
Wir müssen wxGTK-2.8 demaskieren. Gehe vor wie bei amule-2.2.0_pre20070422, aber mit diesem ergänzenden Schritt:
1. Demaskiere amule-2.2.0_pre-20071204 und wxGTK-2.8
echo "=net-p2p/amule-2.2.0_pre20071204" >> /etc/portage/package.unmask echo "=x11-libs/wxGTK-2.8.7.1" >> /etc/portage/package.unmask
amule SVN (aktuellste)
Es gibt keinen ebuild für das akuellste aMule SVN also müssen wir eines im portage hinzufügen. Dafür brauchen wir einen persönlichen portage overlay. Wenn du noch keinen hast, folge diesem Artikel.
Wir orientieren uns am portage Namensschema. SVN ebuilds aus einem SVN Archiv werden nicht als paket_name-svn sondern als paket_name-version_datum_des_archives benannt. Das ist, um sie von echten SVN ebuilds (sogenannten live ebuilds), die als paket_name-9999 bezeichnet werden und das Schlüsselwort keywords="" nutzen, zu unterscheiden.
1. Definiere PORTDIR_OVERLAY. Öffne /etc/make.conf mit deinem bevorzugten Texteditor und definiere die PORTDIR_OVERLAY Variable. Wir verwenden:
PORTDIR_OVERLAY="/usr/local/portage"
2. Erstelle das overlay für amule-svn:
mkdir -p /usr/local/net-p2p/amule
3. Füge zu package.keywords hinzu:
echo "net-p2p/amule ~x86" >> /etc/portage/package.keywords
4. Kopiere das folgende ebuild in {PORTDIR_OVERLAY}/net-p2p/amule/amule-2.2.0_p20071217.ebuild
Ich verwende hier das Archiv vom 17 Dezember 2007 das hier wunderbar funktioniert hat, aber das Datum kannst du anpassen wie du willst. Ich nutze p um es von denem im portage (welche pre nutzen) zu unterscheiden.
# Copyright 1999-2007 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: $ inherit eutils flag-o-matic wxwidgets MY_PN=${PN/m/M} MY_PV="${PV/2.2.0_p/}" S="${WORKDIR}/amule-svn" DESCRIPTION="aMule, the all-platform eMule p2p client" HOMEPAGE="http://www.amule.org/" SRC_URI="http://www.hirnriss.net/files/cvs/${MY_PN}-CVS-${MY_PV}.tar.bz2" RESTRICT="nomirror" LICENSE="GPL-2" SLOT="0" KEYWORDS="~alpha ~amd64 ~hppa ~ppc ~ppc64 ~sparc ~x86" IUSE="amuled debug geoip gtk nls remote stats unicode" DEPEND="=x11-libs/wxGTK-2.8* >=sys-libs/zlib-1.2.1 stats? ( >=media-libs/gd-2.0.26 ) geoip? ( dev-libs/geoip ) remote? ( >=media-libs/libpng-1.2.0 unicode? ( >=media-libs/gd-2.0.26 ) )" pkg_setup() { if ! use gtk && ! use remote && ! use amuled; then eerror "" eerror "You have to specify at least one of gtk, remote or amuled" eerror "USE flag to build amule." eerror "" die "Invalid USE flag set" fi if use stats && ! use gtk; then einfo "Note: You would need both the gtk and stats USE flags" einfo "to compile aMule Statistics GUI." einfo "I will now compile console versions only." fi if use stats && ! built_with_use media-libs/gd jpeg; then die "media-libs/gd should be compiled with the jpeg use flag when you have the stats use flag set" fi } pkg_preinst() { if use amuled || use remote; then enewgroup p2p enewuser p2p -1 -1 /home/p2p p2p fi } src_compile() { local myconf WX_GTK_VER="2.8" if use gtk; then einfo "wxGTK with gtk support will be used" need-wxwidgets unicode else einfo "wxGTK without X support will be used" need-wxwidgets base fi if use gtk ; then use stats && myconf="${myconf} --enable-wxcas --enable-alc" use remote && myconf="${myconf} --enable-amule-gui" else myconf=" --disable-monolithic --disable-amule-gui --disable-wxcas --disable-alc" fi econf \ --with-wx-config=${WX_CONFIG} \ --with-wxbase-config=${WX_CONFIG} \ --enable-amulecmd \ $(use_enable debug) \ $(use_enable !debug optimize) \ $(use_enable amuled amule-daemon) \ $(use_enable geoip) \ $(use_enable nls) \ $(use_enable remote webserver) \ $(use_enable stats cas) \ $(use_enable stats alcc) \ ${myconf} || die # we filter ssp until bug #74457 is closed to build on hardened filter-flags -fstack-protector -fstack-protector-all emake -j1 || die } src_install() { emake DESTDIR="${D}" install || die if use amuled; then newconfd "${FILESDIR}"/amuled.confd amuled newinitd "${FILESDIR}"/amuled.initd amuled fi if use remote; then newconfd "${FILESDIR}"/amuleweb.confd amuleweb newinitd "${FILESDIR}"/amuleweb.initd amuleweb fi }
5. Wechsle das Verzeichnis:
cd /usr/local/portage/net-p2p/amule/
6. Erstelle den Digest:
ebuild amule-2.2.0_p10071217.ebuild digest
7. Überprüfe die Einstellungen:
emerge amule -pv
8. Passe /etc/portage/package.use an deine Bedürfnisse an (beachte, das debug unabhängig vom USE flag immer aktiviert wird):
net-p2p/amule -amuled -debug geoip gtk nls -remote -stats unicode
Dies installiert amule ohne Deamon und Fernsteuerungsunterstützung. Um den Deamon und Fernsteuerung zu aktivieren entferne das '-' ungefähr so:
net-p2p/amule amuled -debug geoip gtk nls remote -stats unicode
Da aMule Unicode-Unterstützung benötigt, wird es erstmal nicht kompilieren. Du musst noch eine Zeile in x11-libs/wxGTK hinzufügen um Unicode zu aktivieren
x11-libs/wxGTK unicode
9. aMule SVN installieren:
emerge amule
BITTE führe emerge amule -pv vor der Installation aus um zu sehen wie aMule kompiliert wird.
aMule 2.1.1 Kompilier FAQ
Beim kompilieren von aMule-2.1.1 auf einem gehärteten System mit gcc-3.4.5(oder höher), bricht es mit einer Fehlermeldung ab, in der Art:
WebServer.h: In member function `T* UpdatableItemsContainer<T, G, I>::GetByID(I) [with T = SharedFile, G = CEC_SharedFile_Tag, I = CMD4Hash]': WebServer.h:270: internal compiler error: in sweep_string_variable, at protector.c:1158
Das Problem ist wahrscheinlich das -fPIE CFLAG weil `gcc-config` mit der Auswahl i386-pc-linux-gnu-3.4.5-hardenednopiessp dieses Problem behoben hat, und du dadurch folgendes aus dem ebuild entfernen kannst:
if has_hardened; then filter-flags -fstack-protector -fstack-protector-all fi
Mehr über dieses Thema kannst du unter folgendem Link finden: http://bugs.gentoo.org/show_bug.cgi?id=74457