.\" dpkg manual page - dpkg-maintscript-helper(1) .\" .\" Copyright Š 2010-2012 RaphaĂŤl Hertzog .\" .\" This is free software; you can redistribute it and/or modify .\" it under the terms of the GNU General Public License as published by .\" the Free Software Foundation; either version 2 of the License, or .\" (at your option) any later version. .\" .\" This is distributed in the hope that it will be useful, .\" but WITHOUT ANY WARRANTY; without even the implied warranty of .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the .\" GNU General Public License for more details. .\" .\" You should have received a copy of the GNU General Public License .\" along with this program. If not, see . . .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH dpkg\-maintscript\-helper 1 2012\-05\-04 "Projekt Debian" "użytki dpkg" .SH NAZWA dpkg\-maintscript\-helper \- obchodzi znane ograniczenia dpkg w skryptach opiekuna . .SH SKŁADNIA \fBdpkg\-maintscript\-helper\fP \fIpolecenie\fP [\fIparametr\fP...] \fB\-\-\fP \fIparametr\-skryptu\-opiekuna\fP... . .SH "POLECENIA I PARAMETRY" .P \fBrm_conffile\fP \fIplik\-konf\fP [\fIuprzednia\-wersja\fP [\fIpakiet\fP]] .P \fBmv_conffile\fP \fIstary\-plik\-konf\fP \fInowy\-plik\-konf\fP [\fIuprzednia\-wersja\fP [\fIpakiet\fP]] . .SH OPIS .P Program jest przeznaczony do wykonywania wewnątrz skryptów opiekuna, aby wykonać pewne zadania, których dpkg nie potrafi (jeszcze) obsłużyć w sposób natywny albo ze względu na decyzje projektowe, albo z powodu obecnych ograniczeń. .P Wiele z tych zadań wymaga skoordynowanych działań z kilku skryptów opiekuna (\fBpreinst\fP, \fBpostinst\fP, \fBprerm\fP, \fBpostrm\fP). Aby uniknąć pomyłek, to samo wywołanie musi być umieszczone we wszystkich skryptach, a program automatycznie adaptuje swe zachowanie w oparciu o zmienną środowiskową \fBDPKG_MAINTSCRIPT_NAME\fP i argumenty skryptów opiekuna jakie przekazano mu po podwójnym myślniku. . .SH "ZADANIA ZWIĄZANE Z PLIKAMI CONFILE" .P Podczas aktualizacji pakietu, dpkg nie usuwa automatycznie plików conffile (pliku konfiguracyjnego, dla którego dpkg powinien zachowywać zmiany dokonane przez użytkownika. Wynika to z dwóch głównych powodów, po pierwsze conffile mógł być usunięty przez przypadek, a gdy następna wersja przywróci go, użytkownicy nie chcą usunięcia swoich zmian. Drugim jest umożliwienie pakietom na przejście z plików conffile zarządzanych przez dpkg na pliki zarządzane przez skrypty opiekuna pakietu, zwykle za pomocą narzędzia takiego jak debconf lub ucf. .P Oznacza to, że gdy pakiet ma zamiar zmienić nazwę lub usunąć conffile, musi wykonać to jawnie, a \fBdpkg\-maintscript\-helper\fP może zostać wykorzystany do płynnego usunięcia i przeniesienia plików conffile w skryptach opiekuna. . .SS "USUWANIE PLIKU CONFFILE" .P Jeśli plik conffile jest całkowicie usuwany, powinien być usunięty z dysku, chyba że użytkownik go zmodyfikował. Jeśli istnieją lokalne modyfikacje, powinny pozostać zachowane. Jeśli aktualizacja pakietu zostanie przerwana, nowo zdezaktualizowany plik conffile nie powinien zniknąć. .P Wszystko to jest zaimplementowane za pomocą następującego fragmentu skryptu w skryptach opiekuna: \fBpreinst\fP, \fBpostinst\fP i \fBpostrm\fP: .P dpkg\-maintscript\-helper rm_conffile \e \fIconffile\fP \fIuprzednia\-wersja\fP \fIpakiet\fP \-\- "$@" .P \fIconffile\fP jest nazwą pliku conffile do usunięcia. .P \fIuprzednia\-wersja\fP definiuje ostatnią wersją pakietu, której aktualizacja powinna wyzwolić usunięcie. Ważne jest, aby obliczyć \fIuprzednią\-wersję\fP poprawnie, dzięki czemu pliki conffile są poprawnie usunięte nawet, gdy użytkownik przebuduje pakiet z lokalną wersją, np. dla pliku conffile usuniętego w wersji \fB2.0\-1\fP pakietu, \fIuprzednia\-wersja\fP powinna być ustawiona na \fB2.0\-1~\fP. Spowoduje to, że conffile zostanie usunięty nawet, jeśli użytkownik przebuduje poprzednią wersję \fB1.0\-1\fP jako \fB1.0\-1local1\fP. .P Jeśli conffile nie jest już dostarczany dla kilku wersji i modyfikuje się właśnie skrypty opiekuna w celu wyczyszczenia przestarzałego pliku, \fIuprzednia\-wersja\fP powinna być oparta na wersji pakietu, która jest obecnie przygotowywana, a nie na pierwszej wersji pakietu nieposiadającej conffile. .P \fIpakiet\fP jest nazwą pakietu. Jeśli jest pusta lub opuszczona, używana jest zmienna środowiskowa DPKG_MAINTSCRIPT_PACKAGE (jak ustawiana przez dpkg). .P Wszystkie parametry skryptów opiekuna podane za "\-\-" są przekazywane do programu. .P Obecna implementacja: w \fBpreinst\fP sprawdzane jest, czy conffile został zmodyfikowany i zmienia się jego nazwę na \fIconffile\fP\fB.dpkg\-remove\fP (jeśli nie został zmodyfikowany) lub na \fIconffile\fP\fB.dpkg\-backup\fP (jeśli został). W \fBpostinst\fP, drugiemu plikowi zmienia się nazwę na \fIconffile\fP\fB.dpkg\-bak\fP i zachowuje się go do porównania, jako że zawiera on modyfikacje użytkownika, natomiast pierwszego \- usuwa się. Jeśli aktualizacja pakietu zostanie przerwana, \fBpostrm\fP instaluje ponownie oryginalny conffile. Podczas czyszczenia \fBpostrm\fP usuwa również zachowywany dotąd plik \fB.dpkg\-bak\fP. . .SS "ZMIANA NAZWY PLIKU CONFFILE" .P Jeśli conffile jest przenoszony z jednego położenia do innego, konieczne jest upewnienie się, że przenoszone są wszystkie zmiany dokonane przez użytkownika. Może to początkowo wyglądać na prostą zmianę w skrypcie \fBpreinst\fP, lecz spowoduje to zapytanie użytkownika przez dpkg, dotyczące zaakceptowania edycji conffile, nawet jeśli użytkownik nie jest za nią odpowiedzialny. .P Zgrabniejsza zmiana nazwy może być zaimplementowana za pomocą następującego fragmentu skryptu w skryptach opiekuna: \fBpreinst\fP, \fBpostinst\fP i \fBpostrm\fP: .P dpkg\-maintscript\-helper mv_conffile \e \fIstary\-conffile\fP \fInowy\-conffile\fP \fIuprzednia\-wersja\fP \fIpakiet\fP \-\- "$@" .P \fIStary\-conffile\fP i \fInowy\-conffile\fP to stara i nowa nazwa pliku conffile. .P \fIUprzednia\-wersja\fP definiuje ostatnią wersję pakietu, którego aktualizacja powinna wyzwolić zmianę nazwy pliku conffile (patrz uwagi do \fBrm_conffile\fP powyżej, nt. poprawnej wartości). Jeśli \fIuprzednia\-wersja\fP jest pusta lub pominięta, próba tej operacji jest przeprowadzana przy każdym uaktualnieniu (uwaga: bezpieczniej jest podać wersję i spróbować przeprowadzić tę operację jedynie jednokrotnie). .P \fIpakiet\fP jest nazwą pakietu. Jeśli jest pusta lub opuszczona, używana jest zmienna środowiskowa DPKG_MAINTSCRIPT_PACKAGE (jak ustawiana przez dpkg). .P Wszystkie parametry skryptów opiekuna podane za "\-\-" są przekazywane do programu. .P Obecna implementacja: \fBpreinst\fP sprawdza, czy conffile został zmodyfikowany \- jeśli tak, to pozostawia go, w przeciwnym wypadku nazwa jest zmieniana na \fIstary\-conffile\fP\fB.dpkg\-remove\fP. Przy konfiguracji, \fBpostinst\fP usuwa \fIstary\-conffile\fP\fB.dpkg\-remove\fP i zmienia \fIstary\-conffile\fP na \fInowy\-conffile\fP, jeśli \fIstary\-conffile\fP jest wciąż obecny. Przy przerwanej aktualizacji lub instalacji \fBpostrm\fP zmienia \fIstary\-conffile\fP\fB.dpkg\-remove\fP z powrotem na \fIstary\-conffile\fP, jeśli to konieczne. . .SH "INTEGRACJA W PAKIETACH" .P Zakładając, że \fBdpkg\-maintscript\-helper\fP jest używane w \fBpreinst\fP, używanie go bezwarunkowo wymaga zależności wstępnej, upewniającej się, że wymagana wersja dpkg została wcześniej rozpakowana. Wymagana wersja zależy od użytego polecenia, do \fBrm_conffile\fP i \fBmv_conffile\fP jest to 1.15.7.2: .P \fBPre\-Depends:\fP dpkg (>= 1.15.7.2) .P W wielu przypadkach operacja wykonywana przez program nie jest krytyczna dla pakietu i wówczas zamiast używać zależności wstępnej można wywołać program jedynie, jeśli wiemy że żądane polecenie jest obsługiwane przez aktualnie zainstalowany dpkg: .P if dpkg\-maintscript\-helper supports \fIcommand\fP; then dpkg\-maintscript\-helper \fIcommand\fP ... fi .SH "TŁUMACZE" Piotr Roszatycki , 1999 .br Bartosz Feński , 2004-2005 .br Robert Luberda , 2006-2008 .br Wiktor Wandachowicz , 2008 .br Michał Kułach , 2012