Odzyskiwanie miejsca w systemie (Linux, Windows).

Używany system ma tendencję do powolnego gubienia miejsca. Niezależnie od tego czy mamy w systemie porządek, czy nie, z czasem przybywa rzeczy, których nie potrzebujemy. Z jednej strony są to bardzo potrzebne pliki, których po prostu szkoda skasować (chociaż tak naprawdę nigdy już ich nie otworzymy), z drugiej nieużywane pakiety, konfiguracje usuniętych pakietów, pliki tymczasowe itp.

O ile z pierwszymi nie bardzo można sobie poradzić inaczej, niż samodzielnie utrzymując porządek (sortowanie do katalogów, kasowanie zbędnych rzeczy) i ręcznie usuwając pliki, to w przypadku tych drugich można sobie pomóc w czyszczeniu systemu różnymi automatami i półautomatami.

Pierwszy złodziej miejsca w systemie to cache apt-a, czyli /var/cache/apt/archives. Leżą tu paczki deb instalowanych pakietów. We wszystkich wersjach, także tych starszych. Praktycznie nigdy nie będą potrzebne, więc z czystym sumieniem możemy je skasować: wajig clean (lub, bardziej kanonicznie apt-get clean).

Drugi popularny złodziej miejsca to locale, czyli różne wersje językowe dla danego programu. Zwykle nie potrzebujemy dokumentacji itp. po hiszpańsku, włosku czy chińsku. Rozwiązanie: localepurge (po uprzednim skonfigurowaniu, fajnie jakby coś jednak zostało…).

Potem można zobaczyć, czy nie zostały w systemie pliki konfiguracyjne po usuniętych pakietach. Przy okazji sprawdzimy, które pakiety zajmują najwięcej miejsca: wajig sizes. Status inny niż installed oznacza, że raczej możemy się pozbyć pakietu w całości, czyli z konfigami (wajig purge <pakiet>).

Na koniec jeszcze deborphan (albo wersja ładniejsza w curses czyli orphaner) i usuwamy zainstalowane na potrzeby spełnienia zależności niepotrzebne pakiety (głównie biblioteki).

Tu się zwykle sprzątanie kończy. No dobrze, można jeszcze skorzystać z jednego z przydatnych poleceń i spojrzeć, które katalogi zajmują najwięcej miejsca (du –max-depth=1 -b | sort -n) i ręcznie pousuwać zbędne rzeczy (typu cache googleearth).

Dłużej używane systemy mają tendencję do gromadzenia pakietów z poprzednich wersji (szczególnie, jeśli korzysta się z wersji niestabilnej lub miesza kilka wersji systemu). Można je łatwo wytropić (i usunąć) korzystając z opisanego sposobu: wajig versions | grep -v squeeze.

A dziś odkryłem wisienkę na czubek tortu: BleachBit. Narzędzie jest wieloplatformowe (Linux, Windows) z funkcjami typowo Debianowymi (bardziej Ubuntu pewnie) i zajmuje się takimi cichymi złodziejami miejsca jak cache różnych aplikacji. Poza tym, że sięga tam, gdzie inne automaty nie sięgają, umie też czyścić rzeczy typowo systemowe: wspomniany cache apta, nieużywane lokalizacje (twórcy BleachBit twierdzą, że robi to znacznie skuteczniej, niż localepurge, faktycznie znalazł więcej).

Posiada zarówno miłą klikalną wersję GUI (z której korzystałem) jak i interfejs CLI (nie próbowałem). Do tego dobre podpowiedzi do opcji (ostrzega przed opcjami powolnymi i potencjalnie niebezpiecznymi). Działa bardzo fajnie, więc zdecydowanie polecam, jeśli ktoś planuje porządki w systemie (a chyba każdy prędzej czy później staje przed pytaniem jak odzyskać miejsce w systemie?). Użycie jest proste: najpierw wybiera się, co chce się usunąć, potem jest podgląd plików do usunięcia (warto spojrzeć co będzie usuwane – wywala np. pliki bak i inne tymczasowe – czasami może tam być coś pożytecznego…). Program dba o prywatność użytkownika – jako opcja dostępne jest nadpisywanie zawartości kasowanych plików przed ich usunięciem.

Jedyne do czego można się przyczepić, to spolszczenie. Zapewne w oryginale był vacuum (bazy danych), a został… odkurzacz. I parę innych kwiatków tego typu, ale IMHO nie rzutuje na całość.

