Manualinux
http://www.nvu.com http://www.gimp.org InicioPresentaciónActualizacionesManualesDescargasNoticiasAgradecimientoEnlaces

Entornos GráficosAplicaciones

DesarrolloEmuladoresInternetJuegosMultimediaSistema

Clientes FTP - gFTPDescarga MMS - MiMMS

Clientes P2P - aMule




Clientes P2P - aMule




Copyright

Copyright © José Luis Lara Carrascal  2008-2024   http://manualinux.es



Sumario

Introducción
Instalación
Configurar el cortafuegos para aMule
Iniciamos aMule
Paquetes binarios
Enlaces




Introducción  

Creo que este programa no requiere presentación alguna, con solo leer la palabra "Mule" cualquier usuario de informática le sonará por donde van los tiros de este documento, aMule es un fork (aplicación desarrollada a partir del código fuente de otra ya existente) de la aplicación P2P para GNU/Linux, XMule, hoy en día más abandonada que las películas de Chuck Norris en formato VHS. Además de incluir las características del archiconocido eMule también incluye las suyas propias, características que podemos comprobar en este enlace. Como siempre, en este documento trataremos su instalación desde código fuente.



Instalación  

Dependencias

Herramientas de Compilación


Entre paréntesis la versión con la que se ha compilado aMule para la elaboración de este documento.

* GCC - (14.2.0) o Clang - (19.1.1)
* Gawk - (5.3.1)
* M4 - (1.4.19)
* Make - (4.4.1)
* Automake - (1.16.5)
* Gettext - (0.22.5)
* Autoconf - (2.72)
* Bison - (3.8.2)

Librerías de Desarrollo

* Xorg - (7.7 / xorg-server 21.1.13)
* Boost - (1.86.0)
* Crypto++ - (8.9.0)
* GeoIP - (1.6.12)
* Libupnp - (1.14.20)
* WxWidgets - (3.2.6)
* Zlib - (1.3.1)



Descarga

aMule-2.4.0-git-10102024.tar.lz

Firma Digital  Clave pública PGP

aMule-2.4.0-git-10102024.tar.lz.asc

Verificar la firma digital del paquete

$ gpg --import manualinux.asc
$ gpg --verify aMule-2.4.0-git-10102024.tar.lz.asc aMule-2.4.0-git-10102024.tar.lz

Optimizaciones

$ export {C,CXX}FLAGS='-O3 -march=znver3 -mtune=znver3'

Donde pone znver3 se indica el procesador respectivo de cada sistema seleccionándolo de la siguiente tabla:
Nota informativa sobre las optimizaciones para GCC
* La opción '-march=' establece el procesador mínimo con el que funcionará el programa compilado, la opción '-mtune=' el procesador específico para el que será optimizado. 

* Los valores separados por comas, son equivalentes, es decir, que lo mismo da poner '-march=k8' que '-march=athlon64'.

* En versiones de GCC 3.2 e inferiores se utiliza la opción '-mcpu=' en lugar de '-mtune='.
Nota informativa sobre las optimizaciones para Clang
* La opción '-mtune=' está soportada a partir de la versión 3.4 de Clang.

* Los valores de color azul no son compatibles con Clang.

* Las filas con el fondo de color amarillo son valores exclusivos de Clang y, por lo tanto, no son aplicables con GCC.
Valores CPU
Genéricos
Intel
AMD

Optimizaciones adicionales

Optimizaciones adicionales
GCC
Graphite
$ export {C,CXX}FLAGS+=' -ftree-loop-linear -floop-strip-mine -floop-block'
IPA
$ export {C,CXX}FLAGS+=' -fipa-pta'
Clang
Polly
$ export {C,CXX}FLAGS+=' -O3 -mllvm -polly -mllvm -polly-vectorizer=stripmine'

Parámetros adicionales

Parámetros adicionales de eliminación de avisos en el proceso de compilación
$ export {C,CXX}FLAGS+=' -w'

Establecer la ruta de búsqueda de directorios de librerías en sistemas de 64 bits multiarquitectura
$ export LDFLAGS+=" -L/usr/lib64 -L/usr/local/lib64 -L/opt/gcc14/lib64"
Cada usuario tendrá que establecer la ruta de búsqueda de directorios, en función de la distribución que utilice.

Establecer el uso de enlazador dinámico para Mold
$ export LDFLAGS+=' -fuse-ld=mold'

Establecer el uso de enlazador dinámico para LLD
Clang
$ export LDFLAGS+=' -fuse-ld=lld'

Establecer la variable de entorno de uso de compilador para Clang
$ export CC=clang CXX=clang++

Extracción y Configuración  Bloc de Notas Información general sobre el uso de los comandos

$ tar axvf aMule-2.4.0-git-10102024.tar.lz
$ cd aMule-2.4.0-git-10102024
$ sh autogen.sh
$ ./configure --prefix=/usr --with-language=es --enable-geoip \
--disable-debug --enable-optimize --mandir=/usr/share/man \
--with-wx-config=/opt/wxgtk32/bin/wx-config --with-boost
$ sed -i '700s:$:& -Wno-register:' src/Makefile

