Debian nie jest nudny!

Nieco ponad rok temu pisałem, że Debian jest nudny. Straszny błąd i odszczekuję. Owszem, w wersji stabilnej może tak to wyglądać, ale jeśli korzysta się z wersji testing (no dobrze, tak naprawdę testing/unstable), to nudzić się nie sposób. Czym można być zaskoczonym? Wieloma rzeczami, podczas niewinnych upgrade’ów.

Sprawa pierwsza, ponieważ karta zintegrowana nie działała, kupiłem sobie zintegrowaną na USB. Ruszyła od kopa praktycznie (nuda). Po paru dniach przestała działać. Ot tak sobie. Śledztwo pokazało, że jakiś mózg stwierdził, że jak ktoś ma kartę USB, to nie będzie podstawowa na pewno i w /etc/modprobe.d/alsa-base.conf pojawiło się:

# Keep snd-usb-audio from beeing loaded as first soundcard
options snd-usb-audio index=-2

Oczywiście bez ostrzeżenia przy wprowadzaniu zmian, bo po co?

Inne wesołe? Ależ proszę. Po którymś upgrade i reboocie karta graficzna zaczęła robić ciekawy efekt. Tzw. wyżarzanie. Obraz rozjechany (random na podstawie zawartości konsoli), kaszana i coraz jaśniej świecił. Nawet ciekawe, ale… Szczęśliwie miałem odpalone SSH, bo nie wiedziałem, czy całkiem się wiesza, czy co. Okazało się, że nie, nie całkiem. Wszystko żyje. Tylko nie wyświetla.

Po krótkiej walce, tymczasowo rozwiązałem problem dodając moduł radeon (karta to 01:00.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility M6 LY) do blacklisty (i tak go ładował…). I tak żyłem sobie w naiwnym przekonaniu, że w kernelu coś skopali. Wcale nie. Przy niedawnej dyskusji na IRCu jakoś tak zeszło na Radeony i… Włączyli KMS! Tak ni z gruchy, ni z pietruchy. Wystarczyło wyłączyć KMS w /etc/modprobe.d/radeon-kms.conf i wcale nie trzeba blacklistować modułu radeon! Szkoda, że nie instalowany pakiet nie wyświetlił informacji o tej zmianie przy instalacji.

I tak liczyłem, że KMS będzie sprawą tego, że hibernacja przestała działać (bo również nagle przestała). Niestety nie – po wyłączeniu KMS nadal nie działa. Zgłosiłem dwa błędy odnośnie pakietu uswsusp (#583525 i #574653). W ogóle trochę nie rozumiem, czy ktoś sprawdza, czy maintainer tego pakietu żyje? Zwykle przy innych zgłoszeniach był jakiś feedback, a tu wisi, wisi, wisi… A mi hibernacja nadal nie działa. No chyba, że z jakiejś przestarzałej metody korzystam i stąd to milczenie…

W każdym razie, Debian nie jest nudny. Przy testingu nudzić się nie sposób! 😉

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.