POLDEK(1)

#=cut

NAZWA
poldek - program pomocniczy do zarządzania pakietami RPM

STRESZCZENIE
poldek [--source=ŹRÓDŁO ...] [OPCJA...] [PAKIET...]

poldek [--source=ŹRÓDŁO ...]

UWAGA
Ten dokument dotyczy serii 0.18.x i jest w dużej części zdezaktualizowany, aczkolwiek nadal może być przdatny dla użytkowników nie znających angielskiego.

Aktualna dokumentacja jest dostępna w języku angielskim, w postaci stron podręcznika systemowego man ('poldek' oraz 'poldek.conf') oraz w postaci podręcznika w formacie Info oraz HTML.

OPIS
Poldek jest programem do zarządzania pakietami RPM. Jego podstawowe cechy są podobne do każdego współczesnego programu do uaktualniania pakietów, jak apt-get - program pobiera informacje o pakietach z indeksu (domyślnie packages.dir.gz) i pozwala na ich instalację, uaktualnienie lub usunięcie.

Program pracuje w dwóch trybach: wsadowym (w użyciu podobny do apt-get) oraz interaktywnym (interactive). Tryb interaktywny stanowi interfejs readline z autouzupełnianiem linii poleceń oraz ich historią, podobny do trybu powłoki modułu CPAN perla.

Zdalne pliki są pobierane przez samego poldka (wewnętrzny klient FTP/HTTP) bądź poprzez zewnętrzne programy (domyślnie nieskonfigurowane, patrz "PLIK KONFIGURACYJNY").

Podstawowe tryby pracy poldka to:

•   Buduj indeks pakietów

•   Uaktualniaj indeks pakietów

•   Weryfikuj zestaw pakietów

•   Instaluj system od zera

•   Uaktualniaj cały system

•   Instaluj lub uaktualniaj wybrane pakiety

•   Dziel zestaw pakietów w podzestawy o ustalonym rozmiarze

  Tryb Interaktywny
Tryb interaktywny uzyskujemy uruchamiając

    poldek [OPCJA...] --shell [-f]

co przełącza do interfejsu readline. Będąc w linii poleceń wpisz 'help', a reszta powinna wyjaśnić się sama.

[ciąg dalszy nastąpi...]

ŹRÓDŁA PAKIETÓW
Źródła pakietów mogą być określane w pliku konfiguracyjnym poprzez parametr source (patrz "PLIK KONFIGURACYJNY"), lub z linii poleceń następującymi opcjami:

-s, --source ŹRÓDŁO

--sdir KATALOG

--shdrl ŹRÓDŁO

gdzie ŹRÓDŁO jest lokalną ścieżką bądź URL-em. Z --source używany jest natywny plik indeksu (packages.dir.gz); z --sdir jest przeglądany katalog docelowy, zamiast czytania pliku indeksu - wersja ta powinna być używana jedynie do katalogów lokalnych. Ostatnia --shdrl może być użyta do pobrania informacji o pakiecie z pliku z czystymi nagłówkami RPM (znanym jako hdlist).

Typ źródła może być ustawiony również przez opcję type, patrz "PLIK KONFIGURACYJNY".

Przykłady:

$ poldek -s /katalog/z/RPMS/ [OPCJA...]
$ poldek -s /katalog/z/RPMS/packages.dir [OPCJA...]
$ poldek -s ftp://ftp.ala.ma.kota/RPMS/
$ poldek --sdir=/ala/RPMS
$ poldek -s rsync://rsync.ala-ma-kota.com/RPMS/
$ poldek --shdrl=http://ziut/base/hdlist

Jeśli indeks pakietów i pakiety są przechowywane w innych lokalizacjach, wtedy powinna być użyta opcja:

-P, --prefix PREFIKS

do wskazania lokalizacji pakietów, np.:

$ poldek -s /tmp/packages.dir.gz --prefix=/cdrom/RPMS/ -s ... --prefix=...

Jeśli źródło jest skonfigurowane z nazwą (patrz "PLIK KONFIGURACYJNY"), wtedy może być wybrane przez -n, --sn NAZWA-ŹRÓDŁA, np.:

