Compilare aMule su Ubuntu 18.04 a 64 bit


#1

Ciao a tutti, mi sto per apprestare a compilare aMule (versione Moonriver 599) su Ubuntu 18.04 LTS a 64 bit, seguo i primi passi leggendo un pochino qua e la, installo i pacchetti necessari… e poi ? Mi sono fermato quasi subito, allora ho pensato che magari qualcun’altro aveva già fatto quello che sto facendo io e poteva darmi una mano.
Se qualcuno ha compilato con successo aMule su Ubuntu a 64 bit, può spiegare come fare ? Premetto che a me interessa compilare amuled, la versione demone, quella che gira senza interfaccia, per capirci. La macchina su cui gira è un server ed ha solo la linea di comando.

Intanto spiego quello che ho fatto io:

apt-get install build-essential

apt-get install autogen automake1.10 libgtk2.0-dev zlib1g-dev libpng12-dev libgd2-xpm-dev libcrypto+±dev libgeoip-dev libglib2.0-dev libwxgtk2.8-dev flex bison gettext binutils-dev autopoint libupnp6-dev libupnp6

poi ho eseguito

./autogen.sh

dopo, a seguito di alcuni errori ho dovuto installare altri pacchetti:

apt-get install autoconf
apt-get install autopoint

ho editato il file configure.ac, modificando AM_INIT_AUTOMAKE in AM_INIT_AUTOMAKE([subdir-objects]) cosa che era richiesta per gestire i sorgenti nelle sottodirectory

a questo punto ho tentato di eseguire

./configure --enable-optimize –disable-debug –enable-amule-daemon –disable-geoip –disable-amulecmd –disable-webserver –disable-amule-gui –disable-monolithic –disable-ed2k

ed ho ottenuto:

configure: WARNING: you should use --build, --host, --target

qui mi sono fermato.
Se avete suggerimenti…


Amule adunanza su ubuntu 16.10
#2

Ciao è un po’ che non compilo amule, comunque hai ottenuto solo un warning, non dovrebbe compromettere la ocmpilazione.

Puoi continuare a compiilare con make e vedere se riesce.

Facci sapere


#3

Questa mi è nuova… C’è un’interessante discussione su github per una proposta di modifica similare ma per diversi motivi è sempre stata rifiutata. Ti consiglierei di rimuovere la modifica e tenere i vari warning.

Non so poi se è un problema di copia-e-incolla o di visualizzazione del forum ma non mi tornano neppure le tue opzioni di configure (devono iniziare tutte con 2 caratteri “-”, mentre io con il doppio carattere vedo solo la prima opzione).

Per farla breve io l’ho appena compilato nel segg. modo (occhio agli apt-get install, io h usato una macchina in cui avevo già un bel po’ di roba installata quindi magari ne servono altri)

sudo apt-get install binutils-dev pkg-config autopoint flex bison zlib1g-dev libpng-dev libupnp-dev libgeoip-dev libcrypto++-dev libwxbase3.0-dev libwxgtk3.0-dev subversion

Poi ho tirato giù i sorgenti con subversion

svn checkout https://svn.code.sf.net/p/amule-adunanza/code/branches/MoonRiver MoonRiver

quindi

cd MoonRiver
./autogen.sh
./configure --prefix=/usr --libdir=/usr/lib --enable-optimize --disable-debug --enable-amule-daemon --enable-geoip --enable-amulecmd --enable-webserver --enable-amule-gui --with-boost

e poi, ovviamente, il solito

make

Occhio: in questo modo compili con boost versione di Ubuntu. Non costa molto scaricarsi i sorgenti di boost da boost.org, decomprimerli in qualche directory e poi aggiungere nei parametri di configure

--with-boost=<full path sorgenti di boost>

Ad esempio, se avessi decompresso boost 1.72.0 in /home/stevenp (e ti è stata creata quindi /home/stevenp/boost_1_72_0) dovresti usare

--with-boost=/home/stevenp/boost_1_72_0

Ciao,
Mr Hyde


#4

Ciao, ho seguito le tue istruzioni con questo comando

./configure --enable-optimize --enable-amule-daemon --disable-geoip --enable-amulecmd --disable-amule-gui --disable-monolithic --with-boost=/home/stevenp/boost_1_72_0

