Dobrze, że istnieje RedHat. Zawsze to Linux. Wygodny shell, dość sensowna konfiguracja, spory wybór oprogramowania. A zarazem wystarczająco dużo formalizmów, by godzili się go używać poważni klienci przyzwyczajeni do Solarisa, Tru64 czy HP/UX.
Z drugiej strony - ilekroć zdarzy mi się coś na RedHacie czy CentOsie konfigurować, klnę pod nosem. Muzeum. Python 2.4 (linia z 2004 roku), PostgreSQL 8.1 (anno Domini 2005), Perl 5.8 (2002), PHP 5.1 (2005), GCC 4.1 (2006) i tak dalej.
Teoretycznie ma to zapewnić stabilność i bezpieczeństwo. W praktyce stabilne i bezpieczne
pakiety leżą sobie odłogiem a realnie potrzebne oprogramowanie jest instalowane przy
pomoc configure
, make
, make install
, z wszystkimi wadami takiego podejścia (od
braku automatycznych aktualizacji po niespójne koncepcje różnych administratorów dotyczące
lokalizacji programów i ich plików konfiguracyjnych).
Drugą metodą jest tropienie po sieci nieoficjalnych repozytoriów z świeższymi RPMami. Ostatnio potrzebowałem znaleźć aktualne wersje Pythona i PostgreSQLa, doszukanie się ich kosztowało zaskakująco dużo czasu, dlatego zanotuję.
PostgreSQL
Aktualne RPMy PostgreSQL dla RedHata, Fedory i CentOSa znalazłem na pgdg (utrzymywanym przez CommandPrompt).
Aby korzystać z tego repozytorium musiałem ściągnąć i zainstalować
pakiet pgdg
(wybierając odpowiednią wersję na stronie
pgdg). Przykładowo, aby postawić Postgresa 8.4.2 na CentOSie
pobrałem plik pgdg-centos-8.4-2.noarch.rpm
ze strony
http://yum.pgsqlrpms.org/reporpms/8.4/
(na której są także wersje 8.4 dla Fedory i RedHata) i zainstalowałem go
poleceniem:
# rpm -ivh pgdg-centos-8.4-2.noarch.rpm
(efektem było dodanie repozytorium pgdg do listy obsługiwanej przez yuma).
Kolejny krok to zablokowanie domyślnych wersji. Chodziło o dopisanie magicznej linijki
exclude=postgresql*
we właściwym pliku konfiguracyjnym. Na CentOSie
/etc/yum.repos.d/CentOS-Base.repo
- dwa razy, zarówno w secji
[base]
, jak w sekcji [updates]
. Na RedHacie w sekcji
[main]
pliku /etc/yum/pluginconf.d/rhnplugin.conf
.
Listę pakietów pgdg prezentuje polecenie
$ yum list | grep pgdg84
wybrałem potrzebne i zainstalowałem:
$ yum install postgresql.x86_64 postgresql-contrib.x86_64 \
postgresql-devel.x86_64 postgresql-docs.x86_64 postgresql-libs.x86_64 \
postgresql-plperl.x86_64 postgresql-plpython.x86_64 postgresql-python.x86_64 \
postgresql-server.x86_64 pgloader.x86_64
Potem trzeba było skonfigurować lokalizację plików bazy
danych. Elegancką metodą jest edycja pliku
/etc/sysconfig/pgsql/postgresql
(nie istniał, musiałem go stworzyć),
gdzie wpisałem:
PGDATA=/database/postgres
(podany katalog powinien istnieć i być własnością użytkownika postgres
).
Wreszcie tworzenie instancji:
# service postgresql initdb
(uwaga: przy problemach z uprawnieniami do katalogu PGDATA
polecenie initdb
się nie udaje nie informując o przyczynach)
i uruchamienie serwera (oraz zapewnienie jego uruchamianie po rebootach):
# chkconfig postgresql on
# service postgresql start
Po instalacji powyższą metodą wszystkie pliki konfiguracyjne leżą
w katalogu PGDATA
, logi odkładają się w $PGDATA/pg_log
, wszelkie
pliki bazy danych trafiają do różnych podkatalogów $PGDATA
. Można i warto
to zrekonfigurować - w szczególności ustawiając log_directory
w postgresql.conf
na /var/log/postgresql
(ten katalog trzeba stworzyć i zmienić mu właściciela
na postgresql
) i w miarę możności symlinkując pg_xlog
do katalogu
znajdującego się na innym dysku. Oczywiście warto przejrzeć też inne
ustawienia w postgresql.conf
, w szczególności rozmiary różnych rodzajów pamięci
i limity połączeń.
Przy tej ostatniej operacji polecam uwadze The Myghty GUCS package (zip) Scotta Berkusa, gdzie można znaleźć zarówno szczegółowy opis wszystkich parametrów konfiguracyjnych PostgreSQL jak wskazówki jak dostosować kluczowe ustawienia do rodzaju zastosowań.
Python
Współczesną wersję Pythona a także parę ważnych pomocniczych modułów (min. setuptools) znalazłem na iuscommunity.
Ten sam serwis publikuje także aktualne wersje PHP i mySQL.
Tutaj instalacja wymagała pobrania z
http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/
(mimo nazwy RedHat pakiety poprawnie działają także na CentOS) RPMów
ius-release
oraz epel-release
. W moim wypadku były to
ius-release-1-4.ius.el5.noarch.rpm
i epel-release-1-1.ius.el5.noarch.rpm
ściągnięte z http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/.
Potem proste
# yum search python | grep python26
i
# yum install python26.x86_64 python26-devel.x86_64 \
python26-libs.x86_64 python26-test.x86_64 python26-tools.x86_64 \
python26-nose.noarch python26-setuptools.noarch \
python26-httplib2.noarch python26-ldap.x86_64 \
python26-memcached.noarch python26-sqlalchemy.noarch
Zainstalowany Python dostępny jest jako python26
i potrafi
współistnieć ze standardowym Pythonem 2.4. Podobnie instalator
jajek dostępny jest jako easy_install-2.6
.
Postscriptum
Stanowiący przez lata symbol zapóźnienia Debian dystrybuuje w wersji stable Pythona 2.5, Perla 5.10, PostgreSQL 8.3, GCC 4.3 (by zachować te same przykłady).