Version 1 (modified by 16 years ago) ( diff ) | ,
---|
rTorrent on Windows
- Installing Cygwin
- Installing libsigc++
- Installing libTorrent
- Installing XMLRPC-C (optional)
- Installing rTorrent
- Screenshots
To be able to run rTorrent on Windows, you are going to need Cygwin.
Installing Cygwin
Download Cygwin 1.7 from the Cygwin page. Please keep in mind, that version 1.7 is in beta status at the time of writing this manual (direct link).
Start the installer, choose "Install from internet", select a directory to install cygwin, and one for the packages to be downloaded to, then set up your connection and pick a mirror. You're going to need the following packages in order to compile and run rTorrent: curl-devel, gcc, libncurses-devel, libtool, make, openssl-devel, pkg-config, subversion, wget. These might require some other packages, let them be installed. Wait, till the installer downloads and installs the neccessary packages, check wherever you want shortcuts, and close the installer. When you're done, start Cygwin (if you choose not create any shortcuts, you can start Cygwin with the cygwin.bat in your installation directory).
Now we can proceed with rTorrent.
Installing libsigc++
Since there is no libsigc++ package for Cygwin, we're going to need to compile this one first. By default, Cygwin has no /usr/localr/src, so create one.
mkdir /usr/local/src cd /usr/local/src
Download, compile and install the latest libsigc++ source from the Gnome ftp site - for me, it was 2.2.3.
wget http://ftp.gnome.org/pub/GNOME/sources/libsigc++/2.2/libsigc++-2.2.3.tar.bz2 tar xjvf libsigc++-2.2.3.tar.bz2 cd libsigc++-2.2.3 ./configure make make install cd ..
Installing libTorrent
Now download the latest libTorrent source from the svn repository, compile, and install it.
svn co svn://rakshasa.no/libtorrent/trunk/libtorrent libtorrent-svn cd libtorrent-svn ./autogen.sh ./configure --disable-mincore make make install cd ..
Installing XMLRPC-C (optional)
Of course, we want to be able to control rTorrent via XMLRPC-C, let's say by rTWi. For that, we need to install XMLRPC-C, preferably something over version 1.07.
svn co https://xmlrpc-c.svn.sourceforge.net/svnroot/xmlrpc-c/stable/ xmlrpc-c-svn cd xmlrpc-c-svn ./configure --disable-cplusplus make make install cd ..
Unfortunately the 'make install' has failed for me with every version of XMLRPC-C I've tried, so I decided to copy the neccessary files by myself.
mkdir /usr/local/include/xmlrpc-c cp /usr/local/src/xmlrpc-c-svn/include/xmlrpc-c/*.h /usr/local/include/xmlrpc-c/ ln -s /usr/local/include/xmlrpc-c/oldxmlrpc.h /usr/local/include/xmlrpc.h ln -s /usr/local/include/xmlrpc-c/server.h /usr/local/include/xmlrpc_server.h ln -s /usr/local/include/xmlrpc-c/server_abyss.h /usr/local/include/xmlrpc_abyss.h ln -s /usr/local/include/xmlrpc-c/server_w32httpsys.h /usr/local/include/xmlrpc_server_w32httpsys.h ln -s /usr/local/include/xmlrpc-c/client.h /usr/local/include/xmlrpc_client.h ln -s /usr/local/include/xmlrpc-c/server_cgi.h /usr/local/include/xmlrpc_cgi.h; cp /usr/local/src/xmlrpc-c-svn/xmlrpc-c-config /usr/local/bin/ cp /usr/local/src/xmlrpc-c-svn/lib/abyss/src/*.a /usr/local/lib/ cp /usr/local/src/xmlrpc-c-svn/lib/abyss/src/*.dll /usr/local/lib/ cp /usr/local/src/xmlrpc-c-svn/lib/expat/xmlparse/*.a /usr/local/lib/ cp /usr/local/src/xmlrpc-c-svn/lib/expat/xmlparse/*.dll /usr/local/lib/ cp /usr/local/src/xmlrpc-c-svn/lib/expat/xmltok/*.a /usr/local/lib/ cp /usr/local/src/xmlrpc-c-svn/lib/expat/xmltok/*.dll /usr/local/lib/ cp /usr/local/src/xmlrpc-c-svn/lib/libutil/*.a /usr/local/lib/ cp /usr/local/src/xmlrpc-c-svn/lib/libutil/*.dll /usr/local/lib/ cp /usr/local/src/xmlrpc-c-svn/src/*.a /usr/local/lib/ cp /usr/local/src/xmlrpc-c-svn/src/*.dll /usr/local/lib/
Installing rTorrent
Now download the latest rTorrent source from the svn repository.
svn co svn://rakshasa.no/libtorrent/trunk/rtorrent rtorrent-svn cd rtorrent-svn ./autogen.sh ./configure --with-xmlrpc-c
We are going to need to do some modification on the source code, to be able to compile rTorrent. First add some extra lines to src/display/window_file_list.cc (rTorrent trac, ticket #1495).
in src/display/window_file_list.cc:
#include <string> namespace std { typedef std::basic_string <wchar_t> wstring; };
The remaining modifications are described in the rTorrent trac, ticket #1184.
in src/input/path_input.cc:
#include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <sys/dirent.h> struct _transform_filename { void operator () (utils::directory_entry& entry) { if (S_ISDIR(entry.d_type)) entry.d_name += '/'; } };
in src/utils/directory.cc:
#include <fcntl.h> #include <sys/types.h> #include <sys/stat.h> #include <dirent.h> bool Directory::update(int flags) { if (m_path.empty()) throw torrent::input_error("Directory::update() tried to open an empty path."); std::string path=rak::path_expand(m_path); DIR* d = opendir(path.c_str()); if (d == NULL) return false; struct dirent* entry; while ((entry = readdir(d)) != NULL) { if ((flags & update_hide_dot) && entry->d_name[0] == '.') continue; std::string full_path=path+'/'; full_path+=entry->d_name; struct stat sb; if(stat(full_path.c_str(),&sb)) continue; iterator itr = base_type::insert(end(),value_type()); itr->d_fileno = sb.st_ino; itr->d_reclen = 0; // doesn't seem to get used anywhere. itr->d_type = sb.st_mode; #ifdef DIRENT_NAMLEN_EXISTS_FOOBAR itr->d_name = std::string(entry->d_name, entry->d_name + entry->d_namlen); #else itr->d_name = std::string(entry->d_name); #endif } closedir(d); if (flags & update_sort) std::sort(begin(), end()); return true; }
in src/rpc/scgi.cc: change AF_LOCAL to AF_UNIX
in src/signal_handler.h: use signal.h instead off sys/signal.h
Modify the files, save them, compile and install rTorrent.