$ poldek --sn pld ...

Aby uzyskać listę wszystkich skonfigurowanych źródeł użyj opcji -l, --sl, np.:

$ poldek -l

nest         ftp://ftp.pld.org.pl/dists/nest/PLD/i686/PLD/RPMS/  (noauto)
nest-test    ftp://ftp.pld.org.pl/dists/nest/test/i686/  (noauto)
pld          ftp://ftp.pld.org.pl/dists/ra/PLD/i686/PLD/RPMS/
pld-test     ftp://ftp.pld.org.pl/dists/ra/test/i686/  (noauto)

WYBIERANIE PAKIETÓW
Pakiety mogą być wybierane na trzy sposoby:

•   jako pliki pakietów w argumentach

    $ poldek ... ala-ma-kota-2.1-2.i386.rpm

•   jako maska nazw pakietów

    na przykład:

    $ poldek ... apache

    $ poldek ... 'apache*'

    Jeżeli musi być ustawione EVR, wpisz je po '#', np.:

    $ poldek ... apache#1.3.12

    $ poldek ... apache#1.3.20-1

•   jako zestaw pakietów zdefiniowany w PLIKU --pset=PLIK, (patrz README.package-sets):

    $ poldek ... --pset ~/.package-sets/tiny-system

Wszystkie powyższe opcje mogą być łączone. Zwróć uwagę, że wybrane pakiety powinny być obecne w ŹRÓDLE.

PODSTAWOWE TRYBY
Jeden z następujących trybów podstawowych musi być wybrany:

--mkidx[z][=PLIK]  [--nodiff]
    Buduje indeks pakietów, domyślnie jest on przechowywany w SOURCE/packages.dir[.gz]. Tworzone są dwa inne pliki: packages.dir.mdd z obliczonym skrótem packages.dir oraz packages.dir.toc[.gz] z NAME-EVR pakietów po jednym w linii.

    Dodatkowo, jeśli poprzedni indeks pakietów jest różny od aktualnie utworzonego, wtedy tworzony jest indeks "patch" w katalogu SOURCE/packages.i/. Każdy patch składa się z dwóch plików: packages.dir.diff.YYYY.MM.DD-HH.mm.SS.gz i packages.dir.diff.YYYY.MM.DD-HH.mm.SS.mdd.

    Przeterminowane patche są automatycznie usuwane.

    Z --nodiff patche nie są tworzone.

    UWAGA: W tym jest przyjmowana jako ŹRÓDŁO tylko jedna i tylko ścieżka do katalogu.

--up, --update; --upa, --update-whole
    Resynchronizuj indeks pakietów z jego źródła i zweryfikuj go.

    Z --update program szuka "patche'y" do istniejącego lokalnie indeks pakietów, a jeśli to zawodzi, pobiera cały indeks.

    Z --update-whole program uaktualnia cały indeks pakietów.

    Dla źródeł lokalnych program weryfikuje integralnosć istniejącego indeksu za pomocą jego skrótu z packages.dir.mdd.

-V|--verify
    Opcja ta weryfikuje zależności zbioru pakietów. Jeśli nie określono pakietów sprawdza wszystkie dostępne.

--install-dist[=KATALOG]
    Instaluje od zera system używając KATALOGU jako katalogu głównego (/). Trzeba określić pakiety.

--upgrade-dist[=KATALOG]
    Instaluje najnowsze wersje wszystkich już zainstalowanych pakietów w systemie korzystając z określonego źródła (patrz "ŹRÓDŁO").

-i, --install|-u, -U, --upgrade|--downgrade
    Instaluje, uaktualnia bądź instaluje starszą wersję pakietu.

--reinstall
    Przeinstalowuje podany pakiet.

--shcmd=POLECENIE
    Uruchamia w trybie interaktywnym POLECENIE i wychodzi.

--shell
    Uruchamia poldka w trybie interaktywnym. Wpisz "help" aby uzyskać listę dostępnych poleceń. Jest to domyślny tryb pracy poldka.

