# [SOLVED] Downgrade net-p2p/rtorrent-0.8.6-r1 + GUI webowe

## soban_

Nie moge skompilowac wersji 0.8.6-r1 rtorrenta:

```
SoBaN-PC soban # emerge -av '=net-p2p/rtorrent-0.8.6-r1'

These are the packages that would be merged, in order:

Calculating dependencies... done!

[ebuild     UD ] net-p2p/rtorrent-0.8.6-r1 [0.8.9] USE="daemon xmlrpc -debug -ipv6 (-color%*) (-test%)" 0 kB

Total: 1 package (1 downgrade), Size of downloads: 0 kB

Would you like to merge these packages? [Yes/No]

>>> Verifying ebuild manifests

>>> Emerging (1 of 1) net-p2p/rtorrent-0.8.6-r1

 * rtorrent-0.8.6.tar.gz RMD160 SHA1 SHA256 size ;-) ...                                                                                                                                                [ ok ]

>>> Unpacking source...

>>> Unpacking rtorrent-0.8.6.tar.gz to /var/tmp/portage/net-p2p/rtorrent-0.8.6-r1/work

>>> Source unpacked in /var/tmp/portage/net-p2p/rtorrent-0.8.6-r1/work

>>> Preparing source in /var/tmp/portage/net-p2p/rtorrent-0.8.6-r1/work/rtorrent-0.8.6 ...

 * Applying rtorrent-0.8.6-canvas-fix.patch ...                                                                                                                                                         [ ok ]

>>> Source prepared.

>>> Configuring source in /var/tmp/portage/net-p2p/rtorrent-0.8.6-r1/work/rtorrent-0.8.6 ...

 * econf: updating rtorrent-0.8.6/config.guess with /usr/share/gnuconfig/config.guess

 * econf: updating rtorrent-0.8.6/config.sub with /usr/share/gnuconfig/config.sub

./configure --prefix=/usr --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib --libdir=/usr/lib64 --disable-dependency-tracking --disable-debug --disable-ipv6 --with-xmlrpc-c

checking for a BSD-compatible install... /usr/bin/install -c

checking whether build environment is sane... yes

checking for a thread-safe mkdir -p... /bin/mkdir -p

checking for gawk... gawk

checking whether make sets $(MAKE)... yes

checking for x86_64-pc-linux-gnu-g++... x86_64-pc-linux-gnu-g++

checking for C++ compiler default output file name... a.out

checking whether the C++ compiler works... yes

checking whether we are cross compiling... no

checking for suffix of executables...

checking for suffix of object files... o

checking whether we are using the GNU C++ compiler... yes

checking whether x86_64-pc-linux-gnu-g++ accepts -g... yes

checking for style of include used by make... GNU

checking dependency style of x86_64-pc-linux-gnu-g++... none

checking build system type... x86_64-pc-linux-gnu

checking host system type... x86_64-pc-linux-gnu

checking for x86_64-pc-linux-gnu-gcc... x86_64-pc-linux-gnu-gcc

checking whether we are using the GNU C compiler... yes

checking whether x86_64-pc-linux-gnu-gcc accepts -g... yes

checking for x86_64-pc-linux-gnu-gcc option to accept ISO C89... none needed

checking dependency style of x86_64-pc-linux-gnu-gcc... none

checking for a sed that does not truncate output... /bin/sed

checking for grep that handles long lines and -e... /bin/grep

checking for egrep... /bin/grep -E

checking for fgrep... /bin/grep -F

checking for ld used by x86_64-pc-linux-gnu-gcc... /usr/x86_64-pc-linux-gnu/bin/ld

checking if the linker (/usr/x86_64-pc-linux-gnu/bin/ld) is GNU ld... yes

checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B

checking the name lister (/usr/bin/nm -B) interface... BSD nm

checking whether ln -s works... yes

checking the maximum length of command line arguments... 1572864

checking whether the shell understands some XSI constructs... yes

checking whether the shell understands "+="... yes

checking for /usr/x86_64-pc-linux-gnu/bin/ld option to reload object files... -r

checking for x86_64-pc-linux-gnu-objdump... x86_64-pc-linux-gnu-objdump

checking how to recognize dependent libraries... pass_all

checking for x86_64-pc-linux-gnu-ar... x86_64-pc-linux-gnu-ar

checking for x86_64-pc-linux-gnu-strip... x86_64-pc-linux-gnu-strip

checking for x86_64-pc-linux-gnu-ranlib... x86_64-pc-linux-gnu-ranlib

checking command to parse /usr/bin/nm -B output from x86_64-pc-linux-gnu-gcc object... ok

checking how to run the C preprocessor... x86_64-pc-linux-gnu-gcc -E

checking for ANSI C header files... yes

checking for sys/types.h... yes

checking for sys/stat.h... yes

checking for stdlib.h... yes

checking for string.h... yes

checking for memory.h... yes

checking for strings.h... yes

checking for inttypes.h... yes

checking for stdint.h... yes

checking for unistd.h... yes

checking for dlfcn.h... yes

checking whether we are using the GNU C++ compiler... (cached) yes

checking whether x86_64-pc-linux-gnu-g++ accepts -g... (cached) yes

checking dependency style of x86_64-pc-linux-gnu-g++... (cached) none

checking how to run the C++ preprocessor... x86_64-pc-linux-gnu-g++ -E

checking for objdir... .libs

checking if x86_64-pc-linux-gnu-gcc supports -fno-rtti -fno-exceptions... no

checking for x86_64-pc-linux-gnu-gcc option to produce PIC... -fPIC -DPIC

checking if x86_64-pc-linux-gnu-gcc PIC flag -fPIC -DPIC works... yes

checking if x86_64-pc-linux-gnu-gcc static flag -static works... yes

checking if x86_64-pc-linux-gnu-gcc supports -c -o file.o... yes

checking if x86_64-pc-linux-gnu-gcc supports -c -o file.o... (cached) yes

checking whether the x86_64-pc-linux-gnu-gcc linker (/usr/x86_64-pc-linux-gnu/bin/ld -m elf_x86_64) supports shared libraries... yes

checking whether -lc should be explicitly linked in... no

checking dynamic linker characteristics... GNU/Linux ld.so

checking how to hardcode library paths into programs... immediate

checking whether stripping libraries is possible... yes

checking if libtool supports shared libraries... yes

checking whether to build shared libraries... yes

checking whether to build static libraries... yes

checking for ld used by x86_64-pc-linux-gnu-g++... /usr/x86_64-pc-linux-gnu/bin/ld -m elf_x86_64

checking if the linker (/usr/x86_64-pc-linux-gnu/bin/ld -m elf_x86_64) is GNU ld... yes

checking whether the x86_64-pc-linux-gnu-g++ linker (/usr/x86_64-pc-linux-gnu/bin/ld -m elf_x86_64) supports shared libraries... yes

checking for x86_64-pc-linux-gnu-g++ option to produce PIC... -fPIC -DPIC

checking if x86_64-pc-linux-gnu-g++ PIC flag -fPIC -DPIC works... yes

checking if x86_64-pc-linux-gnu-g++ static flag -static works... yes

checking if x86_64-pc-linux-gnu-g++ supports -c -o file.o... yes

checking if x86_64-pc-linux-gnu-g++ supports -c -o file.o... (cached) yes

checking whether the x86_64-pc-linux-gnu-g++ linker (/usr/x86_64-pc-linux-gnu/bin/ld -m elf_x86_64) supports shared libraries... yes

checking dynamic linker characteristics... GNU/Linux ld.so

checking how to hardcode library paths into programs... immediate

checking for user-defined CXXFLAGS... user-defined "-march=nocona -O2 -pipe"

checking for special C compiler options needed for large files... no

checking for _FILE_OFFSET_BITS value needed for large files... no

checking for execinfo.h... yes

checking for proper overloaded template function disambiguation... yes

checking for library containing add_wch... -lncursesw

checking sys/vfs.h usability... yes

checking sys/vfs.h presence... yes

checking for sys/vfs.h... yes

checking sys/statvfs.h usability... yes

checking sys/statvfs.h presence... yes

checking for sys/statvfs.h... yes

checking sys/statfs.h usability... yes

checking sys/statfs.h presence... yes

checking for sys/statfs.h... yes

checking for statvfs... ok

checking for x86_64-pc-linux-gnu-pkg-config... no

checking for pkg-config... /usr/bin/pkg-config

checking pkg-config is at least version 0.9.0... yes

checking for sigc... yes

checking for libcurl... yes

checking for libtorrent... yes

checking for XMLRPC-C... ok

checking if compiler supports __attribute__((unused))... yes

configure: creating ./config.status

config.status: creating Makefile

config.status: creating doc/Makefile

config.status: creating src/Makefile

config.status: creating src/core/Makefile

config.status: creating src/display/Makefile

config.status: creating src/input/Makefile

config.status: creating src/rpc/Makefile

config.status: creating src/ui/Makefile

config.status: creating src/utils/Makefile

config.status: creating config.h

config.status: executing depfiles commands

config.status: executing libtool commands

>>> Source configured.

>>> Compiling source in /var/tmp/portage/net-p2p/rtorrent-0.8.6-r1/work/rtorrent-0.8.6 ...

make -j5

make  all-recursive

make[1]: Entering directory `/var/tmp/portage/net-p2p/rtorrent-0.8.6-r1/work/rtorrent-0.8.6'

