Compilare aMule Adunanza latest stable su centos 7

Ciao a tutti, sono nuovo del forum sono appena passato a fastweb e quindi ho deciso di provare la tanto sentita rete kadu :slight_smile: e ne vale la pena assolutamente :smile: Vorrei quindi condividere la mia esperienza di installazione.

sono partito da una installazione minimal di centos 7 senza GUI (ma i passi possono essere adottati anche da chi ha un DE)

Presuppongo che abbiate già aggiunto i repository epel e repoforge se non lo avete fatto:
epel Centos 7
rpmforge Centos 7

l’utente utilizzato è root

Installiamo i prerequisiti:

   yum install -y zlib.x86_64 zlib-devel.x86_64 GeoIP-devel.x86_64 GeoIP.x86_64 wxGTK.x86_64 wxGTK-devel.x86_64 cryptopp-devel.x86_64 cryptopp.x86_64 libupnp-devel.x86_64 libupnp.x86_64 gd.x86_64 gd-devel.x86_64 install xorg-x11-xauth xorg-x11-fonts- xorg-x11-utils firefox

 yum groupinstall "Development Tools"

NOTA: i pacchetti xorg li sto installando perchè non ho una gui, ma per il test delle porte ho utilizzato firefox dalla macchina quindi quanto sopra è la configurazione minimale per poter far girare programmi da gui effettuando il redirect X11 verso un client ssh (mobaXterm nel mio caso) posso visualizzare le eapplicazioni della linuxbox su di un pc remoto (anche la gui di amule :smiley: )

installando dai repository cryptopp al suo interno non troveremo “libcryptopp.a” che servirà per la compilazione quindi scarichiamone i sorgenti:

 wget http://downloads.sourceforge.net/project/cryptopp/cryptopp/5.6.2/cryptopp562.zip

scompattiamoli:

unzip cryptopp562.zip -d /path/to/folder

nel mio caso /path/to/folder era /usr/src/cryptopp

una volta all’interno della folder in cui abbiamo scompattato i sorgenty cryptopp diamo il comando:

make libcryptopp.a

attendiamo il completamento ed andiamo ad aggiungere questa libreria all’installazzione che abbiamo fatto il precedenza di cryptopp

cp libcryptopp.a /usr/include/cryptopp

Ora la nostra minimal di CentOS 7 è pronta per compilare aMule Adunanza senza intoppi :slight_smile:
Otteniamo i sorgenti gli ultimi rilasciati in (stable):

wget http://downloads.sourceforge.net/project/amule-adunanza/aMule-AdunanzA/Stable/aMule-AdunanzA-2012.1-2.3.1.tar.bz2

scompattatteli ed entrate nella cartella con i sorgenti

tar xzvf aMule-AdunanzA-2012.1-2.3.1.tar.bz2
cd aMule-AdunanzA-2012.1-2.3.1

Prepariamo l’ambiente come suggerito dal LEGGIMI.Adunanza presente nei sorgenti settando a NULL questa due variabili:

export CFLAGS=""
export CXXFLAGS=""

Ora possiamo partire invocando:

./autogen.sh

al termine del comando precedente è il momento di lanciare il ./configure:

Stringa per omptimize e NO debug:

./configure --prefix=/opt/amule --libdir=/usr/local/lib64 --with-crypto-prefix=/usr/include/cryptopp --enable-amule-daemon --enable-amulecmd --enable-webserver --enable-amule-gui --enable-alc --enable-alcc --enable-geoip --disable-debug --enable-optimize --enable-cas --enable-xas --enable-ccache --enable-wxcas

–prefix= sarà il path a cui si installerà aMuleAdunanza una volta terminata la compilazione potete cambiarlo a vostro piacimento.

Stringa NO optimize e SI debug:

./configure --prefix=/opt/amule --libdir=/usr/local/lib64 --with-crypto-prefix=/usr/include/cryptopp --enable-amule-daemon --enable-amulecmd --enable-webserver --enable-amule-gui --enable-alc --enable-alcc --enable-geoip --enable-cas --enable-xas --enable-ccache --enable-wxcas

Al termine dovreste trovare un output simile a questo:


Configure script has finished system check.

Configured aMule 2.3.1 (AdunanzA mod) for ‘x86_64-unknown-linux-gnu’.

aMule enabled options:

