Wolne repozytoria dla Androida czyli alternatywa dla Google Play.

Model sprzedaży aplikacji przez Google mi się niezbyt podoba: sporo mało użytecznych aplikacji, wszechobecne aplikacje płatne i z reklamami. Oczywiście, niby jest system ocen, ale nadal ciężko wybrać (z dwóch wysoko ocenianych czytników ebooków jeden był totalnie OKDR). Niby jest filtrowanie płatne/bezpłatne, ale już filtra na wersję bez reklam nie ma. Ogólnie, żeby coś znaleźć fajnego, trzeba trochę prób i błędów. Niewiele jest dobrych i jednocześnie darmowych aplikacji. TBH wolałbym trial pełnej wersji, albo po prostu aplikacje, które w prosty sposób umożliwiają przekazanie pieniędzy np. przy pomocy Flattr. Na ostatnim P.I.W.O pytałem o alternatywne repozytoria pakietów i nikt nie znał takowego.

Dołóżmy do tego fakt, że twórca aplikacji sprzedawanej w Google Play dostaje w przypadku zakupu nasze dokładne dane i robi się niezbyt ciekawie. Gdyby ktoś chciał repozytorium zorientowane bardziej na wolność, prywatność i z wolnym oprogramowaniem, to informuję, że takowe istnieje. Dowiedziałem się o nim, gdy ponarzekałem na Androida – zostałem odesłany do projektu Replicant, czyli całkowicie wolnej alternatywy dla Androida.

Mój tablet (Go Clever A73) nie jest wspierany (ogólnie mało urządzeń jest), ale za to dowiedziałem się o tytułowym wolnym repozytorium dla Androida, czyli f-droid.org, czyli wspomnianej alternatywie dla Google market AKA Play. Zawiera tylko wolne oprogramowanie (preferowany sposób dystrybucji to dostarczenie kodu źródłowego do utrzymujących f-droid.org, a następnie skompilowanie przez nich). Można pobierać aplikacje bezpośrednio, można skorzystać z managera. Pierwsze wrażenie przy instalacji pakietów z jego pomocą – znacznie lżejszy od aplikacji obsługującej Play. Aplikacje szybciej się pobierają i instalują. I mniej kolorowo – niestety, dostępne są tylko opisy aplikacji, nie ma screenshotów. Wada, bo jednak kupujemy oczami.

Część aplikacji jest dostępnych w Play (co ciekawe, musiały być wysoko ocenione, skoro je zainstalowałem). Może się zdarzyć, że przed instalacją wersji z f-droid.org trzeba będzie odinstalować wersję z Google Play. Większość aplikacji jest użyteczna i po prostu działa. Trzeba jednak zwrócić uwagę na opisy i funkcjonalności, bo czasem zdarza się, że aplikacja dostępna w repozytorium f-droid jest mniej funkcjonalna, niż jej odpowiednik z Google Play – wynik pozbycia się niewolnych bibliotek czy źródeł danych.

Inną ciekawą funkcją są tzw. antyfunkcje. W managerze pakietów można określić, czy chcemy dopuścić instalację aplikacji zawierających reklamy, namierzających położenie lub raportujących działania (kiedyś to się spyware nazywało…), wspierających płatne dodatki, wspierających płatne usługi sieciowe czy w końcu zależne od innych, płatnych aplikacji. Domyślnie wyszukuje tylko wśród wolnych aplikacji, ale można wyłączyć. Jeśli komuś zależy, to może podążać ścieżką GNU i RMS, ale nie ma przymusu.

W przeciwieństwie do Play, f-droid.org pozwala na wybór wersji instalowanej aplikacji. Czyli jeśli najnowsza np. nie działa na naszym sprzęcie, albo zwyczajnie się nam nie podobają zmiany wprowadzone przez autora, to nie ma przymusu i nadal można zainstalować wersję starszą.

Nie wiem jak ocenią f-droid.org typowi użytkownicy, ale z linuksiarskiej perspektywy – warto się zainteresować tym alternatywnym repozytorium pakietów dla systemu Android. Oczywiście z obu źródeł pakietów można korzystać jednocześnie.