e sono arrivato qui:

checking for the --with-toolkit option... will be automatically detected
checking for the --with-wxshared option... will be automatically detected
checking for the --with-wxdebug option... will be automatically detected
checking for the --with-wxversion option... will be automatically detected
checking for wx-config... /usr/local/bin/wx-config
checking for wxWidgets version >= 2.8.12 (--unicode=yes)... yes (version 2.8.12)
checking for wxWidgets static library... no
checking if wxWidgets was built with UNICODE enabled... yes
checking if wxWidgets was built in DEBUG mode... no
checking if wxWidgets was built in STATIC mode... no
checking which wxWidgets toolkit was selected... base
checking for libupnp version >= 1.6.6... yes (version 1.6.24)
checking for crypto++ version >= 5.1... yes (version 5.6.4)
checking whether the C++ compiler (g++) uses strict aliasing... yes
checking that wxWidgets has support for large files... no
configure: error:
        Support for large files in wxWidgets is required by aMule.
        To continue you must recompile wxWidgets with support for
        large files enabled.

se bypasso il test sulle wxWidgets rimuovendo amule-daemon poi usando make accade questo:

make[3]: Entering directory '/home/administrator/test/MoonRiver/src/libs'
Making all in common
make[4]: Entering directory '/home/administrator/test/MoonRiver/src/libs/common'
depbase=`echo FileFunctions.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
g++ -DHAVE_CONFIG_H -I. -I../../..  -D__DEBUG__ -DUSE_WX_EXTENSIONS -DHAVE_BFD -I/usr/local/lib/wx/include/base-unicode-release-2.8 -I/usr/local/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -DwxUSE_GUI=0 -DwxUSE_GUI=0  -g -W -Wall -Wshadow -Wundef -ggdb -fno-inline -fmessage-length=0 -O2 -pthread   -MT FileFunctions.o -MD -MP -MF $depbase.Tpo -c -o FileFunctions.o FileFunctions.cpp &&\
mv -f $depbase.Tpo $depbase.Po
FileFunctions.cpp:27:10: fatal error: wx/dir.h: No such file or directory
 #include <wx/dir.h>  // Needed for wxDir
          ^~~~~~~~~~
compilation terminated.
Makefile:538: recipe for target 'FileFunctions.o' failed
make[4]: *** [FileFunctions.o] Error 1
make[4]: Leaving directory '/home/administrator/test/MoonRiver/src/libs/common'
Makefile:473: recipe for target 'all-recursive' failed
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory '/home/administrator/test/MoonRiver/src/libs'
Makefile:5087: recipe for target 'all-recursive' failed
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory '/home/administrator/test/MoonRiver/src'
Makefile:655: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/administrator/test/MoonRiver'
Makefile:549: recipe for target 'all' failed
make: *** [all] Error 2

ora non so cosa fare…


#5

Proprio le mie istruzioni direi di no: tra i pacchetti che ho elencato io in “apt-get install” c’erano anche le wx 3.0.x

sudo apt-get install libwxbase3.0-dev libwxgtk3.0-dev

Tu però sembri usare le 2.8.x

checking for wxWidgets version >= 2.8.12 (--unicode=yes)... yes (version 2.8.12)

Quelle sembrano (anche se mi pare un po’ strano) compilate senza il supporto ai large file:

configure: error:
        Support for large files in wxWidgets is required by aMule.
        To continue you must recompile wxWidgets with support for
        large files enabled.

In passato effettivamente era così tanto che il team di amule suggeriva di ricompilarsele da soli, ma pensavo che ormai la cosa fosse stata risolta da Ubuntu.

Io ho usato invece le 3.x (la mia era una Ubuntu 18.0x poi però mi sono ricordato che, a botte di aggiornamenti, è diventata una 19.04)

Altra cosa: io ho messo solo un esempio con “–with-boost=/home/stevenp/boost_1_72_0”, il percorso va adattato alla tua configurazione, oppure se vuoi usare le boost “standard” di Ubuntu usa solo “–with-boost” senza specificare alcun path.

Io domani proverò a rifare una macchina virtuale con la 18.0.x.
Ciao,
Mr Hyde


#6

Ok, creata macchina virtuale con Ubuntu 18.04:

mrhyde@ubuntu:~/MoonRiver$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 18.04.3 LTS
Release:	18.04
Codename:	bionic
  1. fatto download di boost_1_72_0.tar.bz2 da www.boost.org
  2. decompresse nella home dell’utente (il mio utente è “mrhyde” quindi ora ho una dir “/home/mrhyde/boost_1_72_0”
  3. aggiornata la Ubuntu
sudo apt-get update
sudo apt-get upgrade
  1. installati un po’ di pacchetti vari
sudo apt-get install synaptic
sudo apt-get install build-essential autogen automake autoconf 
sudo apt-get install binutils-dev pkg-config autopoint flex bison zlib1g-dev libpng-dev libupnp-dev libgeoip-dev libcrypto++-dev libwxbase3.0-dev libwxgtk3.0-dev subversion
  1. scaricati i sorgenti di AdunanzA
cd
svn checkout https://svn.code.sf.net/p/amule-adunanza/code/branches/MoonRiver MoonRiver
  1. generati file configure con
./autogen.sh
  1. lanciato configure
./configure --prefix=/usr --libdir=/usr/lib --enable-optimize --disable-debug --enable-amule-daemon --enable-geoip --enable-amulecmd --enable-webserver --enable-amule-gui --with-boost=/home/mrhyde/boost_1_72_0
  1. compilato il tutto
make

Ora però giuro che la pianto e vado a dormire :slight_smile: :sleeping:

Ciao e buona notte :old_sleep:,
Mr Hyde


#7

Ciao, innanzitutto grazie infinite per l’aiuto e lo sbattimento.
Ho fatto esattamente quello che hai fatto tu, seguendo passo passo le tue istruzioni eccetto installare synaptic. Credo che la differenza sia proprio nel fatto che io ho ubuntu server senza interfaccia grafica quindi gestisce le widget in modo diverso:

checking for the --with-toolkit option... will be automatically detected
checking for the --with-wxshared option... will be automatically detected
checking for the --with-wxdebug option... will be automatically detected
checking for the --with-wxversion option... will be automatically detected
checking for wx-config... /usr/local/bin/wx-config
checking for wxWidgets version >= 2.8.12 (--unicode=yes)... yes (version 2.8.12)
checking for wxWidgets static library... no
checking if wxWidgets was built with UNICODE enabled... yes
checking if wxWidgets was built in DEBUG mode... no
checking if wxWidgets was built in STATIC mode... no
checking which wxWidgets toolkit was selected... base
configure: error:
                The selected components need a wxWidgets library with GUI,
                but your installation is base-only.  Please install a GUI
                enabled version of wxWidgets and then retry.

ti do un po di informazioni sul mio sistema:

# ll wx*
lrwxrwxrwx 1 root root 52 Jan 20 21:11 wx-config -> /usr/lib/x86_64-linux-gnu/wx/config/gtk2-unicode-3.0*
# wx-config --list

Default config is base-unicode-release-2.8

Default config will be used for output

# apt-get install libwxgtk3.0-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
libwxgtk3.0-dev is already the newest version (3.0.4+dfsg-3).
0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.

se evito la parte grafica usando il comando

./configure --enable-optimize --disable-geoip --enable-amulecmd --disable-amule-gui --disable-monolithic --with-boost=/home/stevenp/boost_1_72_0`