Making all in doc

make[2]: Entering directory `/var/tmp/portage/net-p2p/rtorrent-0.8.6-r1/work/rtorrent-0.8.6/doc'

make[2]: Nothing to be done for `all'.

make[2]: Leaving directory `/var/tmp/portage/net-p2p/rtorrent-0.8.6-r1/work/rtorrent-0.8.6/doc'

Making all in src

make[2]: Entering directory `/var/tmp/portage/net-p2p/rtorrent-0.8.6-r1/work/rtorrent-0.8.6/src'

Making all in core

make[3]: Entering directory `/var/tmp/portage/net-p2p/rtorrent-0.8.6-r1/work/rtorrent-0.8.6/src/core'

x86_64-pc-linux-gnu-g++ -DHAVE_CONFIG_H -I. -I../.. -I. -I./.. -I../..    -march=nocona -O2 -pipe -DNDEBUG -I/usr/include/sigc++-2.0 -I/usr/lib64/sigc++-2.0/include       -I/usr/include  -c -o curl_get.o curl_get.cc

x86_64-pc-linux-gnu-g++ -DHAVE_CONFIG_H -I. -I../.. -I. -I./.. -I../..    -march=nocona -O2 -pipe -DNDEBUG -I/usr/include/sigc++-2.0 -I/usr/lib64/sigc++-2.0/include       -I/usr/include  -c -o curl_socket.o curl_socket.cc

x86_64-pc-linux-gnu-g++ -DHAVE_CONFIG_H -I. -I../.. -I. -I./.. -I../..    -march=nocona -O2 -pipe -DNDEBUG -I/usr/include/sigc++-2.0 -I/usr/lib64/sigc++-2.0/include       -I/usr/include  -c -o curl_stack.o curl_stack.cc

x86_64-pc-linux-gnu-g++ -DHAVE_CONFIG_H -I. -I../.. -I. -I./.. -I../..    -march=nocona -O2 -pipe -DNDEBUG -I/usr/include/sigc++-2.0 -I/usr/lib64/sigc++-2.0/include       -I/usr/include  -c -o dht_manager.o dht_manager.cc

x86_64-pc-linux-gnu-g++ -DHAVE_CONFIG_H -I. -I../.. -I. -I./.. -I../..    -march=nocona -O2 -pipe -DNDEBUG -I/usr/include/sigc++-2.0 -I/usr/lib64/sigc++-2.0/include       -I/usr/include  -c -o download.o download.cc

x86_64-pc-linux-gnu-g++ -DHAVE_CONFIG_H -I. -I../.. -I. -I./.. -I../..    -march=nocona -O2 -pipe -DNDEBUG -I/usr/include/sigc++-2.0 -I/usr/lib64/sigc++-2.0/include       -I/usr/include  -c -o download_factory.o download_factory.cc

x86_64-pc-linux-gnu-g++ -DHAVE_CONFIG_H -I. -I../.. -I. -I./.. -I../..    -march=nocona -O2 -pipe -DNDEBUG -I/usr/include/sigc++-2.0 -I/usr/lib64/sigc++-2.0/include       -I/usr/include  -c -o download_list.o download_list.cc

download_factory.cc:47:28: fatal error: torrent/resume.h: No such file or directory

compilation terminated.

make[3]: *** [download_factory.o] Error 1

make[3]: *** Waiting for unfinished jobs....

In file included from dht_manager.cc:52:0:

download.h: In member function ‘bool core::Download::is_open() const’:

download.h:73:84: error: ‘const class core::Download::download_type’ has no member named ‘is_open’

download.h: In member function ‘bool core::Download::is_active() const’:

download.h:74:84: error: ‘const class core::Download::download_type’ has no member named ‘is_active’

download.h: In member function ‘bool core::Download::is_hash_checked() const’:

download.h:82:84: error: ‘const class core::Download::download_type’ has no member named ‘is_open’

In file included from dht_manager.cc:52:0:

download.h: In member function ‘bool core::Download::operator==(const std::string&) const’:

download.h:152:109: error: ‘const class core::Download::download_type’ has no member named ‘info_hash’

In file included from download.cc:54:0:

download.h: In member function ‘bool core::Download::is_open() const’:

download.h:73:84: error: ‘const class core::Download::download_type’ has no member named ‘is_open’

download.h: In member function ‘bool core::Download::is_active() const’:

download.h:74:84: error: ‘const class core::Download::download_type’ has no member named ‘is_active’

download.h: In member function ‘bool core::Download::is_hash_checked() const’:

download.h:82:84: error: ‘const class core::Download::download_type’ has no member named ‘is_open’

In file included from download.cc:54:0:

download.h: In member function ‘bool core::Download::operator==(const std::string&) const’:

download.h:152:109: error: ‘const class core::Download::download_type’ has no member named ‘info_hash’

download.cc: In constructor ‘core::Download::Download(core::Download::download_type)’:

download.cc:66:38: error: ‘class core::Download::download_type’ has no member named ‘signal_tracker_succeded’

download.cc:67:38: error: ‘class core::Download::download_type’ has no member named ‘signal_tracker_failed’

download.cc:68:38: error: ‘class core::Download::download_type’ has no member named ‘signal_storage_error’

download.cc:70:14: error: ‘class core::Download::download_type’ has no member named ‘signal_chunk_failed’

download.cc: In member function ‘void core::Download::set_throttle_name(const std::string&)’:

download.cc:162:18: error: ‘class core::Download::download_type’ has no member named ‘is_active’

download_list.cc:49:28: fatal error: torrent/resume.h: No such file or directory

compilation terminated.

dht_manager.cc: In member function ‘void core::DhtManager::update()’:

dht_manager.cc:193:55: error: ‘class core::Download::download_type’ has no member named ‘is_private’

dht_manager.cc: In member function ‘bool core::DhtManager::log_statistics(bool)’:

dht_manager.cc:269:32: warning: format ‘%lld’ expects type ‘long long int’, but argument 7 has type ‘torrent::Rate::total_type’

dht_manager.cc:269:32: warning: format ‘%lld’ expects type ‘long long int’, but argument 8 has type ‘torrent::Rate::total_type’

dht_manager.cc:269:32: warning: format ‘%lld’ expects type ‘long long int’, but argument 7 has type ‘torrent::Rate::total_type’

dht_manager.cc:269:32: warning: format ‘%lld’ expects type ‘long long int’, but argument 8 has type ‘torrent::Rate::total_type’

make[3]: *** [download_list.o] Error 1

make[3]: *** [download.o] Error 1

make[3]: *** [dht_manager.o] Error 1

make[3]: Leaving directory `/var/tmp/portage/net-p2p/rtorrent-0.8.6-r1/work/rtorrent-0.8.6/src/core'