--split=ROZMIAR[:PIERWSZY_WOLNY_OBSZAR]  [--split-conf=PLIK] [--split-out=PREFIKS]
    Dzieli zestaw pakietów na części, każda o rozmiarze ROZMIAR MB. Pierwsza część będzie o PIERWSZY_WOLNY_OBSZAR MB mniejsza.

    Priorytety pakietów są brane z PLIKU podanego przez --split-conf (patrz przykładowy pkgsplit.conf z dystrybucji programu). Domyślnie pakiety mają priorytet 0.

    Każda część jest zapisywana jako lista NAME-EVR.ARCH.rpm do pliku PREFIX.XX, domyślnie PREFIX stanowi "packages.chunk".

  Opcje instalacji

--dump[=PLIK]
    Wypisz nazwy plików pakietów do PLIKU bądź na standardowe wyjście, zamias instalować je.

--dumpn[=PLIK]
    Wypisz nazwy pakietów do PLIKU bądź na standardowe wyjście, zamiast instalować je.

--fetch[=KATALOG]
    Jak --dump, ale pakiety są pobierane i składowane domyślnie w katalogu stanowiącym cache poldka.

-F, --fresh
    Aktualizuj pakiety, ale tylko jeśli wcześniejsza wersja jest aktualnie zainstalowana. Uwaga: odpowiednikiem "rpm --freshen" jest "poldek -u/-i --fresh --nofollow"

-G, --greedy
    Automatycznie aktualizuj pakiety, których zależności są łamane poprzez zainstalowane pakiety, na przykład jeśli pakiet foo jest aktualizowany z wersji 1.0 do 1.2, a pakiet foo-devel jest już zainstalowany z zależnością "foo = 1.0", wtedy poldek aktualizuje także foo-devel do wersji 1.2.

--hold=PAKIET[,PAKIET]...
    Zapobiega aktualizacji podanych pakietów, jeśli są już zainstalowane. Jeśli opcja nie jest podana, wtedy lista pakietów do zatrzymania jest brana z opcji konfiguracyjnej hold i dodatkowo z $HOME/.poldek_hold. Wstrzymakie pakiety nie będą aktualizowane za wyjątkiem sytuacji, gdy będą bezpośrednio wskazane przez użytkownika.

-m, --mercy
    Bądź tolerancyjny w stosunku do zależności od wersji, które toleruje RPM, np.: pakiet A wymaga foo >= 1.0, podczas gdy pakiet B dostarcza "foo" beż żadnej wersji.

--nodeps; --justdb; --force; --root;
    Ma takie znaczenie jak w przypadku RPM. Patrz następna sekcja.

-N, --nofollow
    Nie instaluj automatycznie pakietów wymaganych przez wybrane.

--nohold
    Nie bierz listy wstrzymywanych pakietów z $HOME/.poldek_hold ani parametru konfiguracyjnego hold.

--rpmdef="NAZWA WARTOŚĆ"
    Jak opcja rpm --define.

-t, --test
    Ńie instaluj pakietów, ale sprawdź, czy zadziała czy nie. Podane raz powoduje tylko test z użyciem poldka, żeby przeprowadzić pełny test z użyciem rpma podaj dwukrotnie.

INNE OPCJE

--cachedir=KATALOG
    KATALOG wskazuje miejsce, gdzie pobrane pliki mają być przechowywane. Jeśli opcja nie jest ustawiona, użyty jest $TMPDIR. Jeśli $TMPDIR nie jest ustawiony, wtedy tworzony jest $HOME/.poldek-cache i używany jako katalog cache.

--log=PLIK
    Loguj wszystkie komunikaty poldka do PLIKU.

WSPÓŁPRACA Z RPM
Obecnie wszystkie instalacje za wyjątkiem install-dist są robione przez binarkę RPM, która jest uruchamiana w tle. Opcje przekazywane do rpma:

•   --root

•   --force

•   --install

•   --justdb

•   --nodeps

•   --test (musi być podane dwukrotnie, patrz wyżej opis --test)

•   --upgrade