arrivo fino alla fine del .configure

 Libraries aMule will use to build:
                             wxWidgets             2.8.12 (base,shared)
                             boost                 1.72 (in /home/administrator/boost_1_72_0)
                             libintl               system
                             zlib                  1.2.11

ma eseguendo il make

Making all in common
make[4]: Entering directory '/home/administrator/MoonRiver/src/libs/common'
g++ -DHAVE_CONFIG_H -I. -I../../..  -D__DEBUG__ -DUSE_WX_EXTENSIONS -DHAVE_BFD -I/usr/local/lib/wx/include/base-unicode-release-2.8 -I/usr/local/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -DwxUSE_GUI=0 -DwxUSE_GUI=0  -g -W -Wall -Wshadow -Wundef -ggdb -fno-inline -fmessage-length=0 -O2 -pthread   -MT FileFunctions.o -MD -MP -MF .deps/FileFunctions.Tpo -c -o FileFunctions.o FileFunctions.cpp
FileFunctions.cpp:27:10: fatal error: wx/dir.h: No such file or directory
 #include <wx/dir.h>  // Needed for wxDir
          ^~~~~~~~~~
compilation terminated.

Considera che è una macchina server installata ex-novo 2 giorni fa, non so veramente cosa pensare, possibile non si riesca a compilare senza interfaccia grafica sulla macchina ?

