在openSUSE上编译aMule-DLP

  最近正在使用openSUSE Tumbleweed,搭配KDE桌面环境。要装一个eD2K客户端,aMule是Linux下为数不多的选择之一。固然可以直接在源里sudo zypper install amule,不过直接安装编译好的aMule包除了本体外,还附带三个对我来说没什么用的程序(生成eD2K链接的aMuleLinkCreator、图形界面aMule在线统计的WxCAS,还有个好像是命令行版的aMule),这让本强迫症患者看着很不爽。而且原版aMule不支持反吸血的DLP(Dynamic Leech Protection)功能,为了屏蔽吸血客户端,更好的选择是使用aMule-DLP,这个源里面没有,必须自己编译。

下载源代码

  aMule-DLP的GitHub项目地址:
https://github.com/persmule/amule-dlp
  其支持的antiLeech项目地址:
https://github.com/persmule/amule-dlp.antiLeech

  克隆或将下载的amule-dlp-master.zip解压,进入目录。

安装GeoIP

(2020年3月25日新增)
  不知什么原因,2020年3月23日时openSUSE从源中移除GeoIP及相关包,于是不能直接安装libGeoIP-devel,只能手动编译安装。
在这里插入图片描述
在这里插入图片描述
  在GitHub上下载GeoIP的安装包,截至目前,最新Release版本为1.6.12,解压后进入目录。

mkdir Build && cd Build
make -j`nproc`
make check

  没问题就可以进行安装:

sudo make install

  如果你看到这篇文章时,GeoIP的包又回来了,那就简单多了,直接:

sudo zypper install libGeoIP-devel

生成配置脚本

  首先需要安装几个包:

sudo zypper install autoconf automake gettext-tools libtool

  如果直接运行autogen.sh,会收到大量类似“source file XXXXXXXXXX is in a subdirectory, but option ‘subdir-objects’ is disabled”的警告。
在这里插入图片描述
  需要编辑configure.ac文件,在第28行AM_INIT_AUTOMAKE后面加上如图所示的参数“subdir-objects”。
注意参数两边要加上一对方括号和圆括号  然后就可以让它自动生成configure脚本了:

./autogen.sh

在这里插入图片描述

运行配置脚本

  编译aMule/aMule-DLP并不难,aMule-DLP项目提供了一个简单的Wiki里有安装指南,如果是Ubuntu系统的话,直接一个sudo apt-get build-dep amule就可以一步将需要的包安装完毕,Fedora上也有类似的操作。但openSUSE里只能手动安装依赖包,比较麻烦的是Ubuntu里包的名字不见得和openSUSE相同,得一个个检查,有些包已经装好了就不用管了。
  我本次安装了下列包,如果仍然提示缺少某些文件,则再安装相应的包:

sudo zypper install make gcc-c++ zlib-devel gd-devel wxWidgets-3_0-nostl-devel libupnp-devel libcryptopp-devel flex boost-devel libboost_system-devel ccache

  注1:安装的wxWidgets是目前最新的稳定版3.0.4版,虽然有更新的3.1.3版,但试了一下用它编译的aMule界面很乱,可见不一定是越新越好。
  注2:关于wxWidgets-3_0-nostl-devel包,见本文结尾。
  如果需要打开WebServer支持,还需安装bison包:

sudo zypper install bison

  我不需要什么WebServer,这个就跳过了。
  安装指南里建议建一个子目录进行编译,于是:

mkdir Build && cd Build
../configure  --enable-optimize --with-denoise-level=3 --disable-debug --enable-upnp --enable-geoip --enable-nls --disable-amule-daemon --disable-amulecmd --disable-webserver --disable-alcc --disable-alc --enable-cas --disable-wxcas --enable-mmap --enable-ccache --disable-plasmamule --with-boost --with-geoip-lib=/usr/local/lib64/ --with-geoip-static

  其中–disable-alcc --disable-alc分别是不安装命令行版和GUI版的eD2K链接生成器,–disable-wxcas是不安装那个图形界面aMule在线统计程序,–disable-amule-daemon --disable-amulecmd是不安装aMule守护程序和命令行版aMule,还有一个–disable-plasmamule是不安装aMule的Plasma部件及其引擎,不知道是个什么样的东西,打开的话又要装别的依赖包,想着也没什么用就不装了。
  最后两个–with-geoip参数是因为源代码编译安装的GeoIP,需要手动制定libGeoIP的位置,还将其设为了静态,如果能够从源里自动安装GeoIP,则可以去掉这两个参数。
  如果需要其中的某个程序,就把相应的disable改成enable,使用–help参数可以查看configure的详细帮助。
在这里插入图片描述
  配置脚本提示完成系统检查并显示清单后,就可以开始编译。

编译安装

  调动全部核心(其实应该是线程),充分利用CPU的算力:

make -j`nproc`

  也可以手动指定线程数,比如

make -j2

  编译完成、没有报错后开始安装:

sudo make install

编译antiLeech

  这个没什么需要配置的,进入目录直接几个命令走起:

./autogen.sh
mkdir Build && cd Build
../configure
make -j`nproc`
sudo make install

  开始使用吧。
在这里插入图片描述
  antiLeech的拦截记录
在这里插入图片描述

关于wxWidgets-3_0-nostl-devel包

  先前安装的wxWidgets-3_0-devel包,aMule-DLP可以正常编译,但编译antiLeech时就会报以下两类错误
在这里插入图片描述
在这里插入图片描述
  没有能力修改源代码,花了好一阵子找到的解决办法,一个把wxWidgets换成2.8.12版,因为没有RPM包,得去官网下载源代码手动编译安装;另一个办法就是把wxWidgets-3_0-devel换成wxWidgets-3_0-nostl-devel,两个包是互相冲突的。
  wxWidgets-3_0-devel的描述是:

wxWidgets-3_0-devel - Development files for GTK2-backed wxWidgets 3.0
wxWidgets is a C++ library for cross-platform GUI development. With wxWidgets, you can create applications for different GUIs (GTK+, Motif, MS Windows, MacOS X, Windows CE, GPE) from the same source code.
This package contains all files needed for developing with wxGTK2. Note: wxWidgets variant devel packages are mutually exclusive.
Please read /usr/share/doc/packages/wxWidgets-3_0/README.SUSE to pick a correct variant.

  而wxWidgets-3_0-nostl-devel的描述则是:

wxWidgets-3_0-nostl-devel - Development files for an old API variant of wxWidgets
wxWidgets is a C++ library for cross-platform GUI development. With wxWidgets, you can create applications for different GUIs (GTK+, Motif, MS Windows, MacOS X, Windows CE, GPE) from the same source code.
This package contains all files needed for developing with wxGTK2.
Note: wxWidgets variant devel packages are mutually exclusive.
Please read /usr/share/doc/packages/wxWidgets-3_0-nostl/README.SUSE to pick a correct variant.

  不知道对别的程序会不会有什么影响,暂时先这么用着。
  请了解具体区别的网友请不吝赐教。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值