tin jest wygodnym, tekstowym czytnikiem news dla systemów uniksowych (Linux, BSD i inne), ale często problemy sprawia jego prawidłowa konfiguracja – tin po domyślnej instalacji nie obsługuje prawidłowo polskich znaków. To mini-howto powinno pomóc rozwiązać ten problem.
Czytnik tin jest czytnikiem pracującym w terminalu tekstowym, więc potrzebne będą podstawowe umiejętności obsługi tego terminala (wydawanie poleceń, edycja plików). Potrzebny będzie także działający kompilator (gcc + libc-dev + binutils), GNU make, bison, biblioteka ncurses wraz z nagłówkami (libncurses i libncurses-dev), narzędzie do ściągania plików (wget, curl lub inne), edytor tekstu i dostęp do serwera news (np. news.chmurka.net).
Jeśli twój system nie radzi sobie z polskimi znakami, to najpierw powinieneś go tego nauczyć. Polecam Polską Stronę Ogonkową.
Sam czytnik można ściągnąć z jego strony: http://www.tin.org/. Dostępne są dwie wersje: stabilna oraz niestabilna. Wersja stabilna zawiera dobrze przetestowaną funkcjonalność, a niestabilna jest dla tych, którzy lubią eksperymentować oraz potrafią zaraportować (lub poprawić) błędy w czytniku. Jeśli nie wiesz, którą wersję wybrać, to wybierz wersję stabilną.
Jeśli używasz Debiana, Ubuntu lub podobnego systemu, to wszystkie niezbędne pakiety możesz zainstalować poleceniem:
sudo apt install gcc libc6-dev make bison wget nano libncurses5 libncurses5-dev
Jeśli używasz innego systemu, to sprawdź w jego dokumentacji, jak zainstalować niezbędne pakiety.
Przed kompilacją warto wprowadzić w tinie kilka poprawek. Nie jest to oczywiście niezbędne. Możesz to zrobić lub nie. Nie udostępniam ich w formie patcha, bo tin cały czas ewoluuje i patch szybko by się zdezaktualizował.
Domyślnie tin kompilowany jest bez symboli debugowania, a plik wykonywalny jest stripowany, co jest dobrym pomysłem dla wersji produkcyjnej. Jeśli chcesz po prostu używać czytnika w wersji stabilnej i nie interesuje cię raportowanie ewentualnych błędów, to nie musisz nic robić. Jeśli jednak chcesz używać wersji niestabilnych, jesteś programistą lub chcesz przyczynić się do rozwoju czytnika, to dobrym pomysłem jest wyedytowanie pliku src/Makefile.in i dopisanie do CFLAGS opcji -g oraz usunięcie opcji -s z linii zaczynającej się od @$(INSTALL).
tin domyślnie dodaje nagłówek Sender, zawierający adres e-mail piszącego. Moim zdaniem nie jest to dobrym pomysłem, dlatego w pliku src/init.c znajdź fragment disable_sender = FALSE; i zmień go na disable_sender = TRUE;.
Nie chcemy też, żeby tin dodawał własny nagłówek Path. Dlatego otwórz plik src/post.c i usuń wszystkie linie zawierające fragment msg_add_header("Path", przykładowo: msg_add_header("Path", tmp);. Możesz też usunąć wszystkie odwołania do funkcji make_path_header oraz samą funkcję.
Jeśli planujesz korzystać z programu gpg do szyfrowania i deszyfrowania wiadomości oraz podpisywania i weryfikowania podpisów, to powinieneś wykonać jeszcze jedną zmianę. Problem polega na tym, że zazwyczaj na grupy dyskusyjne nie piszemy z prawidłowego adresu e-mail (inaczej adres ten szybko zostaje zaspamowany), a tin przekazuje ten adres do programu gpg.
Otwórz plik src/pgp.c, znajdź wszystkie wystąpienia frazy --local-user %s (są dwie, a wraz z komentarzem trzy) i usuń je. Usuń także odwołanie do mailfrom zaraz po tych liniach.
Przykładowo:
"%s %s --textmode --armor --no-batch --local-user %s --output %s.asc --escape-from --clearsign %s", \ PGPNAME, pgpopts, mailfrom, pt, ptzmień na:
"%s %s --textmode --armor --no-batch --output %s.asc --escape-from --clearsign %s", \ PGPNAME, pgpopts, pt, pt
Gdy tin nie jest używany, to utrzymuje połączenie do serwera NNTP tak długo, jak to możliwe (w praktyce serwer prędzej czy później zakończy połączenie). Zdarzyło mi się korzystać z Internetu w sieci, w której router zapominał o nieużywanych, ale ciągle otwartych połączeniach. Objawiało się to zawieszaniem się połączenia przy próbie wejścia do grupy po dłuższym czasie bezczynności. Rozwiązaniem problemu było włączenie opcji SO_KEEPALIVE dla gniazda, którego tin używa do łączenia z serwerem. Jeśli okaże się, że nie masz tego problemu, to nie musisz nic robić, ale dodanie tej opcji nie zaszkodzi tak czy inaczej.
Otwórz plik src/nntplib.c i dopisz do niego poniższą funkcję. Najlepiej to zrobić na początku, przed funkcją getserverbyfile.
static void enable_keepalive(int fd) { const int optval = 1; setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, &optval, sizeof(optval)); }
Następnie znajdź wszystkie wywołania funkcji t_connect oraz connect i dodaj przed nimi wywołanie enable_keepalive(s);.
Program kompiluje się w miarę standardowo – najpierw ./configure, potem make build a na końcu make install. To jednak za mało. Żeby tin prawidłowo widział polskie znaki, trzeba odpowiednio skonfigurować kompilację. Warto zacząć od takich opcji:
./configure \ --prefix=/usr/local \ --with-editor=/usr/bin/nano \ --enable-nntp-only \ --with-ncurses \ --with-domain-name=localdomain.invalid \ --disable-mime-strict-charset \ --with-mime-default-charset=ISO-8859-2 \ --with-nntp-default-server=news.chmurka.net \ --disable-nls \ --disable-locale
Oczywiście powinieneś dostosować powyższe opcje do własnych potrzeb - szczególnie prefiks (jeśli nie robisz kompilacji dla całego serwera, a jedynie dla swojego konta, ustaw --prefix=$HOME), edytor i domenę (twoja domena, u mnie chmurka.net, jeśli nie wiesz co wpisać to wpisz np. localdomain.invalid). Jeśli configure się powiedzie, to potem powinno pójść gładko – make build i make install (w zależności od ustawionego prefiksu może wymagać uprawnień roota – sudo make install).
Po pierwszym uruchomieniu tin utworzy katalog .tin w twoim katalogu domowym. Znajdziesz tam lokalne pliki konfiguracyjne. Z ciekawszych: tinrc (główny plik konfiguracyjny), headers (nagłówki dodawane do postów) i attributes (tam można ustawić różne atrybuty dla poszczególnych hierarchii news, np. fakt, że w pl.* i alt.pl.* domyślnym kodowaniem jest ISO-8859-2). Poświęć chwilę na przejrzenie i wyedytowanie tinrc.
Poniżej znajduje się konfiguracja .tin/attributes sprawiająca, że polskie znaki w postach bez zadeklarowanego zestawu znaków (np. pochodzące z domyślnej konfiguracji programu Outlook Express) są widziane jako ISO-8859-2.
scope=pl.*,alt.pl.* mm_network_charset=ISO-8859-2 undeclared_charset=ISO-8859-2
Pora na testy. Jeśli nie zdefiniowałeś zmiennej środowiskowej NNTPSERVER ani nie podałeś przy uruchamianiu opcji -g, to tin po uruchomieniu będzie się łączył z serwerem news podanym przy konfigurowaniu kompilacji. Uruchom zatem program i zobacz, czy połączy się z serwerem.
Sama obsługa czytnika niestety wykracza poza zakres tego poradnika, ale sam tin jest intuicyjny, więc nie powinna przysporzyć ci problemów.
Jeśli zdecydowałeś się na używanie edytora nano, to dobrym pomysłem jest dodanie do swojego .nanorc zestawu kolorów podczas edycji postów.
syntax "message" "^.*/\.article\..*$|^.*\.msg|^/tmp/pico.*$" color green "^>.*" color yellow "^>>.*" color yellow "^> >.*" color cyan "^>>>.*" color cyan "^> >>.*" color cyan "^>> >.*" color cyan "^> > >.*" color blue "^-- $"
Jest w polskim Usenecie pewna specyficzna grupa – pl.listserv.chomor-l. Przyjęło się, że do każdego posta wysyłanego na tę grupę należy dokleić dowcip (tzw. tax). Można zrealizować to automatycznie, tworząc swoją bazę dowcipów i pisząc skrypt, który wypisze kilka dowcipów, a po nich sygnaturkę. Nie wklejam tutaj linka do tego skryptu, bo serwis, z którego korzystał, już i tak nie istnieje, a wspomniana grupa jest martwa, ale zostawiam ten fragment poradnika.
W pliku .tin/attributes w swoim katalogu domowym dopisz:
scipe=pl.listserv.chomor-l sigfile=!~/bin/chomor.sh
oraz ustaw sigdashes=OFF w pliku tin/tinrc. Oczywiście zakładamy, że skrypt napisałeś i umieściłeś w katalogu bin/chomor.sh w swoim katalogu domowym.
Lista zmian i ewolucji tego poradnika od najnowszej do najstarszej znajduje się poniżej.
Najnowszą wersję zawsze znajdziesz pod adresem: http://news.chmurka.net/tin.php.
Poprawki, uwagi, propozycje itd. należy zgłaszać na adres: gof-news (małpa) chmurka.net.
Dokument można rozpowszechniać na zasadach określonych w licencji Creative Commons Attribution.