Grazie ancora dell’aiuto


#8

Ah versione server! Quindi non ti interessano tutte le applicazioni con GUI? In questo caso è possibile che non ti servano neppure le wxgtk (mia supposizione sulle Ubuntu non ho mai provato a compilare solo demone, web server amulecmd).
Infatti l’errore che hai adesso temo che sia proprio per le wxgtk.
In questo caso però se non ricordo male devi esplicitamente abilitare la compilazione di amule qualcosa tipo

 --enable-amule-daemon --enable-amulecmd --enable-webserver

Una volta esisteva anche un’opzione per dire di usare solo la “base” minimale di wx, tipo c–with-toolkit=base" ma non ricordo se questa opzione è sempre presente.

Comunque da quello che hai riportato hai sia le wx 2.x che 3.x, e il build di amule probabilmente trova prima le 2.8 (ma vanno bene anche quelle se hanno tutti i flag di compilazione giusti).

Se non ricordo male è possibile specificare anche quale wx-config usare (e quindi la versione di wxwidgets) con un parametro di configure tipo

--with-wx-prefix=<dir contenente il wx-config delle 3x>

sto però andando a memoria e fino a questa sera non potrò verificarlo.


#9

Intanto ti ringrazio e nel frattempo faccio delle altre prove.
Io non userò il web ma solo il demone, l’ed2k e forse il cmd, poi per il controllo uso l’interfaccia grafica remota. Purtroppo per il demone pare che vengano usate le widget, non so perché.
Ti aggiorno dopo aver fatto altri esperimenti, anche nella speranza che questa discussione serva a qualcun altro: alla fine sono sempre riuscito a compilare, ma devo dire che l’ho fatto a forza di tentativi e con molta difficoltà, magari stavolta riusciamo a fare una checklist utile a chi si trova la stessa problematica.


#10

Ho guardato come compilo per il NAS (ovviamente questo non ha la parte della GUI) e per questo uso (oltre a cose specifiche per il NAS)

--disable-debug \
--enable-optimize \
--disable-profile \
--disable-monolithic \
--enable-amule-daemon \
--enable-amulecmd \
--enable-webserver \
--disable-amule-gui \
--disable-cas \
--disable-wxcas \
--disable-ed2k \
--disable-alc \
--disable-alcc \
--enable-fileview \
--disable-plasmamule \
--without-wxdebug \
--without-x \
--with-boost=/home/mrhyde/src/boost_1_72_0 \

(Nota: il backslash finale è perché li ho presi da uno script in cui, appunto vado a capo e il backslash in questi casi serve per continuare sulla riga finale, ignoralo tranquillamente)
Forse il “–without-x” è quello che può servire a te.

Questa sera a casa provo un po’.
Ciao,
Mr Hyde


#11

mi sono fatto una cultura ed ho scoperto che ho installate 2 versioni di wxwidget:
la 2.8.12 e la 3.0.4 che sono in due folder differenti, forzando il folder della 3 pare che funzioni (anche perché la 2 non ha il file wx.h che viene usato per la compilazione).
Ho quindi aggiunto:
--with-wxdir=/usr/include/wx-3.0 --with-wx-config=/usr/bin/wx-config

e pare che stia compilando…. incrocio le dita e attendo
Ovviamente poi mi serviranno istruzioni per compilare la nuova gui remota da usare sotto Windows… ma questo è un altro film.
Aggiorno il post appena ho qualche risultato.


#12

Funziona tutto !! L’unica cosa che non va sono i grafici delle statistiche dalla remote-gui, che tu sappia devo ricompilare anche quella, oppure c’è qualche trucco da fare ? (o semplicemente in remoto non fa i grafici)
Grazie ancora per il supporto e la pazienza