Explicación de los comandos

sh autogen.sh : Genera el script de configuración del paquete.

--prefix=/usr : Instala el programa en el directorio principal /usr.

--with language=es
: Instala sólo el idioma español del programa.
--enable-geoip : Activa el soporte de la librería GeoIP para la localización y obtención de información de las direcciones IP de los otros clientes conectados. Esta dependencia no es obligatoria.

--disable-debug
: Reduce el tamaño de los binarios resultantes de la compilación.
--enable-optimize : Añade más optimizaciones al proceso de compilación, éstas no afectan a las aplicadas por el usuario.
--mandir=/usr/share/man : Instala las páginas de manual del programa en /usr/share/man, en lugar de /usr/man.

--with-wx-config=/opt/wxgtk32/bin/wx-config : Le indicamos la ruta al script de configuración de WxGTK+, en el caso, de que tengamos instaladas dos versiones diferentes de esta librería. En mi caso particular, la versión 3.2.6 la tengo instalada en /opt/wxgtk32, respetando la versión anterior (2.8.12), requerida por otras aplicaciones para su ejecución.

--with-boost : Utiliza Boost en lugar de WxGTK para la gestión del tráfico de red, dado los problemas graves de desbordamiento de memoria, que está produciendo el uso de este último, lo que lleva a hacer inutilizable el programa.

sed -i '700s:$:& -Wno-register:' src/Makefile : Modifica el archivo Makefile correspondiente para poder compilar el paquete con Clang 16 y superiores. 

Compilación

$ make

Parámetros de compilación opcionales

-j$(nproc) : Establece el número de procesos de compilación en paralelo, en función del número de núcleos e hilos que tenga nuestro procesador, tomando como referencia la información mostrada por el sistema con el comando correspondiente. Si nuestro procesador es mononúcleo de un solo hilo, no añadir esta opción.

Instalación como root

$ su -c "make install-strip"

Estadísticas de Compilación e Instalación de aMule

Estadísticas de Compilación e Instalación de aMule
CPU AMD Ryzen 5 5500
MHz 3600 (BoostMax=4457)
RAM 32 GB
Sistema de archivos XFS
Versión del Kernel 6.11.2-ml SMP PREEMPT_DYNAMIC x86_64
Modo de frecuencia de la CPU powersave (balance performance)
Planificador de CPU BMQ
Versión de Glibc 2.40
Enlazador dinámico Mold 2.34.0
Compilador Clang 19.1.1 + Ccache 4.10.2
Parámetros de optimización -03 -march=znver3 -mtune=znver3 -mllvm -polly -mllvm -polly-vectorizer=stripmine
Parámetros de compilación -j12
Tiempo de compilación 54"
Archivos instalados 24
Mostrar/Ocultar la lista de archivos instalados
Ocupación de espacio en disco 7,3 MB

Consumo inicial de CPU y RAM de aMule

Consumo inicial de CPU y RAM de aMule
Programa
CPU RAM
amule 3 % 165,9 MB
Para medir el consumo de CPU se utiliza el programa top, y para medir el consumo de RAM se utiliza el script de Python, ps_mem.py, creado por Pádraig Brady, que podemos encontrar en este enlace.

Directorio de configuración personal

~/.aMule Es el directorio de configuración personal de aMule en nuestro home

Desinstalación como root

1) MODO TRADICIONAL

En el directorio de compilación ejecutamos el siguiente comando:

$ su -c "make uninstall"

2) MODO MANUALINUX

El principal inconveniente del comando anterior es que tenemos que tener el directorio de compilación en nuestro sistema para poder desinstalar el programa. En algunos casos esto supone muchos megas de espacio en disco. Con el paquete de scripts que pongo a continuación logramos evitar el único inconveniente que tiene la compilación de programas, y es el tema de la desinstalación de los mismos sin la necesidad de tener obligatoriamente una copia de las fuentes compiladas.

aMule-2.4.0-git-10102024-scripts.tar.gz

$ su 
# tar zxvf aMule-2.4.0-git-10102024-scripts.tar.gz
# cd aMule-2.4.0-git-10102024-scripts
# ./Desinstalar_aMule-2.4.0-git-10102024

Copia de Seguridad como root

Con este otro script creamos una copia de seguridad de los binarios compilados, recreando la estructura de directorios de los mismos en un directorio de copias de seguridad (copibin) que se crea en el directorio /var. Cuando se haya creado el paquete comprimido de los binarios podemos copiarlo como usuario a nuestro home y borrar el que ha creado el script de respaldo, teniendo en cuenta que si queremos volver a restaurar la copia, tendremos que volver a copiarlo al lugar donde se ha creado.

$ su 
# tar zxvf aMule-2.4.0-git-10102024-scripts.tar.gz
# cd aMule-2.4.0-git-10102024-scripts
# ./Respaldar_aMule-2.4.0-git-10102024

Restaurar la Copia de Seguridad como root

