Linux下使用Transmission的注意事项

1#    wanjiwz    
2010-1-2 13:20
Transmission早已经支持IPv6了,但是大多数Linux系统上默认安装的版本都没有提供这个支持,需要自己修改源代码重新编译。网上搜到的很多文章给出的解决办法都是修改libtransmission/web.c,然而仅仅如此在六维上还是行不通。


1. 下载Transmission的源码
  可能有些人上不了国外网站,不过163的镜像应该都能访问的:
  http://mirrors.163.com/gentoo/distfiles/transmission-1.76.tar.bz2已失效


2. 解压
  tar xvf transmission-1.76.tar.bz2


3. 修改两处代码
  进入源码目录,找到libtransmission/web.c文件,搜索如下代码:
  curl_easy_setopt( easy, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );
  将CURL_IPRESOLVE_V4改为CURL_IPRESOLVE_V6(仅支持IPv6),或者CURL_IPRESOLVE_WHATEVER(同时支持IPv6和IPv4)
  这对大多数支持IPv6的BT网站来说都已经足够了,也是网上大部分文章给出的解决方案,但要在六维使用,还需要修改另外一个文件:
  找到libtransmission/tracker.c,搜索函数is_rfc2396_alnum( char ch ),找到如下代码:
  1. static int
  2. is_rfc2396_alnum( char ch )
  3. {
  4.     return ( '0' <= ch && ch <= '9' )
  5.   || ( 'A' <= ch && ch <= 'Z' )
  6.   || ( 'a' <= ch && ch <= 'z' );
  7. }

  将其修改为:
  1. static int
  2. is_rfc2396_alnum( char ch )
  3. {
  4.     return ( '0' <= ch && ch <= '9' )
  5.   || ( 'A' <= ch && ch <= 'Z' )
  6.   || ( 'a' <= ch && ch <= 'z' )
  7.   || ( ch == '.' )
  8.   || ( ch == '-' )
  9.   || ( ch == '_' )
  10.   || ( ch == '~' );
  11. }



4. 编译安装
  然后按照正常的流程
  ./configure
  make
  make install
  其中第一步可能会报找不到ssl及libcurl,如果是Fedora的话直接yum即可:
  yum install openssl-devel
  yum instal libcurl-devel
  Ubuntu的话apt-get一下,具体内容网上搜搜。


  到此为止,就完全搞定了~~在六维上下了个音乐,速度还不错
2#    Ampere    
2010-1-2 16:04
我的是1.75,请问如何进入源码目录,我对Ubuntu不是很熟。。。。。
3#    wanjiwz    
2010-1-2 16:07
回复 2# Ampere
需要从源代码安装,你先下载源代码,得到一个.tar.bz2的文件,然后解压这个文件,用cd命令进入源码目录
4#    lcathm    
2010-1-3 12:17
非常感谢,终于能下载东西了
5#    nutcracker    
2010-1-4 23:23
我用过ktorrent ,和utorrent一样方便
6#    wanjiwz    
2010-1-5 12:25
回复 5# nutcracker
呵呵,感觉wine出来的uTorrent也还不错,就是心理上有些别扭
7#    amnia    
2010-1-5 15:33
还是不行 我用deluge了 也不错的
8#    wanjiwz    
2010-1-5 20:29
回复 7# amnia
感觉这个Transmission有点抽风,不知道是不是还有地方没配好,我也是偶尔可用。。。
9#    xiafeng    
2010-1-5 23:16
好奇怪呀,我用Azureus和Transmission 下载北邮的ipv6 bt就可以
但是下载neu的都不可以,transmission严格按照帖子点方法编译安装的
感觉根本没法获得peer的信息。
我是迫不得已必须的使用linux,windows无法安装。。。
10#    wanjiwz    
2010-1-6 15:15
回复 9# xiafeng
有个文章里还说要把libtransmission/tracker.c里escape函数中的这一句改一下:
out += tr_snprintf( out, 4, "%%%02X", (unsigned int)*in++ );
大写的X改成小写的x:
out += tr_snprintf( out, 4, "%%%02x", (unsigned int)*in++ );
这个会影响输出十六进制时字母是下写还是小写,我以为这个没有影响,所以就没动,而且那天下歌也下成功了,不过后来下别的东西都不行
今天把这个地方改后试了一下还是不行,看来还有地方有问题~~
跳转到第 Go