•   --rpmdef (przekazywane jako --define)

Inne opcje rpma mogą być przekazywane jako argumenty w postaci --rpm-RPM_LONG_OPTION, np.:

$ poldek ... -- --rpm-noscripts --rpm-notriggers

PLIK KONFIGURACYJNY
Program próbuje przeczytać konfigurację z $HOME/.poldekrc; jeśli plik ten nie istnieje, czyta /etc/poldek.conf. Opcja -c,--conf może wskazywać na inną lokalizację pliku konfiguracyjnego. Z --noconf poldek nie czyta żadnej konfiguracji.

Plik konfiguracyjny zawiera parametry w następującej postaci:

'nazwa = wartość'

Plik jest oparty na liniach, czyli każda linia zakończona znakiem nowej linii reprezentuje komentarz bądź parametr.

  Parametry:

•   source = [NAZWA[,OPCJE]] ŚCIEŻKA_ŹRÓDŁOWA

    Opcjonalna NAZWA może być określona później z linii poleceń przez -n, --sn NAZWA-ŹRÓDŁA; na przykład jeśli masz źródła skonfigurowane następująco:

    source = pld-devel /mnt/PLD-stable/RPMS

    source = pld-stable ftp://zn/PLD/i686/PLD/RPMS

    source = misRPMS ftp://zn/rpm/RPMS/

    wtedy aby użyć tylko ftp://zn/PLD/i686/PLD/RPMS wykonaj:

    $ poldek --sn pld-stable

    ...i aby użyć wszystkich pld-*:

    $ poldek --sn pld-\*

    OPCJE określają opcje źródeł; dozwolone wartości to:

    •   noauto - nie ładuj domyślnie tych źródeł

    •   noautoup - nie aktualizuj domyślnie tych źródeł

    •   gpg - weryfikuj sygnatury GPG pakietu

    •   pgp - weryfikuj sygnatury PGP pakietu

    •   pri=WARTOŚĆ_NUMERYCZNA

        Opcją tą można ustawić priorytet źródła. Jeśli te same pakiety (identyczna nazwa i EVR) są dostępne z więcej niż jednego źródła, wtedy brane są pakiety ze źródła o wyższym priorytecie.

        Jeśli priorytety źródeł nie są ustawione, źródła dostają priorytety zgodne z ich kolejnością w pliku konfiguracyjnym.

    •   type=TYP_ŹRÓDŁA

        Opcja ta pozwala na ustawienie typu źródła. Dostępne wartości to:

        •   pidx - natywny plik indeksu poldka (domyślny)

        •   pdir - lokalne katalogi; poldek przeszuka je zamiast
                              czytać plik indeksu

        •   hdrl - plik z surowymi nagłówkami pakietów w formacie RPM;
             dostępny w wielu dystrybucjach opartych na RPM-ie (w RH nazywa się hdlist),
             jednakże ten format nie jest optymalny dla poldka (nie jest na przykład
             auktualizowalny). Patrz poldekrc.sample-rh załączony w dystrybucji poldka.

    Przykłady:

    # pakiety z 'pld' są preferowane source = pld,gpg,noautoup,pri=-10 ftp://zn/PLD/ra/RPMS

    source = pld-test,noauto /mnt/PLD-test/RPMS

    source = rare,noautoup ftp://host/rare-RPMS

    source = build-area,type=dir /home/zenek/rpm/RPMS

    source99 = rh,noauto,type=hdrl ftp://redhat/os/i386/RedHat/base/hdlist

    prefix99 = ftp://redhat/os/i386/RedHat/RPMS

•   sourceXX = ŹRÓDŁO

•   prefixXX = ŹRÓDŁO

    Jeśli chcesz skonfigurować źródło z prefiksem (patrz opis opcji -P), wtedy powinno być określone jako zakończona sufiksem para źródło/prefiks, aby rozróżnić dane źródło od innych, na przykład:

    source1 = ~/tmp/moje-indeksy-cd/

    prefix1 = /mnt/cdrom/RPMS/

•   cachedir

            Patrz opis opcji B<--cachedir>