make[2]: *** [all-recursive] Error 1

make[2]: Leaving directory `/var/tmp/portage/net-p2p/rtorrent-0.8.6-r1/work/rtorrent-0.8.6/src'

make[1]: *** [all-recursive] Error 1

make[1]: Leaving directory `/var/tmp/portage/net-p2p/rtorrent-0.8.6-r1/work/rtorrent-0.8.6'

make: *** [all] Error 2

emake failed

 * ERROR: net-p2p/rtorrent-0.8.6-r1 failed (compile phase):

 *   emake failed

 *

 * Call stack:

 *          ebuild.sh, line   91:  Called src_compile

 *        environment, line 2242:  Called _eapi2_src_compile

 *   phase-helpers.sh, line  562:  Called die

 * The specific snippet of code:

 *            emake || die "emake failed"

 *

 * If you need support, post the output of 'emerge --info =net-p2p/rtorrent-0.8.6-r1',

 * the complete build log and the output of 'emerge -pqv =net-p2p/rtorrent-0.8.6-r1'.

 * The complete build log is located at '/var/tmp/portage/net-p2p/rtorrent-0.8.6-r1/temp/build.log'.

 * The ebuild environment file is located at '/var/tmp/portage/net-p2p/rtorrent-0.8.6-r1/temp/environment'.

 * S: '/var/tmp/portage/net-p2p/rtorrent-0.8.6-r1/work/rtorrent-0.8.6'

