Apt-p2p czyli pobieranie pakietów z pomocą P2P w Debianie.

13 maja, 2009

Od kiedy tylko usłyszałem o projekcie kusiło mnie przetestowanie apt-p2p, czyli demona, który pozwala aptowi (i pochodnym) pobierać (i udostępniać) pakiety za pomocą p2p (pochodna protokołu bittorrent w tym przypadku). Wtedy na przeszkodzie stanęły zależności (a na domowym routerku chciałem mieć czystego Etch). Korzystając z chwili czasu wolnego, przyjrzałem się bliżej temu narzędziu.

Po pierwsze, dokumentacja jest mało aktualna. Wszystko jest znacznie prostsze, niż opisano na stronie domowej - nie ma potrzeby pobierania wersji z repozytorium, bo dostępna w Lennym 0.1.5 jest najnowsza. Tak naprawdę wystarczy apt-get install apt-p2p żeby cieszyć się nowym sposobem pobierania pakietów. No dobrze, warto jeszcze zajrzeć do konfiguracji i trzeba przekierować/otworzyć port, na którym demon nasłuchuje (domyślnie 9977).

Sama konfiguracja jest prosta - wystarczy na hostach docelowych (u mnie na testach był to ten sam, na którym działa apt-p2p) dodać do linii w /etc/apt/sources.list IP i port, dokładnie tak, jak opisano w przykładzie na stronie. Jedyna rzecz, która mi nie działała, to musiałem podawać localhost - przy podaniu IP prywatnego nie działało, mimo zaznaczenia stosownych opcji w konfigu.

Sam demon - cóż, apetycik ma. Na wysłużonym PII 266 MHz z 64 MB RAM top pokazywał w porywach 40% zajętości pamięci i 80% procesora. I to po delikatym tuningu konfiga pod kątem zmniejszenia zasobów i pustym cache. Jeśli chodzi o pobieranie, to wydaje się ono wolniejsze, niż w sposób tradycyjny, ale nie ma jakiejś drastycznej różnicy (na tym sprzęcie i tak większość czasu zajmuje aktualizacja bazy pakietów). No i nie chodzi o to, żeby było zawsze szybciej - bardziej o odciążenie oficjalnych mirrorów i szybsze pobieranie w przypadku dużego ich obciążenia.

Wypada też wspomnieć o bezpieczeństwie. P2P sprawdza sumy kontrolne otrzymanych fragmentów i całości pliku, ale nie oznacza to, że udostępnienie spreparowanych pakietów jest niemożliwe (jest po prostu trudne). Na szczęście pakiety są także podpisane przez developerów Debiana, dlatego w przypadku korzystania z apt-p2p należy bezwzględnie sprawdzać, czy apt potwierdza autentyczność pakietów i odrzucać instalację ew. niepotwierdzonych.

Co w przypadku, gdy żaden "sąsiad" nie ma interesującego nas pakietu? Nie ma problemu, twórca apt-p2p przewidział to i w razie problemów dokonywany jest fallback do pobierania via http (warunki definiowane w konfigu).

Z wad: nie udało mi się sprzęgnąć apt-cacher z apt-p2p na zasadzie takiej, że apt-cacher odpytuje apt-p2p o pakiety, ściąga do swojego cache (z którego korzysta także apt-p2p) i innym klientom serwuje już normalnie, po http, a taka architektura odpowiadała by mi najbardziej. Co prawda chyba podobny efekt uzyskam, jeśli na wszystkich końcówkach wskażę adres z apt-p2p, ale jednak wolałbym mieć cachera po drodze - działa, sprawdził się i zapewne w razie problemów wróciłbym do niego.

Koniec końców, wróciłem do czystego apt-cachera. Pomysł w apt-p2p świetny, ale apetyt zbyt duży, jak na tę maszynkę, no i musiałbym przekonfigurować wszystkie maszyny klienckie, na co nie było już czasu. Tak czy inaczej - polecam przyjrzenie się temu rozwiązaniu.

No i na koniec prośba. W routerze jest EDO z ECC. Mam 3 sloty, z czego 1 zajęty. Gdyby ktoś miał na zbyciu tego typu RAM - chętnie przyjmę. W zamian mogę oddać 2 sztuki SDRAM z ECC (IIRC 128 MB) lub EDO ECC Compaq (4x64 MB). Żadne z nich nie działało u mnie, kości Compaqa wręcz nie pasują fizycznie - delikanie przesunięty "ząbek"...

1. ike napisał(a):
13 maja 2009, 09:47:04

Zgłoś bugreport nt. pożądanego przez Ciebie działania. Może się da.

2. Grzegorz napisał(a):
13 maja 2009, 12:52:26

W niektórych przypadkach pobieranie za pomocą apt-p2p jest szybsze, pisałem o tym przy okazji aktualizacji całego systemu: Aktualizacja Ubuntu 8.04 do wersji 8.10 via sieć BitTorrent.

3. rozie napisał(a):
13 maja 2009, 19:08:22

ike: Krzyczał, że nie ma Packages. W sumie logiczne. Nawet jeśli się nie da, to przy (poprawnie) działającym apt-p2p efekt powinien być taki sam, wszak cache pakietów jest tylko na jednej maszynie, reszta ma tylko zmodyfikowane wpisy w sources.list. Niestety, zabrakło czasu (i pakietów do upgrade ;-)). Pewnie jeszcze to kiedyś zbadam.

4. rozie napisał(a):
13 maja 2009, 22:08:49

Grzegorz: Aż takich testów nie robiłem. Natomiast pozytywnie zaskoczył mnie fakt, że całość jest o wiele prostsza, niż opisane na stronie czy u Ciebie. Paczka jest i działa.

5. Grzegorz napisał(a):
13 maja 2009, 23:53:05

Gdy ja to opisywałem, w repozytoriach Ubuntu nie było aktualnej paczki, stąd tyle kombinowania.

6. Radek napisał(a):
16 maja 2009, 18:05:37

„jest niemożliwe (jest po prostu trudne)”

Hmm… to w końcu jakie jest? ;)

7. rozie napisał(a):
16 maja 2009, 18:16:56

Radek: „nie oznacza to, że udostępnienie spreparowanych pakietów jest niemożliwe (jest po prostu trudne).” Czyli jest możliwe, ale trudne. Wszystko się zgadza, trzeba wolniej czytać. ;->

8. Radek napisał(a):
16 maja 2009, 18:17:36

ale jak wół pisze jest napisane „niemożliwe” :D

9. rozie napisał(a):
16 maja 2009, 18:20:30

Radek: Jest napisane. I nie „niemożliwe” tylko „nie jest niemożliwe”.

10. Radek napisał(a):
16 maja 2009, 18:33:46

A rzeczywiście… Trzeba wolniej czytać ;)
co do jest napisane to http://www.wykop.pl/link/89344/nic-smiesznego-najlepsze-sceny od piątej minuty… Taki cytacik, który widać do Ciebie nie trafił ;)

11. Pomiędzy bitami napisał(a):
16 października 2010, 21:18:12

Geekowy grzejnik powered by Debian .

Powoli robi się szaro i zimno i trzeba było pomyśleć o uruchomieniu ogrzewania w mieszkaniu. Grzeję prądem, niestety drogo , ale nie zmienię tego, bo ani mieszkanie moje, ani pewnie warunków technicznych na co innego nie ma. A skoro już og[...]