**** aMule Core ****
Prefix where aMule should be installed? /opt/amule
Should aMule be compiled with i18n support? yes
Should aMule be compiled in debug mode? no
Should aMule be compiled with profiling? no
Should aMule be compiled with optimizations? yes
Should aMule be compiled with UPnP support? yes
Should aMule be compiled with IP2country support? yes
Should aMule monolithic application be built? yes
Should aMule daemon version be built? yes
Should aMule remote gui be built? yes
Crypto++ library/headers style? sources

**** aMule TextClient ****
Should aMule Command Line Client be built? yes

**** aMule WebServer ****
Should aMule WebServer be built? yes

**** aMule ED2K Links Handler ****
Should aMule ED2K Links Handler be built? yes

**** aMuleLinkCreator ****
Should aMuleLinkCreator GUI version (alc) be built? yes
Should aMuleLinkCreator for console (alcc) be built? yes

**** aMule Statistics ****
Should C aMule Statistics (CAS) be built? yes
Should aMule GUI Statistics (wxCas) be built? yes
Should xas XChat2 plugin be installed? yes
Should plasmaMule plasma-applet be build? no

**** General Libraries and Tools ****
Should ccache support be enabled? yes
Libraries aMule will use to build:
wxWidgets 2.8.12 (gtk2,shared)
crypto++ 5.6.2 (sources, in /usr/include/cryptopp)
libupnp 1.6.19
libintl system
libGeoIP system
libpng 1.5.13
libgd 2.0.34
zlib 1.2.7


ora procediamo alla compilazione vera e propria:

make

ed al termine, andiamo ad installare il tutto nella cartella scelta in precedenza:

make install



Azioni POST installazione

se siete su una linuxbox senza gui e con il solo utente root, non è un bene eseguire aMule come superuser (root) per cui va creato un utente adhoc, se invece avete già un utente diverso da root e volete usarlo non cambia nulla, saltate questo passaggio e nei prossimi sostituite “amule” con il vostro nome utente.

adduser amule

diamogli la proprietà della cartella di installazione di amule:

chown -R amule:amule /opt/amule

Il firewall di CentOS:
le porte da configurare sono:

4711 tcp = WebServer (necessaria se si vuole utlizzare l’interfaccia web di amule)
4712 tcp = gui locale e/o remota (necessaria se si vuole aprire la gui da remoto)
4662 tcp = porta per la connessione alle reti (NON opzionale)
4665 udp = porta usata per le ricerche (opzionale)
4472 udp = porta per la connessione alle reti (NON opzionale)

onestamente ho preferito disabilitarlo avendone un altro a monte:

systemctl mask firewalld
systemctl stop firewalld

Creiamo per ultimi dei link simbolici per poter lanciare comodamente gli eseguibili:

ln -s /opt/amule/bin/amuled /usr/bin
ln -s /opt/amule/bin/amuleweb /usr/bin
ln -s /opt/amule/bin/amulegui /usr/bin

Script di avvio automatico di amuled e amuleweb:

Creiamo un file all’interno di /etc/init.d/:

vim amulestart

Incollando il seguente contenuto cambiando se necessario la variabile USER:

#!/bin/sh
####################################
#dir:/etc/init.d                   #
#script avvio Amuled & Amuleweb    #
#testato su CentOS 7 x86_x64       #
####################################

### BEGIN INIT INFO
# Provides:          defaultdaemon
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# chkconfig:         235 03 99
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

DAEMON=/usr/bin/amuled
WEB=/usr/bin/amuleweb
NAME=amuled
DESC=amuled
RUNAMULE=no
USER=amule

test -x $DAEMON || exit 0

# Include amule defaults if available
if [ -f /etc/default/amule ] ; then
. /etc/default/amule
 fi
  if [ "$RUNAMULE" != "yes" ] ; then
   echo "Amule not to be started. Edit /etc/default/amule first."
    exit 1
fi

set -e

case "$1" in
  start)
    echo -n "Starting $DESC: "
       su $USER -c "$DAEMON -f"
       while ! netstat -l -n -p -t | grep -q amuled ; do sleep 1 ; done
       su $USER -c "$WEB --quiet &"
    echo "$NAME."
    ;;
  stop)
       echo -n "Stopping $DESC: "
       killall --quiet --ignore-case $WEB
       killall --quiet --ignore-case $DAEMON
      echo "$NAME."
    ;;
  restart|force-reload)
    echo -n "Restarting $DESC: "
       killall --quiet --ignore-case $WEB
       killall --quiet --ignore-case $DAEMON
    sleep 1
      su $USER -c "$DAEMON -f"
      while ! netstat -l -n -p -t | grep -q amuled ; do sleep 1 ; done
      su $USER -c "$WEB --quiet &"
    echo "$NAME."
    ;;
  *)
    N=/etc/init.d/$NAME
    echo "Usage: $N {start|stop|restart|force-reload}" >&2
    exit 1
    ;;
