Konfiguracja czytnika tin z polskimi znakami

Copyright (C) 2005-2008 Adam Wysocki <gophi at chmurka.net>

  1. Wstęp
  2. Co będzie potrzebne
  3. Skąd ściągnąć
  4. Przed kompilacją
  5. Kompilacja
  6. Konfiguracja
  7. Testujemy
  8. Nano i kolory
  9. GPG
  10. Automatyczne generowanie taxów (pl.listserv.chomor-l)
  11. Changelog
  12. Copyright i autor

1. Wstęp
Tin jest wygodnym, tekstowym czytnikiem news dla systemów uniksowych (Linux, BSD i inne), ale często problemy sprawia jego prawidłowa konfiguracja. Nękany bezsennymi nocami postanowiłem przepisać to mini-howto. Jego poprzednia wersja, napisana pod wpływem kolejnego maila z serii „jak to skonfigurować”, cieszyła się pewnym powodzeniem i paru osobom pomogła, więc może teraz będzie jeszcze lepiej :) Wszystkie uwagi, skargi, wnioski i piwo są mile widziane pod adresem na dole tego dokumentu.
2. Co będzie potrzebne
Z potrzebniejszych rzeczy: Podstawowe umiejętności związane z systemam uniksowymi (nie musisz nazywać się Linus Torvalds ani zjadać plików .c na śniadanie, ale umiejętność edycji plików, wydawania poleceń i rozumienia podstawowych błędów będzie bardzo wskazana), działający kompilator (gcc razem z nagłówkami biblioteki standardowej i binutils), make, bison, biblioteka ncurses razem z nagłówkami (libncurses i libncurses-dev), jakieś narzędzie do ściągania plików (wget), edytor tekstu (wybór jest kwestią gustu i przyzwyczajeń, ale jeżeli jeszcze nie masz swojego ulubionego, to polecam GNU nano), dostęp do serwera news i odrobina cierpliwości. Jeśli twój system nie radzi sobie z polskimi znakami, oczywiście powinieneś go nauczyć - polecam Polską Stronę Ogonkową.
3. Skąd ściągnąć
Samego tina możesz ściągnąć z www.tin.org. Chciałbym napisać, że warto używać mirrorów w Polsce (obecnie Sunsite ICM i CI TASK), bo jest do nich szybszy dostęp, ale nie napiszę, bo z tego co widzę te mirorry mają niekompletne i nieaktualne repozytorium tina (jeśli ta sytuacja się zmieni, powiadom mnie o tym a zaktualizuję tę informację). Dostępne są dwie wersje tina: stabilna i niestabilna. Jak to zwykle bywa, stabilna zawiera dobrze przetestowaną funkcjonalność i jest bardzo mało prawdopodobne, że stabilny tin wyłoży się podczas pracy, natomiast niestabilna jest dla tych, którzy lubią eksperymentować oraz potrafią zaraportować (albo poprawić) błędy w tinie. Wersja niestabilna zawiera więcej opcji i jest generalnie nowsza - kosztem stabilności właśnie (chociaż mi się wyłożyła może ze trzy razy w ciągu dwóch lat używania). Wybór należy do ciebie.

Jeśli używasz Debiana, możesz wpisać polecenie apt-get install gcc libc6-dev make bison wget nano libncurses5 libncurses5-dev i zapomnieć o sprawie :) Jeśli nie, a twój system wspiera pakiety albo porty, zajrzyj do jego dokumentacji, w jaki sposób zainstalować potrzebne pakiety. Jeśli wszystko inne zawiedzie, poniżej masz linki do źródeł konkretnych pakietów GNU. Uff... No i sam tin, linki podane powyżej, ale dla przypomnienia:
4. Przed kompilacją
Domyślnie tin jest kompilowany bez symboli debugowania i stripuje swoją binarkę po instalacji. Jeśli nie wiesz, co właśnie zostało napisane to nie musisz niczego zmieniać - stripnięta binarka jest szybsza i mniejsza kosztem braku szczegółowych informacji na temat ewentualnego wyłożenia się. Jeśli mimo wszystko chcesz skompilować tina z symbolami debugowania i nie stripować binarki przy instalacji, wyedytuj plik src/Makefile.in dopisując do CFLAGS opcję -g (to spowoduje generowanie symboli debugowania dla gdb) i usuwając -s z opcji INSTALL (to spowoduje, że binarka nie będzie stripowana podczas instalacji). Dla leniwych poniżej gotowy patch (jeśli twoja przeglądarka zamienia taby na spacje, pamiętaj o zamienieniu z powrotem).

--- src/Makefile.in
+++ src/Makefile.in
@@ -60 +60 @@
-CFLAGS		= @CFLAGS@
+CFLAGS		= @CFLAGS@ -g
@@ -385 +385 @@
-	@$(INSTALL) -s $(BINDIR)/$(EXE) $(DESTDIR)$(INS_BINARY_DIR)/$(EXE)
+	@$(INSTALL) $(BINDIR)/$(EXE) $(DESTDIR)$(INS_BINARY_DIR)/$(EXE)

5. Kompilacja
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 (wersja łatwa do wklejenia):

./configure \
--prefix=/usr/local \
--with-editor=/usr/bin/nano \
--enable-nntp-only \
--with-ncurses \
--with-domain-name=nie.umiem.zmieniac.domyslnych.opcji \
--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 (u mnie jest to /usr/bin/nano, u ciebie może być inny) 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, make install (w zależności od ustawionego prefiksu może wymagać uprawnień roota) i czysty, świeży tin znajdzie się tam, gdzie mu kazałeś :)
6. Konfiguracja
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 - naprawdę warto.