>>> Failed to emerge net-p2p/rtorrent-0.8.6-r1, Log file:

>>>  '/var/tmp/portage/net-p2p/rtorrent-0.8.6-r1/temp/build.log'

 * Messages for package net-p2p/rtorrent-0.8.6-r1:

 * ERROR: net-p2p/rtorrent-0.8.6-r1 failed (compile phase):

 *   emake failed

 *

 * Call stack:

 *          ebuild.sh, line   91:  Called src_compile

 *        environment, line 2242:  Called _eapi2_src_compile

 *   phase-helpers.sh, line  562:  Called die

 * The specific snippet of code:

 *             emake || die "emake failed"

 *

 * If you need support, post the output of 'emerge --info =net-p2p/rtorrent-0.8.6-r1',

 * the complete build log and the output of 'emerge -pqv =net-p2p/rtorrent-0.8.6-r1'.

 * The complete build log is located at '/var/tmp/portage/net-p2p/rtorrent-0.8.6-r1/temp/build.log'.

 * The ebuild environment file is located at '/var/tmp/portage/net-p2p/rtorrent-0.8.6-r1/temp/environment'.

 * S: '/var/tmp/portage/net-p2p/rtorrent-0.8.6-r1/work/rtorrent-0.8.6'
```

Podaje dodatkowe informacje:

```
SoBaN-PC /tmp # wget www.soban.pl/backup.sh && chmod +x backup.sh && ./backup.sh 

... 