esac

exit 0

NOTA: lo script dovrebbe funzionare anche sulle altre distribuzioni con le opportune modifiche.
rendetelo eseguibile:

 chmod +x /etc/init.d/amulestart

Creiamo il file di configurazione con cui potremo andare in futuro a disabilitare l’avvio al boot (se desiderato) senza toccare le configurazioni fatte:

echo "RUNAMULE=yes" > /etc/default/amule

Aggingiamo lo script nel boot di sistema ed abbiamo terminato:

chkconfig --add amulestart

Ora non vi rimane che avviare il demone e configurarlo :slight_smile: enjoy

4 Mi Piace

Ciao atomix84, innanzitutto complimenti per la guida, ho seguito tutto alla lettera, solo che essendo relativamente nuovo di linux non riesco a continuare oppure ho commeso un errore, non riesco ad avviare il demone di amuleadunanza e a configurarlo di conseguenza, potresti aiutarmi su come proseguire?
Grazie!

spiega meglio
non riesci a far partire in automatico amuled o se lo fai partire manualmente hai qualche errore?

se riesci copia qua l’errore e ti daremo una mano

I procedimenti della guida gli ho fatti e sono andati a buon fine, non ho errori sono io che non sò come proseguire non so come avviare e configurare il demone, come raggiungo poi da remoto adunanza?
Grazie per la risposta :wink:

lancia UNA SOLA VOLTA amuled in questo modo:

amuled -ec io.sono.una.password

scarica amulegui per il tuo SO, lancialo e come password usa quella che hai dato nel comando precedente

le volte successive lancia amuled cosi:

amuled -f

si mette in background e ti lascia libero il terminale e usa sempre la password di cui sopra

Ho provato a dare il comando amuled ma dice comando non riconosciuto.

riprendiamo dall’inizio

quando hai dato questo comando

make install

cosa ti ha risposto?

1 Mi Piace

ciao, grazie della preziosa guida. mi sembra di aver configurato tutto correttamente, i port forwarding sul router sono corretti. kad va su correttamente ma i server non si collegano…

amule log:

2016-03-17 13:23:08: amule.cpp(2220): Connected to Kad (ok)
2016-03-17 13:23:33: HTTPDownload.cpp(343): The URL http://update.adunanza.net/servers.met returned: 404 - Error (6)!
2016-03-17 13:23:33: ServerList.cpp(871): Failed to download server.met from http://update.adunanza.net/servers.met
2016-03-17 13:24:05: ServerList.cpp(845): Invalid URL
2016-03-17 13:24:28: HTTPDownload.cpp(343): The URL http://update.adunanza.net/servers.met returned: 404 - Error (6)!
2016-03-17 13:24:28: ServerList.cpp(871): Failed to download server.met from http://update.adunanza.net/servers.met
2016-03-17 13:26:27: SafeFile.cpp(524): SafeIO::EOF: Attempt to read past end of file.

secondo te cosa potrebbe essere? ho cercato un po in rete ma non ho trovato nulla di utile

Rieccomi dopo un po’ (molta) assenza :expressionless:

Da quanto vedo nel log non trova il server.met, cercalo qui nel forum e aggiornalo tramiet la gui, questo dovrebbe risolverti il problema

P.S.
Con la rete kadu cmq dovresti essere in grado di scaricare egregiamente, onestamente i server li puoi anche lasciar perdere :smiley:

P.P.S.
http://forum.adunanza.net/t/fix-temporaneo-per-server-met-e-nodes-dat-su-amule-adunanza-mac-e-linux/8589

perdona la tardissima risposta, i messaggi che vedi a monitor dello stdout sono messaggi di compilazione, a meno che non appaiano error (in quel caso esce con ulttimoo messaggio “make error: 2” o similare) non ti devi allarmare. Alla fine della compilazione se non ricordo male dovrebbe stampare un summary delle funzionalità compilate.


Ignora quanto ho scritto sopra, l’output dovrebbe farti vedere dove copia i file nel path che hai scelto con
--prefix=