HowTo Compile In Debian/Ubuntu
HowTo compile aMule in Debian or Ubuntu by Jacobo221 and GNU Linux helpers
Very special thanks to darknox, Arathornz, guest234, parasito, maya and klando for their tests!
NOTE: This howto will also work for Ubuntu Linux.
Contents
Are you sure you want to compile?
If not, (which is pretty common) decide if you want the aMule stable release or the aMule CVS release.
aMule stable release
You can just install latest stable aMule version through debs adding the following lines into your /etc/apt/sources.list file:
deb http://dude.gemil.de/ debian/
Now run apt-get update && apt-get install amule
If amule exits with error message complaining about libbfd-2.xx.so
just switch to root, go to /usr/lib and do ln -s libbfd.so libbfd-2.xx.so
aMule CVS release
You can also get the latest aMule CVS through debs adding the following lines into your /etc/apt/sources.list file:
deb http://www.vollstreckernet.de/debian/ testing amule deb http://www.vollstreckernet.de/debian/ testing wx
NOTE: The second line is necessary for Sarge users and strongly recommended for Sid users.
Now run apt-get update && apt-get install amule
You might also want to take a look at the other available aMule utilities:
- amule
- amule-common
- amuled
- amule-remote-gui
- amuleweb
- amulewebdlg
- amule-cas
- amule-wxcas
- amule-xas
- amule-utils
aMule stable
- amule-daemon
- amule-utils (alc, wxcas)
- amule-console-utils (amuleweb, alcc, cas)
For example, if you think aMule's Web interface rocks and you want to have it too, enter this line after the one above:
For aMule CVS: apt-get install amuleweb
For aMule stable: apt-get install amule-console-utils
If you still want to compile aMule instead of just installing a binary, keep reading...
Notes before starting
Important: Have in mind that this HowTo was done having in mind aMule 2.0.0 or greater in Debian 3.0 (Woody/Sarge/Sid).
This HowTo is based on using the apt-get package installer tool, which means you'll have to be able to get super-user (root) access. Also, apt-get requires a perfect packet dependencies installed system. If you usually use apt-get for installing any application, skip this and go to the next section. If you rarely use apt-get but, instead, use dpkg, you can;
A) (Recommended) Solve all the dependencies problems on your system. This can be done by taking a look at the "dpkg -C"
output and installing/removing/updating the packages it mentions depending on what's required. This option is the recommended since it will not only ensure your aMule compilation will be most surely correct, but it will also make your system the most stable it can possibly be and from now on you'll be able to use apt-get to not only make easier installations, but also to easily upgrade your system.
B) Force apt-get to ignore the dependencies problems using the -f or --fix-broken switches (just one of them, since they're exactly the same, so that'd be, for example, "apt-get install -f ..."
). This option may cause a corrupt installation of some packages which may cause the apps not to work. Also have in mind that using this switch in a system with dependencies problems may cause the system to completely break if the package being installed is a base package (although this is not the case).
C) Follow this instructions but, instead of using "apt-get install foo"
, use "dpkg -i foo"
where foo is the package to install. Remember the packages must be already on the system when installing packages with dpkg. Remember also to download any "Depends" package since it most-surely will be necessary for successfully compiling aMule. Avoid using whichever of the following dpkg switches: --force-all --force-depends-version --force-depends --force-conflicts
If you usually install applications from source, read deltaHF's "aMule compilation / installation HowTo" since your system might not be complying the Debian aMule package dependencies although "dpkg -C"
shows no errors.
The easiest: Preparing the system
Once you decided to use apt-get, you must make sure you'll be downloading the latest versions of the packages (aMule team has discovered bugs in some deb packages that would make aMule impossible to compile on Debian without compiling some other libraries too. This bugs have been mostly fixed in those affected debian packages, so it is very important to be sure to have the packages up to date). This is done by issuing:
apt-get update && apt-get dist-upgrade
Note 1: You must be root user to do this. Log in as root or "su"
or use "sudo"
. NB: "sudo"
must be specified on both apt-get commands, that is:
sudo apt-get update && sudo apt-get dist-upgrade
"sudo"
is not a base command, so it may not be installed on your system, although it most probably will. Be aware that following this HowTo entirely as root may bring some problems later such as being unable to delete certain files as a normal user, so please only use root priviledges when necessary.
Note 2: Woody users (that is, people stuck in the stable Debian 3.0 branch) will be unable to install the wxGTK, wxbase and Crypto++ libraries since they were not available in the current minimum compatible versions (2.4.2 and 2.5.1 respectively) when Woody was released.
The best for Woody users is to switch to the Sarge or Sid branch. That can be done with the following command (again, you must be root)
perl -pi.$$ -e "s/(\bstable|woody)/testing/g" /etc/apt/sources.list
or
perl -pi.$$ -e "s/(\bstable|woody)/sarge/g" /etc/apt/sources.list
to switch to the Sarge/testing branch, or with
perl -pi.$$ -e "s/(\bstable|woody)/unstable/g" /etc/apt/sources.list
or
perl -pi.$$ -e "s/(\bstable|woody)/sid/g" /etc/apt/sources.list
to switch to the Sid/unstable branch.
If Woody users are not be interested in switching to Sarge they will need to download Woody-backported debian packages by adding the following line to /etc/apt/sources.list (remember to "apt-get update"
after adding this line):
deb http://debian.thermoman.de/ woody wxwindows2.4 libcrypto++
What's more, thermoman stopped working on the aMule backports for Woody on the aMule 2.0.0-rc5 release, so newer aMule releases backports are unavailable. Sorry.
Note 3: Sarge users won't have any dependecy problems any longer, since both crypto++ and wxWidgets have both been in Sarge for some time now. So there's no longer any need to update sources.list on Debian Sarge distributions.
Note 4: Sid users (that is, people holding the cutting-edge unstable Debian 3.0 branch) could suffer problems from packages not completely implemented or with broken dependencies (both are normal issues in the unstable branch). It is very important to keep this in mind since a compiler (g++) will be installed so it could also be broken and, with it, most applications compiled with it (once upgraded, of course). If a package was broken, to downgrade you can use the --force-downgrade switch with dpkg.
If for whatever reason you think this is too much of a complication, you can just wait a few days until the aMule binary version comes out for your architecture (that is, a .deb file).
The fastest: Installing the necessary packages
Remember you need to be root to install applications using apt-get, since apt-get installs system-wide applications. So, log in as root, use "su" or add "sudo" before every command shown here.
The following are the packages which must be installed:
1) Install the latest stable g++ compiler and the C++ Standard Library
apt-get install g++
the required libraries for compiling aMule (wxbase is not really a requiered packet to compile aMule but, unless you know what you're doing, be sure you install it. I won't show in this this guide how to force aMule's compilation without wxbase):
apt-get install libwxbase2.4-dev libcurl3-dev libgtk1.2-dev libwxgtk2.4-dev
Alternatively you can use apt-get build-dep amule
to get all the required depencies for compilation. Anyway, this last method is not sure to work, since it will depend on the latest version on the Debian repository and later versions or CVS versions might have different dependencies.
And the required utilities for compiling aMule:
apt-get install gettext make
Note 5: This can all be done in a single command line, which might be more handy for users using "sudo"
to gain root priviledges:
apt-get install g++ libwxbase2.4-dev libcurl3-dev libgtk1.2-dev gettext make
Note 6: From aMule 2.0.0-rc1 to aMule 2.0.0-rc5 (inclusive) the package libcrypto++-dev was necessary for compiling aMule, so if you are compiling any of such versions, apt-get libcrypto++-dev too.
Also, you might be interested in installing libgd2-noxpm-dev if you plan to compile CAS. It is not a required library for compiling CAS, this library is only used by CAS for creating images (since v2.0.0-rc3) on the current aMule status (by running cas -o
). If you plan to use this feature of CAS, you need to install LibGD2. Anyway, CAS will compile perfectly well even if LibGD2 isn't installed, since it detects, on compilation time, if this library is installed.
Note 7: Woody users will most probably be unable to get libgd2-xpm-dev and libcurl3-dev since those packages aren't available for Woody. For libcurl3-dev you can just install libcurl2-dev and go on, everything will be ok For libgd2-xpm, at the moment there is no backport available but, since this library is only used by CAS (and suggested, not even required), it won't give any problems on compilation time. Just be aware that cas -o
won't work.
2) Download the latest released aMule source code from here (or look here for an up-to-date link).
Note 8: From now on, I will suppose we are installing aMule 2.0.0-rc3
3) Fix Crypto++ Library 5.1 if using it.
From aMule 2.0.0-rc1 to a aMule 2.0.0-rc5 (inclusive) this library is required because aMule is now supporting SecureIdent (remember, since aMule 2.0.0-rc6, libcrypto++ is optional and not needed by default), but the Crypto++ Debian package has had lots of compiling bugs and still has one (although the rest have been fixed after aMule team's reports). Remember you should have update and dist-upgraded apt-get before installing any Debian package in this HowTo, otherwise, you could be installing (or already have installed) a buggy Crypto++ package and this fix will not suit your needs. To fix the latest crypto++ Debian package only a symbolic link is needed:
ln -s /usr/include/crypto++/cryptopp_config.h /usr/include/crypto++/config.h
If you still can't compile crypto++, try compiling it after running the following command:
ln -s /usr/include/crypto++ /usr/include/cryptopp
Note 9: Since this link needs write permissions in /usr/lib, super-user (root) priviledges are needed. Again, this can be done easily with "su"
or "sudo"
.
The hardest: Compiling aMule
4) Extract the sources. The following will create a folder on your user's home directory where it will extract the sources with the -C switch into it (the following command understands that aMule's sources are on the current directory):
mkdir ~/aMule-compilation/ && tar xzfv aMule-2.0.0rc3.tar.gz -C ~/aMule-compilation/ && cd ~/aMule-compilation/
Note 10: Remember I'm supposing you are extracting aMule 2.0.0-rc3. Change the file name if it doesn't correspond to the actual packed source code filename.
5) Compile aMule! The following command will actually switch to the directory containing aMule 2.0.0rc3 and compile it:
cd ~/aMule-compilation/aMule-2.0.0rc3/ && ./configure && make
Note 11: Please take a look at the configure article.
Note 12: You should check the output of
./configure --help | more
to see if there is any configure switch which might be of your interest, such as --disable-debug --enable-optimise or --bindir=
Note 13: if you get an error message, while compiling, similar to: "In file included from /usr/include/wx/***:***, [...] /usr/include/wx/******:***: internal compiler error: Segmentation fault", then you most probably have problems with wxWidgets. Try with
apt-get install --reinstall wxwin2.4-headers libwxbase2.4 libwxgtk2.4-dev
which will reinstall wxWidgets and will most probably fix the compilation error.
Meeting satisfaction: Installing aMule!
8) What's left? Install aMule (remember you must be root, so log in as root or use "su"
or "sudo"
):
make install
Now you can remove the sources so you free up space in your hard disk by running:
rm -rf ~/aMule-compilation/
The end: Final checks
If you have sometime installed aMule from the Debian packages (no matter if the package came from http://gunnm.org/~soda ), you will have aMule binaries installed in /usr/bin. But "make install"
installs binnaries in /usr/local/bin (unless --prefix= is set in configure). This leads us to the point that when typing "amule" anyone of the two installed aMule versions might be invoked (which one is executed will depend on the $PATH environment variable. You can check it by typing "type amule"
). The walk around is very easy: remove the aMule installed through Debian package. You can do this with the command "apt-get remove amule" (do not use "apt-get remove --purge"
or you might loose your aMule settings) or with "dpkg --remove amule"
(again, never ever use "dpkg --purge"
or you might loose your aMule settings). apt-get will remove aMule-utils if you have them installed (only available as a separate package in Sid, in Sarge and Woody aMule utils are included in the base aMule package) while dpkg will leave aMule-utils installed on the system (which, in general, is a bad idea).
Also, if you installed xmule sometime or you are planing to install it, have in mind that the ed2k command exists both in aMule and xMule. You might want to run `type ed2k` to see which ed2k command will be executed and rename the other so you make sure it's never executed by mistake.
You're done...
That's it! Your own compiled aMule is installed on your system and ready to go.
To run aMule, just type "amule"
. You can check if everything worked by typing "amule -v"
and check if the displayed version corresponds with the one you were compiling/installing.
If this HowTo didn't help, you have a rare problem on your system ;-) Take a look at http://www.amule.org (aMule Forums at http://forum.amule.org ) or visit us in #amule on irc.freenode.net and (don't doubt) we'll try to do our best to help you.
Final notes
If you are in one of those rare cases when you wish to compile aMule statically, install also libtiff4-dev (through apt-get install libtiff4-dev). Anyway, this is NOT recommended and, in fact, will probably not do any better or even, not work at all.