•   confirm_installation = yes|no

            Jeśli ustawione na "yes" program potwierdza wszystkie instalacje
            pakietów (domyślnie: no)

•   confirm_removal = yes|no

            Jeśli ustawione na "yes" program potwierdza wszystkie deinstalacje
            pakietów (domyślnie: yes)

•   choose_equivalents_manually = yes|no

            Jeśli ustawione na "yes" program pozwala użytkownikowi na wybór
            spośród równoważnych pakietów (domyślnie: no)

•   follow = yes|no

            Automatycznie instaluj|nie instaluj pakietów wymaganych przez
            wybrane (domyślnie: yes)

•   ftp_sysuser_as_anon_passwd = yes|no

            Jeśli ustawione na "yes" jako anonimowe hasło FTP wysyłane jest
            login@hostname (domyślnie: no)

•   greedy = yes|no

            Patrz opis opcji --greedy (domyślnie: no)

•   hold = pakiet[ pakiet...]

            Patrz opis opcji --hold

•   mercy = yes|no

            Patrz opis opcji --mercy

•   keep_downloads = yes|no

            Program domyślnie usuwa pobrane pliki pakietów po pomyślnej instalacji.
            Jeśli opcja ustawiona jest na "yes", wtedy program nie usunie pobranych
            pakietów z katalogu cache.

•   particle_install = yes|no

            Jeśli ustawione na "no" instalacja wielu pakietów jest przeprowadzana
            jako jedna transakcja (domyślnie: yes)

•   use_sudo = yes|no

            Dla operacji r/w uruchom rpma używając sudo.
            Domyślną wartością jest "no", ale zalecana jest zmiana na "yes"
            i używanie poldka jako zwykły użytkownik.

Zewnętrzne programy pobierające

Programy pobierające są konfigurowane przez parametr PROTOCOL_get="SPEC". SPEC jest poleceniem bądź sformatowanym łańcuchem, gdzie przynajmniej 2 z 4 dostępnych semi-makr powinny być użyte:

%p[n] - nazwa pliku pakietu, %pn znaczy, że %p może wystąpić wiele razy
%P[n] - pełna ścieżka do pakietu, %Pn -"-
%d - katalog cache
%D - katalog cache/nazwa pakietu

Obecnie dostępne są cztery protokoły: FTP, HTTP, HTTPS i RSYNC. Specjalny "protokół" ftp_http może być użyty do opisu programów pobierających z obu protokołów, HTTP i FTP.

Przykłady:

ftp_http_get = "/usr/bin/wget -N --dot-style=binary -P %d %Pn"

ftp_get = "/usr/bin/curl %P -o %D"

ftp_get = "/usr/bin/snarf %P %D"

rsync_get = "/usr/bin/rsync -v %P %d"

Patrz również: załączone przykładowe pliki konfiguracyjne.

Dodatkowo poldek wspiera URL-e CDROM, które mogą być używane, gdy zestaw pakietów jest przechowywany na zmienialnych mediach (kilka CD, ZIP-ów, etc); jako CDROM "downloader" powinien być skonfigurowany vfjuggle, po szczegóły patrz poldekrc.sample-cdrom.

PRZYKŁADY

  Tworzenie indeksu pakietów:
$ poldek -s /cdrom/PLD/RPMS --mkidxz=/tmp/packages.dir.gz

$ poldek -s /ftp/pub/PLD/RPMS --mkidxz

Używając skryptu mkpackagedir:

$ mkpackagedir /ftp/pub/PLD/i686/RPMS /ftp/pub/PLD/sparc/RPMS

  Weryfikacja:
$ poldek -s rsync://ala.ma.kota/PLD/RPMS/ -V

$ poldek -s /dir/with/RPMS -V apache

  Instalacja od zera:
$ poldek -s ftp://ftp.trurl.net/PLD/RPMS/
  --install-dist=/mnt/dest --pset ftp://home.net/moje-podzestawy/mójzestaw

Powyższe polecenie instaluje podzestaw pakietów "mójzestaw" w /mnt/dest jako root.

  Aktualizacja całego systemu:
$ poldek -v -s ftp://ftp.tatry.pl/PLD/RPMS/ --upgrade-dist --log=~/tmp/poldek.log

Tylko pobierz pakiety zaznaczone do aktualizacji:

$ poldek -s ftp://ftp.rankiem.net.pl/PLD/RPMS/
  --upgrade-dist --fetch=/tmp/PLD-up/

Stwórz listę nazw pakietów zaznaczonych do aktualizacji:

$ poldek -s ftp://ftp.pld.org.pl/PLD/RPMS/
 --upgrade-dist --dump=/tmp/PLD-up-`date +%Y.%m.%d`

Tylko testuj:

$ poldek -s ftp://ftp.pociemku.org/PLD/RPMS/
  --upgrade-dist --test

  Instalacja/aktualizacja wybranych pakietów:
$ poldek -s ftp://ftp.znienacka.com/PLD/RPMS/ -u apache --nevr "ala-ma-kota 1.2" smail-12-389.i386.rpm

$ poldek -s ftp://ftp.dudy.net/RPMS/ -ti xteddy

  Dzielenie zestawu na 100 MB części:
$ poldek --split=100 --split-conf=zip-split.conf \
   --split-out=/tmp/zipchunk

  Wykonanie polecenia powłoki:
$ poldek --shcmd='ls -lt' | less

ŚRODOWISKO
Plik konfiguracyjny pobierany jest z $HOME.

$TMPDIR (jeśli ustawiony) jest używany jako katalog tymczasowy o ile nie jest określony cachedir.

$PAGER (jeśli ustawiony) jest używany w trybie interaktywnym.

PLIKI
/etc/poldek.conf

$HOME/.poldekrc

$HOME/.poldek_hold

$HOME/.poldek-cache/

BŁĘDY

  Konflikty plików
Konflikty są wykrywane tylko przez porównanie rozmiarów plików i trybów, co oznacza, że nie wszystkie konflikty mogą być wykryte, gdyż nie są porównywane sumy kontrolne MD5 (zbyt bardzo zwiększyłoby to zużycie pamięci).

  Uaktualnianie i tag "Obsoletes"
W PLD http://www.pld.org.pl, które jest podstawową platformą rozwojową dla poldka, tag "Obsoletes" jest używany w dwóch różnych znaczeniach: pierwsze oznacza A unieważnia B, drugie zaś A jest równoważne B. Oczywiście jest niemożliwe, aby je rozróżnić i użyć podczas aktualizacji systemu (w Red Hat Linux użyte jest jedynie pierwsze znaczenie, więc instalator Red Hata używa tego taga).

  Aktualizacja więcej niż jednej instancji pakietu
rpm nie obsługuje takiego przypadku, więc poldek także.

  Przetwarzanie zależności
Na tyle na ile przetestowałem poldka, zupełnie rozwiązuje on zależności pakietów (nie konflikty plików) podczas instalacji i uaktualnienia. Proszę powiadomić mnie, jeśli zauważysz, że rpm zgłasza niespełnione zależności, podczas gdy poldek nie.

  Dokumentacja
Ten manual powinien być ukończony i przetłumaczony na język angielski.

UWAGA
Program ten z pewnością zawiera błędy. Zrób kopię bezpieczeństwa swojej bazy danych RPM-a i bądź uważny. Pamiętaj, że NIE MA ŻADNEJ GWARANCJI i udanej zabawy.

LICENCJA
Program ten jest rozprowadzany na zasadach licencji GNU General Public License, wersja 2.

AUTORZY
Pawel A. Gajda <mis@pld.org.pl>

Autorem tego tłumaczenia jest GoTaR <gotar@pld.org.pl>

KONTAKT

  Strona domowa: http://team.pld.org.pl/~mis/poldek/

  Lista mailingowa poldek@pld-linux.org
Proszę przesyłać komentarze, raporty o błędach itp. do autora bądź na listę mailingową.

PATRZ RÓWNIEŻ
apt(1) apt-get(8), curl(1), rpm(1), rsync(1), snarf(1), wget(1)