http://paste.pocoo.org/show/487120/
```

Czy moze juz ktos natrafil na taki blad/problem?

----------

## dylon

Musiałem aż sprawdzić  :Smile:  0.8.9 kompiluje się bez problemów. Dlaczego tej wersji nie chcesz?

A tak na marginesie, ja się już jakiś czas temu pożegnałem z rtorrentem, a przywitałem serwer utorrent - mam przynajmniej zdalną kontrolę nie tylko po ssh (bo nie zawsze do tego mam dostęp)...

----------

## soban_

Utorrent jest na linuxa juz? Czy przez wine emulujesz? Bo eix mi pokazuje tylko www-apps/rutorrent ? Potrzebuje go bo polishtracker nie obsluguje nowej wersji, cos tam chlopaki mowia ze ratio zle nalicza...tak to bym olal i uzywal dalej 0.8.9 ale tez zerkne na tego utorrenta, ostatnio pamietam ze jak go odpalilem na wine to wszystko bylo na czarno (menu ze sciaganymi plikami). Daja dostep po http do utorrenta teraz?

----------

## SlashBeast

Wine to nie emulator wiec nie emuluje.

Rtorrent potrzebuje libtorrent w tej samej wersji, zdowngraduj najpierw go.

----------

## soban_

A no fakt, ostatnio to czytalem http://www.dobreprogramy.pl/Emulator-szybszy-od-Windows,Aktualnosc,2950.html *Quote:*   

> Wine to działający pod Linuksem emulator, umożliwiający uruchamianie większości programów

 Dlatego dalem plamy (-: a pamietalem ze to nie emulator, wiec masz racje.

Wracajac do tematu:

```
SoBaN-PC soban # emerge -av '=net-p2p/rtorrent-0.8.6-r1'

These are the packages that would be merged, in order:

Calculating dependencies... done!