PS. Opisuję, bo mało popularne, choć było opisywane po polsku dwa razy.

Najlepszy mirror w Debianie.

Z wpisu Raphaela można się dowiedzieć, że dla HTTP uruchomiony został nowy sposób znajdowania najlepszego mirrora pakietów Debiana. Obsługuje zarówno źródła, jak i pakiety binarne dla wszystkich podstawowych wersji Debiana (stable, testing, unstable, experimental), a także dla backports oraz archiwalnych wersji systemu (archive).

Używając redirectora zawsze trafimy do aktualnego, działającego i teoretycznie najbliższego, czyli najszybszego (na podstawie adresu IP) mirrora pakietów Debiana. Przydatne szczególnie dla tych, którzy często zmieniają miejsce połączenia z siecią, trafiają na nieaktualne lub niedostępne repozytoria lub chcą pobierać pakiety szybciej.

Pełna lista zalet (ze strony projektu Debian mirror HTTP redirector):

  • Brak niedostępnych mirrorów
  • Brak przeterminowanych mirrorów
  • Wykorzystanie nowych mirrorów
  • Load-balancing
  • Szybsze pobieranie (gdy wykorzystywany jest APT, poprzez równoległe pobieranie)
  • Świetne przy połączeniach mobilnych

Możemy bez jakichkolwiek zmian w systemie zobaczyć, jaki będzie wpływ (dla danego IP) przy pomocy demo. Sama konfiguracja jest trywialna i sprowadza się do podania adresu redirectora w sources.list.

Włączyłem testowo, działa, planuję włączać kolejno na moich systemach.

Apt-p2p – ostateczny test.

Krótko o apt-p2p.

Apt-p2p spodobał mi się od razu, gdy tylko o nim usłyszałem. Jest to bardzo ciekawe podejście, w którym pobieranie pakietów deb odbywa się przy pomocy P2P (protokół bittorrent), zamiast z tradycyjnych centralnych repozytoriów (HTTP, FTP). Centralne repozytoria są wykorzystywane wyłącznie w przypadku, kiedy pakiet nie jest dostępny przez P2P lub nie jest wystarczająco popularny (za mało peerów).

Kiedyś zrobiłem krótki test apt-p2p, ale trudno go nazwać miarodajnym – maszyna była bardzo słaba, demon ma spory apetyt na zasoby i nie udało mi się wtedy zmusić go do działania jako proxy dla innych maszyn, a sam test nie trwał długo. Od tamtej pory minęło trochę czasu. Maszynka robiąca za router została wymieniona na coś bardziej współczesnego, znalazłem sposób na uruchomienie apt-p2p jako lokalnego proxy (brzydki, bo wymaga gmerania w kodzie, ale się da i działa). Program dostał drugą szansę.

Efekty działania.

Demon był testowany (czyli po prostu używany) w sumie na trzech maszynach, przez parę tygodni. Pierwsza maszyna, działająca 24/7, w zasadzie base system + parę pakietów, Lenny, publiczne IP, robiła też za proxy dla kolejnej (desktop, Lenny). Apt-p2p w wersji 0.1.5:

Transport

Mirror Downloads Peer Downloads Peer Uploads
This Session 0.0B 0.0B 0.0B
Session Ratio 0.00% 0.00% 0.00%
All-Time 108MiB 32.5MiB 50.4MiB
All-Time Ratio 76.85% 23.15% 35.86%

 

Maszyna druga (mój desktop), Squeeze, za NAT, bez przekierowanych portów. Apt-p2p w wersji 0.1.6:

Transport

Mirror Downloads Peer Downloads Peer Uploads
This Session 47.4MiB 119KiB 0.0B
Session Ratio 99.75% 0.25% 0.00%
All-Time 1.07GiB 340MiB 0.0B
All-Time Ratio 76.33% 23.67% 0.00%

Statystyk trzeciej maszyny nie zaprezentuję – napotkałem na dziwny problem z pobieraniem plików, być może mający związek z uruchomieniem tunelu IPv6 (MTU? brak wsparcia dla IPv6 w apt-p2p?) i cache był czyszczony przy okazji prób rozwiązania problemu. Jak patrzyłem wcześniej, to nic specjalnie różniącego się od powyższych nie zauważyłem.

