APT-P2P gebruiken

Peer-to-peer staat in een kwaaddaglicht door oa de illegale content die op deze manier zou worden verspreid, maar gelukkig kan de technologie ook voor andere doeleinden worden gebruikt. Zo is het ook mogelijk om je packages voor Debian op deze manier binnen te halen en te verspreiden. Er is sprake geweest van DebTorrent, maar er zaten meer nadelen dan voordelen aan zoals seed-files die nodig zijn en de minimale grote van een package die op 32kB ligt. Via Kademlia, welke ook bijvoorbeeld bij eMule werd gebruikt, zijn deze problemen niet aanwezig.

De applicatie apt-p2p is de laag tussen de Debian-mirrors en de clients. Mocht apt-p2p een bestand niet vinden in de distributed hash table van het Kademlia netwerk dan wordt het bestand gedownload van een Debian-mirror en daarna opgeslagen in de lokale cache van apt-p2p. Op deze manier komen veel gebruikte bestanden beschikbaar het p2p-netwerk binnen om zo de belasting op mirrorservers te beperken.

Het installeren op Debian gaat vrij simpel:

$ sudo apt-get install apt-p2p

In het bestand /etc/apt-p2p/apt-p2p.conf zetten we een limiet op de upload van 10kB/s om de ADSL-verbinding niet al te zwaar te belasten:

UPLOAD_LIMIT = 10

Hierna moet /etc/apt/sources.list nog worden vertelt dat een lokale proxy moet worden gebruikt:

deb http://localhost:9977/ftp.nl.debian.org/debian/ stable main
deb-src http://localhost:9977/ftp.nl.debian.org/debian/ stable main
deb http://localhost:9977/security.debian.org/ stable/updates main
deb-src http://localhost:9977/security.debian.org/ stable/updates main
deb http://localhost:9977/volatile.debian.org/debian-volatile stable/volatile main
deb-src http://localhost:9977/volatile.debian.org/debian-volatile stable/volatile main

Als laatste stap moet de package index nog worden bijgewerkt:

$ sudo apt-get update

Vanaf dit moment is de gehele constructie operationeel en werkt zolang de computer aanstaat en verbinding heeft met Internet. Een belangrijke kanttekening is dat in dit voorbeeld alleen voor main gekozen is en niet ook voor contrib en non-free. Dit heeft onder andere met de juridische achtergrond van de verschillende repositories te maken en hoe de wereld naar sommige vraagstukken kijkt. De main-repository voldoet aan de Debian Free Software Guidelines waardoor alle data mag worden gedownload en opnieuw mag worden aangeboden.

Het gebruik van apt-p2p is niet zo snel als direct downloaden van een Debian-mirror en ook niet alles software zal direct beschikbaar zijn via p2p, maar het netwerk zal eens gestart en gevuld moeten worden. Het is ook te merken dat het netwerk voornamelijk bruikbaar is voor Debian stable door het stabielere karakter van de packages die minder snel veranderen dan bij testing of unstable. Maar toch blijft apt-p2p goed bruikbaar in bijna alle gevallen door de optie om transparant terug te vallen op een Debian-mirror.

Als ik nu de laatste acht weken waarin ik apt-p2p gebruik bekijk dan kan ik wel tevreden zijn over de oplossing. Er zijn nog wel een paar kanttekeningen voordat het mainstream gebruikt kan worden. Hopelijk komt er op korte termijn een Debian-mirror die ook koppeling krijgt met het p2p-netwerk zodat alle software beschikbaar is. En twee andere zijn het niet ondersteunen van pdiff-files om de package index incrementeel bij te werken en de mogelijkheid om de lokale cache na verloop van tijd op te ruimen. Een kloon van apt-get autoclean zou dus ook wenselijk zijn voor de cache van apt-p2p.

De vraag is misschien ook of alles wat Debian beschikbaar heeft de repository zo beschikbaar komt, maar misschien ook of Debian niet langzaam terug moet naar de basis. Het popcon-project geeft nu al feedback aan welke packages amper gebruikt worden en misschien kan dit ook worden gebruikt om een bepaalde set packages met broncode altijd beschikbaar te maken via het p2p-netwerk. Ubuntu is eigenlijk al deze verzameling, maar dan op een CD van geperst.