Y con este otro script (que se copia de forma automática cuando creamos la copia de respaldo del programa) restauramos la copia de seguridad como root cuando resulte necesario.

$ su 
# cd /var/copibin/restaurar_copias
# ./Restaurar_aMule-2.4.0-git-10102024



Configurar el cortafuegos para aMule  Bloc de Notas

A continuación pongo algunos ejemplos de configuración del cortafuegos de GNU/Linux, para habilitar los puertos correspondientes para poder trabajar con aMule. Puertos que tendremos que poner en las opciones del programa relacionadas con la conexión a internet y habilitar también en el router en el caso de que utilicemos uno para nuestra conexión a internet.

1) Arno's IPTABLES firewall

Es el script que utilizo para configurar y activar el cortafuegos en mi sistema, muy recomendable en distribuciones que no traen una herramienta gráfica para este cometido, o para usuarios que ya tienen una cierta experiencia en el uso de GNU/Linux.

Abrimos como root, con un editor de texto el archivo de configuración, /etc/arno-iptables-firewall/custom-rules, y añadimos lo que está en azul, en rojo el número de puerto:

# Put any custom (iptables) rules here down below:
##################################################

#AMULE
iptables -A INPUT -i eth0 -p tcp -m state --state NEW,ESTABLISHED,RELATED --dport 4662 -j ACCEPT
iptables -A INPUT -i eth0 -p udp -m state --state NEW,ESTABLISHED,RELATED --dport 4665 -j ACCEPT
iptables -A INPUT -i eth0 -p udp -m state --state NEW,ESTABLISHED,RELATED --dport 4672 -j ACCEPT 

Lo guardamos y reiniciamos el script para actualizar las reglas del cortafuegos.

$ su -c "/etc/init.d/arno-iptables-firewall restart"

2) System-config-firewall (Fedora)

Es el programa utilizado por la distribución Fedora para configurar el cortafuegos.

Si estamos en Gnome, seleccionamos en la barra superior, Sistema >> Administración >> Cortafuego. Se ejecutará el programa, y en el mismo, nos vamos a Archivos de Reglas Personalizadas. Para que esta opción esté habilitada tenemos que seleccionar Opciones >> Nivel del Conocimiento del Usuario >> Experto.

Captura System-config-firewall - 1

Abrimos un editor de texto y añadimos la regla correspondiente,

#AMULE
-A INPUT -i eth0 -p tcp -m state --state NEW,ESTABLISHED,RELATED --dport 4662 -j ACCEPT
-A INPUT -i eth0 -p udp -m state --state NEW,ESTABLISHED,RELATED --dport 4665 -j ACCEPT
-A INPUT -i eth0 -p udp -m state --state NEW,ESTABLISHED,RELATED --dport 4672 -j ACCEPT 

Lo guardamos con el nombre reglas-iptables.txt, en nuestro home, en el ejemplo, en el directorio Documentos. Hacemos clic en Añadir, y se mostrará una ventana de diálogo. Buscamos el archivo creado con las reglas y seleccionamos en el apartado Tabla del Cortafuegos, la opción filter.

Captura System-config-firewall - 2

Finalmente hacemos clic en Aceptar y en Aplicar de la interfaz de configuración del cortafuegos.

Captura System-config-firewall - 3

Para comprobar que tenemos abiertos estos puertos, nos vamos a la web de aMule y lo comprobamos en este enlace.



Iniciamos aMule  

Sólo nos queda teclear en una terminal o en un lanzador el comando amule, y el programa aparecerá en la pantalla. Es muy recomendable que nos descarguemos el archivo de nodos de la red Kademlia de forma manual, ya que desde el programa da error, porque éste los convierte a formato HTML, y éstos tienen que estar en formato binario. Abrimos una ventana de terminal y ejecutamos los siguientes comandos, habiendo cerrado previamente el programa.

$ wget http://upd.emule-security.org/nodes.dat -O ~/.aMule/nodes.dat

Volvemos a iniciar el programa, y si tenemos el cortafuegos y el router correctamente configurados, podremos conectarnos a la red Kademlia sin ningún problema, además de la red principal, como es obvio.

También podemos aprovechar para actualizar los servidores de la red eDonkey por unos más seguros proporcionados por el usuario thes del foro de ADSL Zone. Basta ejecutar el siguiente comando, también lo podemos hacer desde el programa, pero esto es más rápido.

$ wget http://emuling.gitlab.io/server.met -O ~/.aMule/server.met

Y por último, los filtros de IP actualizados a fecha de 20-08-2024, que nos descargamos y extraemos en el lugar oportuno.

$ wget http://emuling.gitlab.io/ipfilter.zip
$ unzip -o ipfilter.zip -d ~/.aMule


Captura aMule - 1


Captura aMule - 2


Captura aMule - 3




Enlaces  


http://www.amule.org >> La web de aMule.


Foro Galería Blog


Actualizado el 11-10-2024

Clientes P2P - aMule

Clientes FTP - gFTPDescarga MMS - MiMMS