ELinks to ,,najlepsza, psiakrew, przeglądarka'' wśród przeglądarek tekstowych. Zalety zaletami, mnie interesuje tylko spakietowanie tego programu.

1. Źródła leżą w ~/CVS/elinks. A przynajmniej tak tutaj zakładam :)

2. Próbna instalacja nie powinna być trudna. Co prawda po pobraniu z CVS repozytorium ELinksa nie zawiera skryptu ./configure, ale załączony ./autogen.sh go wygeneruje. Czyli sytuacja podobna do MC, z tym że tutaj nie uruchamia automatycznie . Po przejrzeniu dostępnych opcji mam już swój zestaw:
./configure --disable-dependency-tracking --disable-ipv6 --disable-nls \
--disable-mailcap --enable-fastmem --without-xbel --without-lua --prefix=/usr
Czyli: wyłączenie ustawicznego śledzenia zależności w źródłach (przydaje się w sumie tylko gdy skompiluje się kod, uruchomi ./configure z innymi opcjami, i jeszcze raz będzie kompilować źródła, bez ,,make clean''. W przypadku budowania pakietu rpm do takich sytuacji nigdy nie dochodzi.

Potem wyłączam jeszcze obsługę ipv6 (nie używam), obsługę innych języków interfejsu (nie używam, zresztą drastycznie zmniejszy to wynikową binarkę ELinksa), wyłączam też wsparcie dla mechanizmu mailcap (ELinks ma swój własny, bardziej rozbudowany mechanizm i to jego wolę używać - można co prawda używać obydwu równolegle, ale hej, jeśli czegoś nie potrzebuję to po co to wkompilowywać?). Włączam też ,,szybkie'' techniki operowania na pamięci, wyłączam wsparcie dla zapisywania zakładek w plikach formatu XBEL (taki standard pozwalający na wymianę zakładek między niektórymi przeglądarkami), wyłączam też możliwość pisania skryptów pod ELinksa w języku LUA (nie znam tego języka, więc...)

Kompilacja przechodzi bez większych oporów, ,,make install DESTDIR=/shm'' również. Otrzymuję takie drzewko plików:
usr/
 |-bin/
 |  \-elinks
 \-man/
    |-man1/
    |  \-elinks.1
    \-man5/
       |-elinks.conf.5
       \-elinkskeys.5
Łeee, to będzie trywialne :)

3. Plik .spec
Summary: Rozszerzona wersja Linksa
Name: elinks
Version: %(date +%Y%m%d)
Release: 1
License: GPL
Group: Internet
BuildRoot: /var/tmp/%{name}-%{version}
Obsoletes: links

%description
Rozszerzona wersja Linksa (tekstowej przeglądarki WWW), z dużo bardziej
liberalnymi założeniami dotyczącymi pożądanych cech czy stylu rozwijania.
ELinks w swoich założeniach ma być ulepszoną, bardziej rozbudowaną wersją
Linksa - zawierać więcej opcji, oferować większą konfigurowalność, a przy
tym mieć solidny, stabilny kod.

%prep
%setup -q -T -c
cp -a ~/CVS/elinks/* .

%build
./autogen.sh
%configure --disable-dependency-tracking --disable-ipv6 --disable-nls \
--disable-mailcap --enable-fastmem --without-xbel --without-lua
make

%install
rm -rf %{buildroot}
make install DESTDIR=%{buildroot}

%files
%defattr(0644,root,root,0755)
%attr(0755,root,root)%{_bindir}/*
%{_mandir}/man*/*.gz

%clean
rm -rf %{buildroot} %{_builddir}/%{buildsubdir}
Preambuła jest prosta - automagiczny tag Version: itp. A, dodałem
Obsoletes: links
dzięki temu przy instalacji tego pakietu zostanie automatycznie usunięty pakiet ,,links''. Nie ma raczej sensu posiadanie w systemie równolegle linksa i elinksa, zwłaszcza że elinks jest w wielkiej mierze ,,kompatybilny wstecz'' z linksem.

Sekcja %prep jest wzorowana na tych z Vima czy Midnight Commandera. Sekcja %build to wywołanie skryptu ./autogen.sh a następnie makra %configure z odpowiednimi opcjami.

Instalacja i sekcja %files są identyczne jak we wcześniej podanym szkielecie pliku .spec. Nie wymagały w ogóle zmieniania na potrzeby tak prostego pakietu.

4. Budowanie pakietu sprowadza się do rpmbuild -bb elinks.spec. I po krzyku.