#13

Ti confermo che amule in remoto non fa i grafici (o meglio non li gestisce amulegui, in realtà parte dei pacchetti che servono ci sono ma la loro gestione lato gui non è mai stata implementata, invece ci sono - non ricordo se tutti - sul web).
Immagino sia solo per scarsità di programmatori del team di aMule (e magari non è esattamente una feature molto richiesta).

Temevo che prima o poi qualcuno lo chiedesse… :wink: Mi toccherà ripassare pure questa!


#14

Puoi anche provare se vanno queste qui:


#15

Grazie per il link al client, ne avevo uno più vecchiotto e ora sto provando il 2014.1b1 che sembra andare bene,

Osservando i log mi sono accorto che molto spesso trovo questi messaggi:

SafeIO::EOF: Attempt to read past end of file.

Assertion failed: DownloadClient.cpp:SendBlockRequests:832: Assertion 'Assert failure' failed. No free blocks to request after freeing some blocks
Backtrace follows:
[3] wxOnAssert(char const*, int, char const*, char const*, wchar_t const*) in /usr/lib/x86_64-linux-gnu/libwx_baseu-3.0.so.0[0x7fc801327a31]
[4] ?? in amuled[0x55cfe1983c38]
[5] ?? in amuled[0x55cfe198478f]
[6] ?? in amuled[0x55cfe197add0]
[7] ?? in amuled[0x55cfe197bf64]
[8] ?? in amuled[0x55cfe1997b48]
[9] wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&) in /usr/lib/x86_64-linux-gnu/libwx_baseu-3.0.so.0[0x7fc8014a44be]
[10] wxEventHashTable::HandleEvent(wxEvent&, wxEvtHandler*) in /usr/lib/x86_64-linux-gnu/libwx_baseu-3.0.so.0[0x7fc8014a45c3]
[11] wxEvtHandler::TryHereOnly(wxEvent&) in /usr/lib/x86_64-linux-gnu/libwx_baseu-3.0.so.0[0x7fc8014a498b]
[12] wxEvtHandler::ProcessEventLocally(wxEvent&) in /usr/lib/x86_64-linux-gnu/libwx_baseu-3.0.so.0[0x7fc8014a4a13]
[13] wxEvtHandler::ProcessEvent(wxEvent&) in /usr/lib/x86_64-linux-gnu/libwx_baseu-3.0.so.0[0x7fc8014a4a75]
[14] wxEvtHandler::ProcessPendingEvents() in /usr/lib/x86_64-linux-gnu/libwx_baseu-3.0.so.0[0x7fc8014a5be2]
[15] wxAppConsoleBase::ProcessPendingEvents() in /usr/lib/x86_64-linux-gnu/libwx_baseu-3.0.so.0[0x7fc8013269e7]
[16] wxEventLoopManual::ProcessEvents() in /usr/lib/x86_64-linux-gnu/libwx_baseu-3.0.so.0[0x7fc801360c3c]
[17] wxEventLoopManual::DoRun() in /usr/lib/x86_64-linux-gnu/libwx_baseu-3.0.so.0[0x7fc801360d0e]
[18] wxEventLoopBase::Run() in /usr/lib/x86_64-linux-gnu/libwx_baseu-3.0.so.0[0x7fc801360a93]
[19] wxAppConsoleBase::MainLoop() in /usr/lib/x86_64-linux-gnu/libwx_baseu-3.0.so.0[0x7fc8013280a6]
[20] ?? in amuled[0x55cfe1944655]
[21] wxEntry(int&, wchar_t**) in /usr/lib/x86_64-linux-gnu/libwx_baseu-3.0.so.0[0x7fc8013b2ae9]
[22] ?? in amuled[0x55cfe193c5c2]
[23] __libc_start_main in /lib/x86_64-linux-gnu/libc.so.6[0x7fc800393b97]
[24] ?? in amuled[0x55cfe194330a]

di cosa si tratta ? mi devo preoccupare ? In effetti in questa maniera il log diventa bello grosso…


#16

Credo siano i soliti problemi delle wx 3 così a occhio, ma ti fa crashare amulegui o amuled?


#17

no, al momento sembra che si occupi solo di riempire il log