Inne uwagi.

Pierwsze, co rzuca się w oczy po zmianie sposobu pobierania, to fakt, że pobieranie jest znacznie wolniejsze, niż normalnie. Widać to szczególnie na szybszych maszynach, z lepszym łączem. Prawda jest taka, że zwykle z tradycyjnych repozytoriów pakiety lecą z pełną prędkością. W przypadku skorzystania z apt-p2p widać przy każdym pliku laga, zapewne chodzi o sprawdzanie, czy peery posiadają dany pakiet. Nie jest to drastyczne dla aktualizacji systemu, ale drażni, jeśli potrzebujemy szybko doinstalować jakiś pakiet.

Jeśli chodzi o pobieranie, to jak widać na tej mizernej próbce, stosunek pakietów pobieranych tradycyjnie do pobieranych przez P2P jest w miarę stały i wynosi około 3 do 1. Całkiem niezły wynik, szczerze mówiąc liczyłem na znacznie mniej pobieranych przez P2P.

Widać też wyraźnie, że przekierowanie portu jest absolutnie niezbędne, jeśli nie chcemy być leecherem. Szczerze mówiąc, liczyłem, że coś tam będzie się wysyłać zza NAT do peerów z publicznym IP, tak jak przy tradycyjnym P2P, ale widocznie implementacja protokołu niestety nie pozwala na to.

Pakiet ma sporo błędów, a autor nie spieszy się z ich usunięciem. Wspomniany wcześniej brak prostego sposobu na uruchomienie apt-p2p jako lokalnego proxy to jeden z przykładów. Do tego dochodzą nieciekawe defaulty związane z miejscem zajmowanym przez logi czy problemy z działaniem przy zmianie IP lub utracie łączności z Internetem.

Na szybką poprawę błędu związanego z możliwym DDoSem przez klientów P2P też pewnie nie ma co liczyć… Nawet nie zgłaszałem tego, bo na inne błędy zero reakcji autora. Taki brak odpowiedzi jest okrutnie demotywujący, fajnie jest usłyszeć choćby, że będzie poprawione w następnej wersji, albo że nie uważa tego za (poważny) błąd.

Ewidentnie brakuje silnego community wokół projektu, najlepiej ze znajomością Pythona (przyznaję, próbowałem nieco z powyższych poprawić przez dodanie opcji, ale prawda jest taka, że ciężko i długo robi się coś w języku, którego się nie zna).

Zapewne wszystko wiąże się z tym, że apt-p2p jest mało popularny. Widać to choćby na kanale IRC poświęconym programowi. Zapewne prędkość pobierania byłaby wyższa, gdyby peerów było więcej, pewnie udałoby się poprawić część błędów, a autor miałby większą motywację do pracy widząc, że program jest popularny.

Podsumowanie.

Uważam, że w tej chwili apt-p2p jest mocno zapuszczony, słabo przetestowany i IMHO nadaje się wyłącznie dla geeków. Jeśli są chętni (najlepiej ze znajomością Pythona) do zabawy z tym programem, to dajcie znać. Jest dobry moment na popularyzację tego rozwiązania, przy okazji pewnie dałoby się odciążyć nieco mirrory przy wydaniu Squeeze’ego (i zapewnić szybszy upgrade do nowego systemu – tak przynajmniej twierdzono w swoim czasie w przypadku Ubuntu). Jeśli chętnych brak, to nie pozostaje nic innego, jak wyłączyć apt-p2p i znowu poczekać parę lat… Może coś się zmieni.

Wyszukiwanie pakietów nie z danej wersji w Debianie (Ubuntu).

Pisałem o sprzątaniu pakietów w systemie Debian przy okazji upgrade’u. Rozwiązanie tyleż skuteczne, co nieeleganckie, szczególnie ten dpkg, awk, perl, grep i wajig na dokładkę.

Dziś, przy okazji innego taska (jak znaleźć pakiety nie z określonej wersji zamiast poprzedniego jak znaleźć pakiety nie mające kandydata w określonej wersji) pokazałem tamto rozwiązanie na kanale IRC i dostałem pytanie czemu nie apt-show-versions?