Poniżej konfiguracja .tin/attributes sprawiająca, że polskie znaki w postach bez zadeklarowanego zestawu znaków (wszyscy szerookim uśmiechem pozdrawiamy domyślną konfigurację programu Outlook Express :)) są widziane jako ISO-8859-2.

scope=pl.*,alt.pl.*
mm_network_charset=ISO-8859-2
undeclared_charset=ISO-8859-2

7. Testujemy
Nadeszła czas na najśmieszniejszą część - testowanie tina :) 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 (dla ciekawskich - jeśli będzie zdefiniowana zmienna NNTPSERVER i podana opcja -g, to tin skorzysta z opcji -g). Jest 6:10, za chwilę powinienem iść do pracy i z autora tekstów zmienić się w autora kodu, więc na razie oszczędzę dłuższego tekstu na temat testowania tina (tym bardziej że musiałbym zahaczyć o podstawy jego używania, a to dużo pisania), więc dodam tylko, że w przypadku braku innych możliwości możesz testować tina na grupie chmurka.test na mojej wirtualnej chmurce - news.chmurka.net.
8. Nano i kolory
Jeśli twoim ulubionym edytorem jest vi albo vim, to nawet nie trać czasu na czytanie tego punktu - i tak cię nie przekonam :) Jeśli natomiast używasz pico, pomyśl nad przejściem na nano i dopisaniem do nanorc moich definicji kolorów.

Bez zagłębiania się w szczegóły - kawałek nanorc sprawiający, że kolory w nano wywołanym z poziomu tina będą takie, jak w tinie:

## Gophi - tin
syntax "tin" "^/home/gophi/\.article\..*"
color brightred start="^From: " end="^$"
color blue start="^-- $" end="^$"
color brightyellow "^Spinacz biurowy, .*!$"
color green "^>.*"
color yellow "^>.*>.*"
color blue "^>.*>.*>.*"
Jeśli nie będzie działało (a domyślnie NIE będzie działało), zmień katalog w linii syntax na ten, w którym tin umieszcza artykuły do edycji przez nano. U mnie to jest /home/gophi/.article.pid (gdzie pid jest identyfikatorem procesu pine), u ciebie na pewno będzie inny. Jeśli masz inną wrotkę (lead-in, czyli tekst wprowadzający do artykułów), wyedytuj (lub w ogóle usuń) linię zawierającą kolor brightyellow. Właściwie dla pełnej zgodności z kolorystyką tina nie powinno jej być, ale jest, bo ładniej wygląda :)
9. GPG
GPG do współpracy z tinem wymaga małego wrappera. Napisałem go dawno temu, potem okazało się, że jest niekompletny i czegoś nie obsługuje (nie pamiętam czego, chyba podpisywania wiadomości forwardowanych jako maile do większej niż jedna ilości osób) a potem w ogóle zrezygnowałem z GPG, ale jeśli ci się przyda, to proszę bardzo: echo $* | sed s/--local-user\ gophi@studio.tpi.pl// | xargs /usr/local/bin/gpg. Jeśli masz lepszy to wyślij, wrzucę zamiast tego.
10. Automatyczne generowanie taxów (pl.listserv.chomor-l)
W skrócie - pisząc na pl.listserv.chomor-l do każdego posta trzeba dołączać dowcip. Są serwisy oferujące po każdym przeładowaniu strony inny losowy dowcip (chociażby www.dowcipy.pl albo dowcipy.onet.pl), a integracja ich z tinem jest bardzo prosta. Ściągamy mój szumnie, dumnie nazwany zestaw plików auto-taxi (http://www.chmurka.net/tax/, wszystkie pliki oprócz dowcip.php i dowcip.phps), kompilujemy poleceniem make, modyfikujemy skrypty .sh tak, żeby odpowiadały naszej konfiguracji (katalogi będą się różniły) i modyfikujemy .tin/attributes, dopisując do niego (znowu - pamiętając o podmianie katalogów):

scope=pl.listserv.chomor-l
sigfile=!~/public_html/tax/chomor.sh
Potem jeszcze trzeba wyłączyć sigdashes w .tin/tinrc (sigdashes=OFF) tak, żeby nie wrzucać taksów jako sygnaturki (bo to nie sygnaturka), dopisać sigdashes (dwie kreski i spację) na początku ~/.signature i to tyle, powinno działać :)
11. Changelog
Nie mam pełnego bo najzwyczajniej w świecie nie prowadziłem :) W kolejności od najnowszych zmian:

Najnowszą wersję zawsze znajdziesz pod adresem http://www.chmurka.net/t/tin/.
12. Copyright i autor
Mini-howto w czynie społecznym popełnił Adam Wysocki <gophi at chmurka.net>.

Autor nie ponosi żadnej odpowiedzialności za nieprawidłowe wykorzystanie informacji zawartych w tym dokumencie ani żadne szkody, które mogą wyniknąć na skutek czytania lub stosowania zawartych tutaj informacji. Dokument można rozpowszechniać na zasadach określonych w licencji Creative Commons 2.5 Attribution (cc-2.5-by).

Jeśli znalazłeś w tym dokumencie jakiś skandaliczny, wynikający z oczywistej, beznadziejnej ignorancji błąd, masz ochotę postawić mi pizzę, wysłać piwo albo nagle poczułeś nieodpartą chęć napisania mi potoku komplementów, możesz zaspokoić swój głód artystycznej ekspresji wysyłając maila na adres powyżej. Więcej informacji na temat kontaktu ze mną znajdziesz tutaj.