Jak znaleźć znajomych na Twitterze/Identi.ca.

Przy okazji chęci uporządkowania (może rozwoju) mojego μbloga identi.ca pojawił się odwieczny problem: jak znaleźć znajomych w identi.ca (w ogólności: w serwisie mikroblogowym)? Po chwili namysłu stwierdziłem, że najprostszym sposobem szukania znajomych jest przeglądanie znajomych moich znajomych. Skoro ja znam A, a A zna B, to stosunkowo spora szansa, że znam B lub że chcę go dodać do obserwowanych. Podobnie tematycznie – ludzie zwykle obserwują ludzi o podobnych zainteresowaniach.

Najprostszy wariant, ręczny, to otworzenie przeglądarki, otworzenie profili wszystkich znajomych w kartach, następnie dla każdego profilu otworzenie wszystkich obserwowanych. Teoretycznie dobre, w praktyce szybko zrobiłoby się kilkadziesiąt/kilkaset kart, na dodatek z powtarzającymi się profilami. Nie tędy droga.

Ponieważ identi.ca ma API, to postanowiłem sprawdzić, czy nie uda się lekko sobie pomóc skryptem. Okazało się, że w Perlu jest moduł do obsługi API identi.ca o nazwie Net::Identica. Tak naprawdę API identi.ca i Twittera jest identyczne (do Twittera jest Net::Twitter), ale stwierdziłem, że dodam w systemie dedykowany moduł. Co prawda nie ma go w repozytorium debianowym, ale stosunkowo łatwo go zbudować (po spełnieniu zależności) z użyciem dh-perl-make.UPDATE: Ostatecznie korzystam jednak z Net::Twitter.

Ponieważ sądzę, że pytanie jak znaleźć znajomych na Twitterze (czy też na identi.ca) zadaje sobie sporo ludzi, postanowiłem opublikować skrypt, może komuś się przyda. W skrypcie należy podać ID usera, od którego ma zacząć poszukiwania, login i hasło. Nie polecam zmieniać poziomu głębokości poszukiwań (domyślnie jest to znajomi znajomych).

Algorytm jest prosty: dopóki nie osiągnie zadanego poziomu głębokości (domyślnie 2 czyli znajomi znajomych), to pobierze wszystkie ID użytkowników będących znajomymi obecnego użytkownika i doda je do sprawdzenia. Z kolei sprawdzanego użytkownika oznaczy jako sprawdzanego (i nie będzie go sprawdzał po raz kolejny). Zaczynamy od wskazanego ID użytkownika (przypuszczalnie własnego).

W zasadzie tyle. Na koniec pobierze i wyświetli dla wszystkich zebranych ID, których nie mamy już w znajomych podstawowe dane – nazwę, link do profilu, opis itp. – raczej wystarczy, by określić, czy chcemy dodać daną osobę do obserwowanych, czy nie. Bonusowo ID użytkownika, który jest zakończeniem najkrótszej (jednej z najkrótszych) ścieżek do nowopoznanej osoby.

W trakcie pojawił się drobny problem – znajomych znajomych było ponad 3k. Przypuszczałem, że jest jakiś błąd w skrypcie, ale po bliższym przyjrzeniu się wyszło na jaw, że winny jest rms (tak, Richard M. Stallman), który obserwuje właśnie tyle osób. Na takie okazje została dodana blacklista – wystarczy podać tam ID użytkownika, którego znajomych nie chcemy sprawdzać (w ogóle).

Na koniec skrypt wyświetli nam podstawowe dane, jak dla mnie wystarczające, by zorienotwać się, czy chcemy dodać kogoś do obserwowanych. Zasadniczo nic nie stoi na przeszkodzie, by dodać ich (po ID) skryptem, ale ja wolę wejść na profil i zobaczyć najpierw, co piszą (tak, oznacza to, że prawdopodobnie niebawem będę intensywniej korzystał z identi.ca, kosztem Blipa).

Skrypt poniżej. Przy okazji być może jest to sposób na nieirytujące zamieszczanie kodu na Blox…

UPDATE: Nie bardzo chciały działać URLe, przeszedłem na Net::Twitter i zamieszcam poprawioną wersję.

UPDATE2: Jest w komentarzu, ale nie wszyscy docierają: Jak znaleźć ID użytkownika na Twitterze? ID użytkownika na Twitterze (na Identi.ca też) jest zawarta w feedzie RSS danego użytkownika.

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