No właśnie, czemu nie? Po prostu wtedy pisałem na szybko, z założeniem, że raz to uruchomię i niech sobie nawet kwadrans działa… Jedynym powodem dla którego nie użyć apt-show-versions jest istnienie managera pakietów wajig, który ma nakładkę na to polecenie, czyli wajig versions (i tak trzeba mieć apt-show-versions zainstalowane, ale łatwiej zapamiętać).

Czyli, jeśli chcemy wyświetlić pakiety, które nie są zainstalowane z Debiana Squeeze, wystarczy:

wajig versions | grep -v squeeze 
 

Zarządzanie pakietami w Debianie – wajig.

Narzędzi do zarządzania pakietami w Debianie jest sporo: poczynając od graficznego synaptic, poprzez zalecane, ale niekoniecznie powszechnie używane – szczególnie przez administratorów na serwerach – aptitude, po nieśmiertelnego apta i dpkg. Nie ma co ukrywać, mimo swoich wad apt jest popularny i używany. Jednak nie tylko prędkość ma nienajlepszą, funkcjonalność także pozostawia nieco do życzenia.

Nie można korzystać z jego pomocą z lokalnych pakietów deb – wymaga, by były w repozytorium. Oczywiście w takim wypadku można się posiłkować dpkg (to zawsze można), ale… statystyki ilości zużywanego przez pakiety miejsca i inne bajery nadal będą nieosiągalne. No i trzeba pamiętać, czy chcemy skorzystać z apt-get, apt-cache, apt-file czy jeszcze innego polecenia.

Dawno, dawno temu odkryłem wajig, czyli nakładkę na apta i przyległości oraz dpkg. Co prawda wymaga Pythona (plus, do niektórych funkcjonalności potrzebne będą inne programy zewnętrzne), co oznacza, że obecnie w wersji podstawowej systemu potrzebne będą Perl i Python, ale za to pozwala na wszystko to, na co apt, plus wiele bonusów. IMO sprawdza się doskonale zarówno na desktopie, jak i na serwerach. Najważniejsze i najciekawsze moim zdaniem możliwości wajig:

  • wajig sizes – wyświetla rozmiar zainstalowanych pakietów (posortowany); przydatne jeśli miejsce się kończy miejsce na partycji i szukamy co by tu można wywalić.
  • wajig whichpkg – podaje do którego pakietu należy dany plik; bardzo przydatne, szczególnie jeśli wiemy, jakiego polecenia chcemy użyć, a nie wiemy, który pakiet w Debianie je zawiera.
  • wajig changelog – wyświetla changelog dla danego pakietu.
  • wajig toupgrade – wyświetla listę pakietów do aktualizacji, wraz z zainstalowaną i proponowaną wersją.
  • wajig integrity – wymaga debsums, sprawdza sumy kontrolne zainstalowanych pakietów; korzysta z sum kontrolnych, nędzna namiastka IDS i poprawności zainstalowania pakietów; niestety, posiadanie sum kontrolnych jest opcjonalne w Debianie, więc nie zawsze działa, ale lepszy rydz, niż nic.
  • wajig daily-upgrade – robi update, a następnie dist-upgrade. Przydatne do aktualizacji systemu.
  • wajig bug – wymaga reportbug, wyświetla listę zgłoszonych błędów dla danego pakietu.
  • wajig commands – wyświetla wszystkie dostępne komendy (a jest ich sporo) wraz z opisami.

Jeśli ktoś do tej pory korzysta z apt, to polecam zainteresować się managerem pakietów wajig – wygodniejszy i znacznie większe możliwości. I oczywiście można korzystać wymiennie z apt lub dpkg, jeśli zajdzie potrzeba.

Dla tych, którzy wolą klikać niż pisać, istnieje Gnome JIG (polecenie gjig), czyli graficzna nakładka na wajig. Nie korzystałem, więc tylko sygnalizuję istnienie.

Polecana lektura:

  1. http://wiki.xtronics.com/index.php/Wajig
  2. http://linux.togaware.com/survivor/wajig.html