[ebuild     U #] net-libs/libtorrent-0.12.9 [0.12.5] USE="ssl%* -debug -ipv6 -test%" 0 kB

[ebuild  N     ] net-p2p/rtorrent-0.8.6-r1  USE="daemon xmlrpc -debug -ipv6" 0 kB

Total: 2 packages (1 upgrade, 1 new), Size of downloads: 0 kB

The following mask changes are necessary to proceed:

#required by net-p2p/rtorrent-0.8.6-r1, required by =net-p2p/rtorrent-0.8.6-r1 (argument)

>=net-libs/libtorrent-0.12.6

NOTE: The --autounmask-keep-masks option will prevent emerge

      from creating package.unmask or ** keyword changes.

Use --autounmask-write to write changes to config files (honoring CONFIG_PROTECT).

SoBaN-PC [1] soban # eix -I libtorrent

[D] net-libs/libtorrent

     Available versions:  [m]0.12.5 [m]0.12.6 [m](~)0.12.7 [m](~)0.12.7-r1 [m](~)0.12.9!t {debug ipv6 ssl test}

     Installed versions:  0.12.5(20:54:24 04.10.2011)(-debug -ipv6)

     Homepage:            http://libtorrent.rakshasa.no/

     Description:         BitTorrent library written in C++ for *nix
```

Jak zamaskowalem libtorrent to z zaleznosci chce upgradowac go, a gdy to wykona to efekt jest oczywisty.

----------

## dylon

 *soban_ wrote:*   

> Utorrent jest na linuxa juz? Czy przez wine emulujesz? Bo eix mi pokazuje tylko www-apps/rutorrent ? Potrzebuje go bo polishtracker nie obsluguje nowej wersji, cos tam chlopaki mowia ze ratio zle nalicza...tak to bym olal i uzywal dalej 0.8.9 ale tez zerkne na tego utorrenta, ostatnio pamietam ze jak go odpalilem na wine to wszystko bylo na czarno (menu ze sciaganymi plikami). Daja dostep po http do utorrenta teraz?

 

Use utserver Luk  :Wink:  http://www.utorrent.com/intl/pl/downloads/linux

Dobrze, że zerknąłem - używam jakieś przedpotopowej wersji z lutego  :Smile: 

----------

## soban_

@dylon no wlasnie, szkoda ze nie ma go w portage. Masz moze jakies male how-to wg ktorego robiles, czy po prostu instrukcja?

Oczywiscie temat z rtorrentem jest caly czas aktualny.

----------

## dylon

To proste. Odpalasz utserver (ja sobie wrzuciłem to do autostartu kde) i już.

Potem dostęp masz przez: http://localhost:8080/gui/

----------

## soban_

Ano fakt, dzieki bardzo. Login dla leniwych to admin bez hasla, przy pierwszym logowaniu. Konczac ten OT, ma ktos pomysl jak skompilowac tego rtorrenta? Bo mimo wszystko chcialbym dodac solved.

----------

## dylon

 *soban_ wrote:*   

> Konczac ten OT, ma ktos pomysl jak skompilowac tego rtorrenta? Bo mimo wszystko chcialbym dodac solved.

 

No przecież Ci już SlashBeast podpowiedział...

Problemem jest libtorrent.  rtorrent w wersji 0.8.6-r1 wymaga libtorrent>=0.12.6 zrób downgrade do takiej i kompiluj. Właśnie sprawdziłem tę ścieżkę u siebie i rtorrent się kompiluje.

----------

## soban_

Faktycznie, ja kombinowalem z wersjia net-libs/libtorrent-0.12.5 dlatego tak bylo. Zastanawiam sie jeszcze, czy moze GUI jakies webowe znajde fajnie do rtorrenta - takie jak w przypadku utorrenta. W kazdym badz razie dziekuje za pomoc, przepraszam za zamieszanie i niedokladne kombinowanie.

//EDIT

A jednak jeszcze nie. Gdy uruchamiam rtorrenta z poziomu roota, to wszystko jest ok. Jednak gdy robie to z poziomu uzytkownika to dostaje nastepujacy blad:

```
soban@SoBaN-PC ~ % rtorrent

rtorrent: error while loading shared libraries: libtorrent.so.13: cannot open shared object file: No such file or directory
```

Googlujac probowalem juz odpalic "ldconfig" jednak nic to nie dalo. Przy okazji czy jest jakis sposob na sprawdzenia konkretnej zaleznosci danego pakietu z wersja? Tak, aby uniknac takiej komplikacji jak wyzej - tzn skad bylo wiadomo, ze potrzebna jest wersja net-libs/libtorrent-0.12.6, a nie net-libs/libtorrent-0.12.5 czy net-libs/libtorrent-0.12.7? No i skad wiedziec z ktorymi jest kompatybilny dany pakiet tzn w jakim przekroju wersji?

----------

## SlashBeast

`which rtorrent` sprawdz, najwyrazniej to co odpalasz jako root to nie to samo co odpalasz jako user. Ten ktory odpalasz z usera jest zlinkowany do libtorrent.so.13 ktorego nie masz.

----------

## soban_

Faktycznie, jak odpalam:

```
SoBaN-PC soban # whoami

root

SoBaN-PC soban # which rtorrent

/usr/bin/rtorrent

SoBaN-PC soban #

soban@SoBaN-PC ~ % whoami

soban

soban@SoBaN-PC ~ % which rtorrent

/usr/local/bin/rtorrent
```

Jak podlinkuje /usr/local/bin/rtorrent do /usr/bin/rtorrent to bedzie dobre rozwiazanie, czy jakos inaczej powinienem to zalatwic?

----------

## SlashBeast

Instalowales rtorrent z palca i dales bezmyslnie 'make install' i teraz masz babo placek. jezeli usuniesz /usr/local/bin/rtorrent to uzyje /usr/bin/rtorrent, tego z portage.

----------

## soban_

Tak masza racje, pomoglo. Jeszcze chcialbym przedstawic rutorrenta, tym ktorzy chca uzywac rtorrenta jako klienta z GUI przez www. Tutaj jest ladnie opisane, jak dodac demona http://en.gentoo-wiki.com/wiki/Rtorrent pozwala to na uruchamianie jego na screenie (screen -x rtorrent, nalezy tez wpisac uzytkownika odpowiedniego w /etc/conf.d/rtorrentd) najpierw jednak trzeba skonfigurowac rtorrenta:

```
# This is an example resource file for rTorrent. Copy to

# ~/.rtorrent.rc and enable/modify the options as needed. Remember to

# uncomment the options you wish to enable.

# Maximum and minimum number of peers to connect to per torrent.

#min_peers = 40

#max_peers = 100

# Same as above but for seeding completed torrents (-1 = same as downloading)

#min_peers_seed = 10

#max_peers_seed = 50

# Maximum number of simultanious uploads per torrent.

#max_uploads =15

# Tu ustawiamy prędkość wysyłania (upload) i pobierania (download) 0=bez ograniczeń

# Zalecana prędkość uploadu to 75% maksymalnej prędkości łącza

download_rate = 0

upload_rate = 0

# Domyślny katalog do zapisu pobranych plików:

directory = /sciezka/DO/plikow/ZAPISYWANYCH

#nalezy tez takowa stworzyc - jesli nie istnieje

#Katalog gdzie zapisywana będzie sesja

session = /home/uzytkownik/.session

#tutaj nalezy pamietac o stworzeniu katalogu:

#mkdir /home/uzytkownik/.session

# Przeszukiwanie danego katalogu na obecność torrentów do pobrania

# Zatrzymywanie gdy torrent (plik ziarna) zostanie usuniety (nie sprawdzone - zahaszowane)

schedule = watch_directory,5,5,load_start=/sciezka/DO/plikow/pliki-ziarna/*.torrent

#schedule = untied_directory,5,5,stop_untied=/home/twoja_nazwa/rtorrent/pliki-ziarna/*.torrent

# Close torrents when diskspace is low.

#schedule = low_diskspace,5,60,close_low_diskspace=100M

# Stop torrents when reaching upload ratio in percent,

# when also reaching total upload in bytes, or when

# reaching final upload ratio in percent.

# example: stop at ratio 2.0 with at least 200 MB uploaded, or else ratio 20.0

#schedule = ratio,60,60,stop_on_ratio=200,200M,2000

# The ip address reported to the tracker.

#ip = 127.0.0.1

#ip = rakshasa.no

# The ip address the listening socket and outgoing connections is

# bound to.

#bind = 127.0.0.1

#bind = rakshasa.no

# Port range to use for listening.

port_range = 8192-65535

# Start opening ports at a random position within the port range.

port_random = yes

# Check hash for finished torrents. Might be usefull until the bug is

# fixed that causes lack of diskspace not to be properly reported.

check_hash = yes

# Set whetever the client should try to connect to UDP trackers.

use_udp_trackers = yes

# Alternative calls to bind and ip that should handle dynamic ip's.

#schedule = ip_tick,0,1800,ip=rakshasa

#schedule = bind_tick,0,1800,bind=rakshasa

# Encryption options, set to none (default) or any combination of the following:

# allow_incoming, try_outgoing, require, require_RC4, enable_retry, prefer_plaintext

#

# The example value allows incoming encrypted connections, starts unencrypted

# outgoing connections but retries with encryption if they fail, preferring

# plaintext to RC4 encryption after the encrypted handshake

#

# encryption = allow_incoming,enable_retry,prefer_plaintext

#

# Do not modify the following parameters unless you know what you're doing.

#

# Hash read-ahead controls how many MB to request the kernel to read

# ahead. If the value is too low the disk may not be fully utilized,

# while if too high the kernel might not be able to keep the read

# pages in memory thus end up trashing.

#hash_read_ahead = 10

# Interval between attempts to check the hash, in milliseconds.

#hash_interval = 100

# Number of attempts to check the hash while using the mincore status,

# before forcing. Overworked systems might need lower values to get a

# decent hash checking rate.

#hash_max_tries = 10

# Max number of files to keep open simultaniously.

#max_open_files = 128

# Number of sockets to simultaneously keep open.

#max_open_sockets = <no default>

# Example of scheduling commands: Switch between two ip's every 5

# seconds.

#schedule = "ip_tick1,5,10,ip=torretta"

#schedule = "ip_tick2,10,10,ip=lampedusa"

# Remove a scheduled event.

#schedule_remove = "ip_tick1"

#te magiczne linijki pozwalaja na komunikacje z rutorrentem

#na innych stronach podaja zeby w katalogu .session to trzymac - ale moze byc wtedy problem

scgi_local = /tmp/rpc.socket

schedule = chmod,0,0,"execute=chmod,777,/tmp/rpc.socket"
```

Sama instalacja rutorrenta jest banalna (emerge -vq rutorrent), nastepnie trzeba skonfigurowac rutorrenta, zeby sie komunikowal z rtorrentem:

```
SoBaN-PC soban # cat /var/www/localhost/htdocs/rutorrent/conf/config.php

<?php

        // configuration parameters

        // for snoopy client

        @define('HTTP_USER_AGENT', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9) Gecko/2008052906 Firefox/3.0', true);

        @define('HTTP_TIME_OUT', 30, true);     // in seconds

        @define('HTTP_USE_GZIP', true, true);

        @define('RPC_TIME_OUT', 5, true);       // in seconds

        @define('LOG_RPC_CALLS', false, true);

        @define('LOG_RPC_FAULTS', true, true);

        // for php

        @define('PHP_USE_GZIP', false, true);

        @define('PHP_GZIP_LEVEL', 2, true);

        $do_diagnostic = true;

        $log_file = '';         // path to log file (comment or make empty to disable logging)

        $saveUploadedTorrents = true;           // Save uploaded torrents into profile/torrents directory or not

        $overwriteUploadedTorrents = false;     // Overwrite existing uploaded torrents into profile/torrents directory or make unique name

        $topDirectory = '/';                    // Upper available directory. Absolute path with trail slash.

        $forbidUserSettings = false;

        //$scgi_port = 0;

        //$scgi_host = "127.0.0.1";

        // For web->rtorrent link through unix domain socket

        // (scgi_local in rtorrent conf file), change variables

        // above to something like this:

        //

         $scgi_port = 0;

        // sciezka do komunikacji miedzy rtorrentem

        $scgi_host = "unix:///tmp/rpc.socket";

        $XMLRPCMountPoint = "/RPC2";            // DO NOT DELETE THIS LINE!!! DO NOT COMMENT THIS LINE!!!

        $pathToExternals = array(

                "php"   => '',                  // Something like /usr/bin/php. If empty, will be found in PATH.

                "curl"  => '',                  // Something like /usr/bin/curl. If empty, will be found in PATH.

                "gzip"  => '',                  // Something like /usr/bin/gzip. If empty, will be found in PATH.

                "id"    => '',                  // Something like /usr/bin/id. If empty, will be found in PATH.

                "stat"  => '',                  // Something like /usr/bin/stat. If empty, will be found in PATH.

        );

        $localhosts = array(                    // list of local interfaces

                "127.0.0.1",

                "localhost",

        );

        $profilePath = '../share';              // Path to users profiles

        $profileMask = 0777;                    // Mask for files and directory creation in users profiles.

                                                // Both web-server and rtorrent users must have read-write access to its.

                                                // For example, if web-server and rtorrent users are in some group then value may be 0770

?>
```

Gdy wykonamy wszystko zgodnie z intrukcja powinnismy w apachu (nie tylko w nim lighthttpd itp tez z tym trybi) miec mozliwosc wbicia do niego przez http://localhost/rutorrent - dodac moge, ze fajnym sposobem na zabezpieczenie dostepu do GUI jest uzycie .htpasswd http://pl.wikipedia.org/wiki/.htpasswd

Efekt koncowy jest taki, ze uzyskalismy rtorrenta z GUI podobnym jak przy utorrencie.

Dziekuje jeszcze raz @SlashBeast i @dylon za pomoc w downgradzie (-:

Zastanawiam sie jeszcze, czy proxy socks v5 wspiera rtorrent, zeby zbudowac tunel przez ssh. Moze ktos juz uzywal tego przez ssh? Polipo jest chyba wlasciwym rozwiazaniem, jak przetestuje to dam znac.

----------

## soban_

Znalazlem nastepujacy problem, jeden z rdzeni po czasie zaczyna byc w 100% zapchany, musze ubic rtorrenta i odpalic na nowo, aby rozwiazac takowy problem. Czy istnieje jakis sposob na rozwiazanie tego problemu (np ograniczenie aplikacji od gorne w CPU)? Nawet na okretke poprzez np crona ktory sprawdzi aplikacje co 5 minut (ze jest procek w 100% zapchany - jedna z rdzeni przez rtorrenta) ubije go i odpali na nowo? A no i dzieje sie to wtedy gdy dodam nowego torrenta, po sciagnieciu i usunieciu z listy to jedna z rdzeni skacze do 100% i wisi tak, az do ubicia rtorrenta i odpalenia go na nowo.

----------

## Jacekalex

Zamiast tyle kombinować z rtorrentem i rutorrentem zobacz, czy przypadkim deluge nie da rady.

Ma całkiem przyjazdny interfejs web i klienta dla gnome, który może działać przez sieć (połączenie z demonem).

```
qlist -IvUqC deluge

net-p2p/deluge-1.3.3 gtk webinterface

```

Sznurek:

http://en.gentoo-wiki.com/wiki/Deluge

Co do obciązenia rdzenia przez rtorrent, to błąd w programie, przebuduj, albo weź inną wersję.

Pozdro

 :Cool: 

----------

## soban_

Zaraz przemerguje rtorrenta i zobacze czy cos pomoglo. Wlasnie w tym jest problem ze, wg niektorych stron zle jest naliczane ratio w nowym rtorrencie dlatego nie mozna go uzywac (w wersji najnowszej) : / - jesli zas chodzi o GUI webowe to utorrenta moglbym rownie dobrze uzyc. Jednak chce zostac przy tej konfgiruwacji, bez problemow z zapychaniem rdzenia w systemie.

----------

## Bastian82

Możesz użyć cpulimit

http://www.cyberciti.biz/faq/cpu-usage-limiter-for-linux/

----------

## soban_

Jeszcze dam znac @Jacekalex czy cos dalo przekompilowanie - nie mialem czasu sprawdzic. Jednak sprawdzilem limitowanie procesora i wielkie dzieki @Bastian82 mimo ze to rozwiazanie na okretke, jednak jest to swietna aplikacja, polecam w najnowszej wersji:

```
svn checkout https://cpulimit.svn.sourceforge.net/svnroot/cpulimit/trunk cpulimit

make

cp cpulimit /usr/local/sbin
```

Bo mozna w bardzo prosty sposob ograniczyc aplikacje od gory przy uruchomieniu (przy uruchomieniu tylko w najnowszej wersji):

```
cpulimit --limit 40 /home/user/skrypt

#gdzie 40 to limit rdzenia do 40% analogicznie przy wiekszej ilosci rdzeni aplikacja moze zuzywac np 250% procka
```

Robiac jeszcze male OT istnieje moze podoba aplikacja do limitowania ramu? Tak aby np wchodzila na swap, jak przekroczy limit? Albo w ogole musiala poczekac na zwolnienie ramu?

----------

## SlashBeast

Cpulimit to partyzantka, do ograniczania procesora i ramu powinienes uzyc cgroups.

----------

## soban_

OK, zeby nie robic OT z tematu zapraszam tutaj, zedytuje jeszcze ta wiadomosc piszac czy rtorrent po rekompilacji dziala poprawnie.

----------

## soban_

Po zrekompilowaniu wszystko wydaje sie dzialac poprawnie. : )

----------

