[ powrót ] [ Spis treści ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ dalej ]
This chapter is based on older version of English original text. Please check the English version too.
By zmniejszyć obciążenie sieci na serwerach archiwów Debiana, upewnij się, że
skonfigurowałeś lokalnego pośrednika HTTP (np. squid
) dla
pakietów ściąganych przez APT oraz, jeśli jest taka potrzeba, zmienną
środowiskową http_proxy lub ustaw wartość http w
pliku /etc/apt/apt.conf
. To znacząco zwiększy wydajność
uaktualnień przez sieć, szczególnie wtedy, gdy posiadasz wiele komputerów z
Debianem w sieci lokalnej.
Pomimo tego, że możliwości przyszpilania w apt_preferences(5)
są
wręcz nieograniczone, nie rozwiązuje ono wszystkich problemów z zależnościami,
ponieważ zazwyczaj wymagają one najnowszych wersji innych, podstawowych
programów.
Użycie metody opisanej w chroot
, Rozdział 8.6.34 jest
pożądane do równoczesnego zabezpieczenia zarówno stabilności systemu jak i
dostępu do najnowszych wersji oprogramowania.
Informacje opisane w tym rozdziale dotyczą systemu Woody, ale wiele z nich
tyczy się również systemu Potato (z wyjątkiem apt_preferences(5)
i
tematów związanych z /etc/apt/preferences
).
Jeśli czytanie dokumentacji dla deweloperów jest dla ciebie zbyt ciężkim zajęciem, przeczytaj poniższy rozdział i zacznij się cieszyć prawdziwą mocą Debiana w wersji testing/unstable :-).
dselect – narzędzie do zarządzania pakietami z menu dpkg – instaluje pakiet (z pliku) apt-get – instaluje pakiet (z archiwum, CLI APT) tasksel – instaluje zadania (zestawy pakietów) aptitude – instaluje pakiet (pakiet i zadanie, ncurses APT) deity – alternatywny interfejs ncurses dla APT synaptic, gsynaptic – alternatywne graficzne interfejsy dla APT
Powyższe narzędzia nie działają na tym samym poziomie. dselect
działa nad APT (polecenie apt-get
) oraz dpkg
.
APT używa plików /var/lib/lists/*
do śledzenia dostępnych
pakietów, podczas gdy dpkg
używa pliku
/var/lib/dpkg/available
. Jeśli zainstalowałeś pakiety używając
bezpośrednio apt-get
lub podobnego programu (jak np.
aptitude
) upewnij się, że uaktualniłeś plik
/var/lib/dpkg/available
korzystając z opcji [U]pdate
w menu dselect
lub za pomocą polecenia „dselect
update” przed wywołaniem dselect select,
tasksel lub dpkg -l.
Jeśli chodzi o zależności między pakietami, apt-get
automatycznie
ściąga pakiety z jego zależnościami
(depends), ale nie rusza pakietów podanych w polach
recommends (zaleca) i suggests (proponuje),
podczas gdy dselect
pozwala wybierać między zalecanymi lub
proponowanymi pakietami. aptitude
pozwala na automatyczne
ściągnięcie wszystkich pakietów z pól depends,
recommends oraz suggests. Zajrzyj również do
rozdziału Zależności między pakietami,
Rozdział 2.2.8.
apt-cache - przeglądanie lokalnej kopii archiwum pakietów dpkg-reconfigure - ponowna konfiguracja już zainstalowanego pakietu (jeśli korzysta z debconf) dpkg-source - obsługa pakietów źródłowych dpkg-buildpackage - automatyzacja budowania pakietu ...
Możesz instalować zestawy pakietów nazywane zadaniami lub instalować pojedyncze pakiety albo uaktualniać system przy użyciu narzędzi do zarządzania pakietami, które są opisane poniżej. Zajrzyj również na strony Wskazówki dotyczące instalacji Debiana, Część 3, Uaktualnianie dystrybucji do wersji testowej, Część 5 oraz Edytory awaryjne, Rozdział 11.2.
tasksel
lub aptitude
tasksel
to Debian Task Installer (instalator
zadań Debiana), który podczas instalacji systemu jest dostępny jako jedna z
„prostszych” opcji.
Jeśli chcesz zainstalować całe środowisko lub zestaw logicznie ze sobą powiązanych programów, które wymaga wielu pakietów, to ta droga jest jedną z najlepszych. Upewnij się, że wykonujesz polecenia w następujący sposób:
# dselect update # tasksel
aptitude
również daje dostęp do zadań. Pozwala on jednak
nie tylko na ich wybór, ale również na rezygnację z instalacji poszczególnych
pakietów z danego zadania.
Jeśli spróbujesz poniższego opisu na mieszane środowisko, możesz doświadczyć pewnych konfliktów z zależnościami. Dobrym zwyczajem jest nie mieszanie różnych dystrybucji. Poniższy rozdział jest dla ludzi, którzy licząc się z ryzykiem chcą poeksperymentować.
Dla selektywnej aktualizacji podczas trzymania się ciągle dystrybucji
testowej, system APT (>Woody) musi być skonfigurowany jak w Przejście do APT z Woodiego,
Rozdział 5.1, by móc korzystać z opcji apt_preferences(5)
.
Najpierw dodaj źródła dla stable, testing i
unstable do pliku /etc/apt/sources.list
, a następnie
zmodyfikuj plik /etc/apt/preferences
tak, by ustawić poprawne
wartości Pin-Priority. [31]
Package: * Pin: release a=stable Pin-Priority: 500 Package: * Pin: release a=testing Pin-Priority: 600 Package: * Pin: release a=unstable Pin-Priority: 50
dselect
Zaraz po uruchomieniu dselect
automatycznie wybiera pakiety
oznaczone jako wymagane (required), ważne (important) oraz standardowe
(standard). W Potato, niektóre duże objętościowo programy takie jak teTeX czy
Emacs były również wybierane tutaj i najlepiej było je po prostu omijać (przez
ręczne odznaczenie - wpisując `_') przy wstępnej instalacji. W Woodym,
powyższe pakiety zostały przeniesione do kategorii
„Optional”.
dselect
w pewnym sensie posiada dziwny interfejs użytkownika.
Dostępne są cztery dwuznaczne polecenia (wielkość liter ma znaczenie):
Klawisz Działanie Q Wyjście. Potwierdź obecny wybór i wyjdź (zastąp zależności) R Powrót! Nie chciałem tego zrobić. D Cholera! Zwisa mi co o tym myśli dselect. Po prostu wykonaj to! U Ustaw wszystko na stan „sugerowane”
Za pomocą D i Q możesz dokonać konfliktującego wyboru
na własne ryzyko. Używaj tych poleceń z rozwagą. Obecnie dselect
jest dojrzałym narzędziem, które daje Ci całkiem dużą kontrolę nad wyborem
pomiędzy pakietami sugerowanymi a
rekomendowanymi.
Jeśli chcesz zmniejszyć ilość pojawiających się ostrzeżeń i komunikatów, to
dodaj opcję „expert” do pliku
/etc/dpkg/dselect.cfg
. Jeżeli posiadasz powolny komputer, to
możesz uruchamiać dselect
na innej, szybszej maszynie do
wyszukiwania pakietów, a później możesz skorzystać z polecenia apt-get
install, by je zainstalować.
dselect
nie daje dostępu do pakietów, które nie są preferowane
przez Pin-Priority.
aptitude
aptitude
jest nowym programem do instalowania pakietów podobnym do
dselect
. Możesz go używać jako zamiennika polecenia tekstowego
apt-get
. Zobacz też aptitude(1)
.
Wydawanie poleceń aptitude
odbywa się za pośrednictwem
poszczególnych klawiszy.
Klawisz Działanie F10 Menu ? Ściągawka z klawiszologii u Uaktualnij informacje o archiwum pakietów g Ściągnij i zainstaluj wybrane pakiety q Wyjdź z danego ekranu i zapamiętaj zmiany x Wyjdź z danego ekranu i porzuć zmiany Enter Pokaż informacje o pakiecie
aptitude
umożliwia ci automatyczne ściągnięcie wszystkich pakietów
bazując na polach depends, recommends oraz
suggests. Możesz zmienić to zachowanie wybierając z menu
F10 -> Opcje -> Zależności.
aptitude
daje Ci dostęp do wszystkich dostępnych wersji pakietów.
apt-cache
i apt-get
Podczas śledzenia dystrybucji testing jak zostało to opisane w powyższym przykładzie, możemy zarządzać pakietami przy użyciu poniższych poleceń:
apt-get -u upgrade
Uaktualnia wszystkie pakiety w systemie, wybierając zależności z dystrybucji testing.
apt-get -u dist-upgrade
Uaktualnia wszystkie pakiety w systemie, wybierając i rozwiązując zależności z dystrybucji testing.
apt-get -u dselect-upgrade
Uaktualnia wszystkie pakiety w systemie korzystając z wyboru dokonanego przez
dselect
.
apt-get -u install pakiet
Instaluje pakiet wraz z zależnościami z dystrybucji testing.
apt-get -u install pakiet/unstable
Instaluje pakiet z unstable, ale zależności pobiera z testing.
apt-get -u install -t unstable pakiet
Instaluje pakiet z unstable wraz z zależnościami z unstable, poprzez ustawienie Pin-Priority unstable na 990.
apt-cache policy foo bar ...
Sprawdza stan pakietów foo bar ....
apt-cache show foo bar ... | less
Wyświetla informacje o pakietach foo bar ....
apt-get install foo=2.2.4-1
Instaluje wybraną wersję 2.2.4-1 pakietu foo.
apt-get -u install foo bar-
Instaluje pakiet foo i usuwa pakiet bar
apt-get remove bar
Usuwa pakiet bar, ale zachowuje zmienione pliki konfiguracyjne.
apt-get remove --purge bar
Usuwa pakiet bar wraz ze wszystkimi jego plikami konfiguracyjnymi.
W powyższych przykładach opcja -u wymusza, by apt-get
pokazał listę pakietów do aktualizacji i poczekał na dalsze decyzje użytkownika
przez przystąpieniem do dalszych czynności. Poniższe działania ustawiają opcję
-u jako domyślną:
$ cat >> /etc/apt/apt.conf << . // Zawsze pokazuj aktualizowane pakiety (-u) APT::Get::Show-Upgraded "true"; .
Użyj opcji -s, by zasymulować aktualizację.
W zależności od wyboru smaku dystrybucji, możesz zmienić przykładowy plik
/etc/apt/preference
z Konfiguracja systemu
APT, Rozdział 6.2.2 tak, by odpowiadał twoim potrzebom:
śledzenie stable: zmień Pin-Priority testing na 50 śledzenie testing: pozostaw bez zmian śledzenie testing(unstable): zmień Pin-Priority unstable na 500 śledzenie unstable(testing): zmień Pin-Priority unstable na 800
Zasadą przy ustawianiu wartości Pin-Priority powinno być przewijanie wartości z góry na dół tabeli wraz z upływem czasu, od chwili po wydaniu dystrybucji, do czasu zamrażania przed wydaniem kolejnym.
Uwaga: śledzenie dystrybucji testing ma jedną wadę - poprawki bezpieczeństwa pojawiają się dosyć późno.
Jeśli mieszasz dystrybucje Debiana, testing z stable lub unstable ze stable, prawdopodobnie będziesz często nieświadomie pobierać kluczowe pakiety z testing lub unstable, które nie zawsze są najwyższej jakości. Miej to na uwadze.
Przykłady pliku /etc/apt/preferences
, dzięki którym pobierane są
kluczowe pakiety w dojrzałych wersjach, natomiast pakiety dodatkowe mogą być w
wersjach niestabilnych, znajdują się w katalogu z
przykładami
jako pliki preferences.testing
i
preferences.unstable
. Z drugiej strony,
preferences.stable
wymusza, by wszystkie wersje pakietów zostały
zmniejszone do wersji stabilnych.
By zmniejszyć wersję wszystkich pakietów do wydania stable, ustaw
plik /etc/apt/preferences
jak poniżej:
Package: * Pin: release a=stable Pin-Priority: 1001
a następnie uruchom „apt-get upgrade”, które wymusi zmniejszenie wersji z powodu Pin-Priority > 1000. Pamiętaj jednak, że podczas tej operacji mogą wystąpić problemy z zależnościami.
/etc/apt/preferences
W przykładowym pliku /etc/apt/preferences
przedstawionym w Konfiguracja systemu APT, Rozdział 6.2.2, pierwsza
linia, Package: *, oznacza, że ta regułka odnosi się do wszystkich
pakietów. Możesz użyć konkretnej nazwy pakietu zamiast gwiazdki, by ustawić
Pin-Priority dla danego pakietu.
Następna linia, Pin: release a=stable, oznacza, że
apt-get
pobiera plik Packages.gz
z archiwum
zawierającego plik Release
, w którym znajduje się linia
Archive: stable.
Ostatnia linia, Pin-Priority: 500, ustala Pin-Priority na 500.
Jeśli jest wiele pakietów o tej samej nazwie, to instalowany jest ten z najwyższą wartością Pin-Priority.
Poniżej znajdują się oznaczenia Pin-Priority:
1001 i więcej: priorytety zmniejszające wersję pakietu.
Zmniejszanie wersji pakietu jest dozwolone dla tego przedziału Pin-Priority.
100 do 1000: normalne priorytety.
Zmniejszanie wersji pakietu jest niedozwolone. Kilka kluczowych wartości Pin-Priority:
990: priorytet ustawiony przez opcję --target-release lub
-t programu apt-get(8)
.
500: priorytet dla wszystkich domyślnych plików pakietów.
100: priorytet dla obecnie zainstalowanych pakietów.
0 do 99: nieautomatyczne priorytety. (są one używane tylko, jeśli pakiet nie jest zainstalowany i nie ma żadnej dostępnej wersji)
mniej niż 0: wersja nigdy nie zostanie wybrana.
Ten sam efekt działania jak przy --target-release może być
osiągnięty przez ustawienie pliku /etc/apt/apt.conf
jak poniżej:
# echo 'APT::Default-Release "testing";' >> /etc/apt/apt.conf
Opcja lini poleceń --target-release oraz ustawienia w pliku
/etc/apt/apt.conf
zastępują ustawienia pliku
/etc/apt/preferences
. Miej to na uwadze podczas zabawy z plikiem
/etc/apt/preferences
.
Posiadając tę wiedzę, możesz cieszyć się nieśmiertelnymi aktualizacjami :-).
Jeśli masz problemy z konkretnym pakietem, pamiętaj by najpierw sprawdzić
poniższe strony zanim będziesz szukać pomocy lub zgłaszać błąd.
(lynx
, links
oraz w3m
działają tak samo
dobrze):
$ lynx http://bugs.debian.org/ $ lynx http://bugs.debian.org/nazwa pakietu # jeśli znasz nazwę pakietu $ lynx http://bugs.debian.org/numer błędu # jeśli znasz numer błędu
Szukaj z Google (http://www.google.com/) dołączając ciąg „site:debian.org”.
Jeśli masz wątpliwości, to przeczytaj porządny podręcznik. Ustaw zmienną CDPATH jak poniżej:
export CDPATH=.:/usr/local:/usr/share/doc
i wpisz
$ cd nazwa pakietu $ pager README.Debian # jeśli istnieje $ mc
Więcej pomocnych zasobów podanych jest w rozdziale Rozwiązywanie problemów, Część 15.
Podczas aktualizacji w dystrybucji niestabilnej/testowej mogą wystąpić problemy z zależnościami między pakietami tak, jak to zostało opisane w rozdziale Aktualizacja systemu, Rozdział 5.3. W większości przypadków jest to spowodowane tym, że aktualizowany pakiet posiada nowe zależności, które nie są jeszcze spełnione. W takim przypadku, problem możesz rozwiązać używając
# apt-get dist-upgrade
Jeśli to nie działa, powtarzaj jedno z poniższych poleceń dopóki problem sam się nie rozwiąże:
# apt-get upgrade -f # dalej aktualizuj nawet jeśli wystąpiły błędy ... lub # apt-get dist-upgrade -f # dalej aktualizuj całą dystrybucję nawet jeśli wystąpiły błędy
Niektóre naprawdę zepsute skrypty aktualizujące mogą powodować trwałe problemy.
Najlepiej w takim przypadku przyjrzeć się skryptom
/var/lib/dpkg/info/nazwapakietu.{post-,pre-}{install,removal}
dla danego pakietu, a następnie uruchomić:
# dpkg --configure -a # konfiguruje wszystkie częściowo zainstalowane pakiety
Jeśli skrypt mówi o brakującym pliku konfiguracyjnym, poszukaj odpowiedniego
pliku w katalogu /etc
. Jeśli istnieje szukany plik z
rozszerzeniem .new (lub podobnym), zmień nazwę tego pliku (za
pomocą mv
) tak, by usunąć rozszerzenie.
Problemy z zależnościami mogą też występować podczas instalacji w dystrybucji unstable/testing. Są jednak sposoby na obejście zależności.
# apt-get install -f pakiet # pomiń zepsute zależności
Innym sposobem na wyjście z tej sytuacji jest użycie pakietu
equivs
. Zobacz /usr/share/doc/equivs/README.Debian
jak również Pakiet equivs
, Rozdział 6.5.2.
dpkg
Doraźny ratunek zepsutego dselect
(APT) może być przeprowadzony na
całkowicie zepsutym systemie przy użyciu tylko dpkg
bez APT:
# cd /var/cache/apt/archives # dpkg -i libc6* libdb2* perl* # dpkg -i apt* dpkg* debconf* # dpkg -i * # aż nie pojawi się żaden błąd
Jeśli brakuje jakiegoś pakietu, ściągnij go z serwerów lustrzanych
przy
pomocy:
# mc # użyj „FTP link” wskazując serwer FTP Debiana
Od niedawna, właściwe pakiety na serwerach HTTP/FTP mogą nie znajdować się w
katalogu /dist
, ale raczej w nowym /pool
. (Zobacz
też Katalog pool
, Rozdział
2.1.10.)
Ściągnięty plik zainstaluj jak poniżej:
# dpkg -i /var/cache/apt/archives/plikpakietu.deb
W przypadku niespełnionych zależności, napraw je lub użyj poniższych poleceń:
# dpkg --ignore-depends=pakiet1,... -i plikpakietu.deb # dpkg --force-depends -i plikpakietu.deb # dpkg --force-depends --purge pakiet # dpkg --force-confmiss -i plik pakietu.deb # zainstaluj brakujące pliki konfiguracyjne
Jeśli z jakiekogoś powodu plik /var/lib/dpkg/status
zostanie
uszkodzony, Debian straci dane wyboru pakietów i przez to stanie się nie do
końca sprawny. Poszukaj starego pliku /var/lib/dpkg/status
w
/var/lib/dpkg/status-old
lub
/var/backups/dpkg.status.*
.
Umieszczanie /var/backups/
na osobnej partycji jest dobrym
pomysłem, ponieważ katalog ten zawiera wiele ważnych dla systemu danych.
Jeśli stary plik /var/lib/dpkg/status
nie jest dostępny, nadal
możesz przywrócić informacje z katalogów w /usr/share/doc/
.
# ls /usr/share/doc | \ grep -v [A-Z] | \ grep -v '^texmf$' | \ grep -v '^debian$' | \ awk '{print $1 " install"}' | \ dpkg --set-selections # dselect --expert # przeinstaluj system, odznacz, jeśli trzeba
/var
Ponieważ katalog /var
zawiera regularnie uaktualniane dane takie,
jak poczta, jest on podatny na wszelkiego rodzaju uszkodzenia. Oddzielenie
tego katalogu na innej, niezależnej partycji zmniejsza ryzyko wystąpienia
problemów. Jeśli zdarzy się katastrofa, wtedy możesz przebudować katalog
/var
, by przywrócić sprawność systemu.
Najpierw zdobądź szkielet zawartości /var
z minimalnego,
działającego systemu Debian w tej samej lub starszej wersji, np. z
, i
umieść go w katalogu głównym zepsutego systemu. Następnie wykonaj poniżesze
kroki:
var.tar.gz
# cd / # mv var var-old # jeśli jakieś przydatne dane pozostały # tar xvzf var.tar.gz # użyj szkieletu Woody # aptitude # lub dselect
To powinno postawić system na nogi. Możesz przyspieszyć przywracanie wyborów pakietów używając sposobu opisanego w rozdziale Przywracanie danych wyboru pakietów, Rozdział 6.3.4. ([FIXME]: Ta procedura wymaga więcej testów do potwierdzenia poprawności.)
Uruchom Linuksa używając płyty lub dyskietki ratunkowej Debiana lub
alternatywnej partycji w przypadku tzw. multi-bootu. Zobacz Uruchamianie systemu, Rozdział 8.1.
Zamontuj partycję główną niestartującego systemu w /target
i
skorzystaj z dpkg
w trybie instalacji w środowisku chroot.
# dpkg --root /target -i plikpakietu.deb
Następnie skonfiguruj pakiet i popraw wszelkie problemy.
Tak przy okazji - jeśli to lilo
uniemożliwia start systemu, możesz
go uruchomić używając standardowego dysku ratunkowego Debiana. W lini zachęty
programu startującego wpisz (zakładając, że twoją główną partycją jest
/dev/hda12
i chcesz uruchomić system na poziomie startu (runlevel)
3):
boot: rescue root=/dev/hda12 3
W ten sposób wystartujesz prawie w pełni funkcjonalny system z jądrem ładowanym z dyskietki (mogą jednak wystąpić pewne problemy spowodowane brakiem niektórych funkcji jądra lub modułów).
dpkg
nie działa?
Niedziałający dpkg
może uniemożliwić instalację jakiegokolwiek
pliku .deb. Poniższa procedura pomoże Ci naprawić tą sytuację (w
pierwszej linijce zastąp „links” nazwą twojej ulubionej
przeglądarki internetowej):
$ links http://http.us.debian.org/debian/pool/main/d/dpkg/ ... ściągnij dobry plik dpkg_wersja_arch.deb $ su password: ***** # ar x dpkg_version_arch.deb # mv data.tar.gz /data.tar.gz # cd / # tar xzfv data.tar.gz
Dla architektury i386 jako adresu możesz użyć http://packages.debian.org/dpkg.
Te polecenia uchronią człowieka od wiecznego cierpienia w piekle aktualizacji i pozwolą osiągnąć mu stan nirwany. :-)
Aby odnaleźć nazwę pakietu, do którego należy dany plik wpisz:
$ dpkg {-S|--search} wzorzec # szukaj wg. wzorca w zainstalowanych pakietach $ wget http://ftp.us.debian.org/debian/dists/sarge/Contents-i386.gz $ zgrep -e pattern Contents-i386.gz # znajdź wg. wzoru nazwę plików w archiwum Debiana
Możesz też użyć specjalnie do tego celu przeznaczonych narzędzi:
# apt-get install dlocate $ dlocate nazwa_pliku # szybsza wersja dpkg -L oraz dpkg -S ... # apt-get install auto-apt # narzędzie instalujące pakiet na życzenie # auto-apt update # tworzenie pliku bazy dla auto-apt $ auto-apt search wzorzec # szukaj wg. wzorca we wszystkich pakietach
APT pozwala na przeszukiwanie i wyświetlanie informacji pobranych z archiwum
pakietów. Upewnij się, że APT pobiera prawidłowe archiwa (plik
/etc/apt/sources.list
). Jeśli chcesz zobaczyć jaki jest stosunek
pakietów z testing/unstable do tych zainstalowanych,
użyj apt-cache policy.
# apt-get check # aktualizuje cache i sprawdza błędne pakiety $ apt-cache search wzorzec # szuka pakietu wg. podanego wzorca (szuka w opisach) $ apt-cache policy pakiet # informacje o priorytecie i dystrybucji pakietu $ apt-cache show -a pakiet # pokazuje opis pakietu ze wszystkich dystrybucji $ apt-cache showsrc pakiet # pokazuje opis pakietu źródłowego $ apt-cache showpkg pakiet # informacje o pakiecie dla odpluskiwania # dpkg --audit|-C # szuka częściowo zainstalowanych pakietów $ dpkg {-s|--status} pakiet ... # pokazuje opis zainstalowanego pakietu $ dpkg -l pakiet ... # stan zainstalowanego pakietu (po jednej lini na pakiet) $ dpkg -L pakiet ... # pokazuje listę plików zainstalowanych przez pakiet
apt-cache showsrc jest nieudokumentowane w Woodym, ale działa :).
Możesz też znaleźć informacje o pakiecie w (ja używam mc do przeglądania poniższych):
/var/lib/apt/lists/* /var/lib/dpkg/available
Porównanie poniższych plików da Ci informacje o tym, co dokładnie działo się w ciągu ostatnich kilku sesji instalacyjnych.
/var/lib/dpkg/status /var/backups/dpkg.status*
Żeby móc instalować pakiety bez potrzeby pilnowania przebiegu instalacji, dodaj
poniższa linię do pliku /etc/apt/apt.conf
:
Dpkg::Options {"--force-confold";}
Jest to równoważne uruchomieniu apt-get -q -y pakiet.
Korzystaj z tej opcji bardzo ostrożnie, ponieważ sprawia ona, że automatycznie
zostaje wybrana odpowiedź „tak” na każde pytanie, co może
sprawić Ci wiele problemów. Przeczytaj apt.conf(5)
oraz
dpkg(1)
.
Możesz skonfigurować dowolny pakiet później za pomocą techniki opisanej w rozdziale Ponowna konfiguracja zainstalowanych pakietów, Rozdział 6.4.4.
Poniższe polecenia ponownie konfigurują dowolny, już zainstalowany pakiet.
# dpkg-reconfigure --priority=medium pakiet [...] # dpkg-reconfigure --all # przekonfiguruj wszystkie pakiety # dpkg-reconfigure locales # wygeneruj dodatkowe locale # dpkg-reconfigure --p=low xserver-xfree86 # przekonfiguruj serwer X
Przekonfiguruj debconf
, jeśli chcesz zmienić na stałe typ zapytań
debconf
.
Niektóre programy posiadają również własne skrypty konfiguracyjne.
apt-setup - tworzy /etc/apt/sources.list install-mbr - instaluje menedżera Master Boot Record tzconfig - ustawia lokalną strefę czasową gpmconfig - konfiguruje demona myszy gpm eximconfig - konfiguruje Exim (MTA) texconfig - konfiguruje teTeX apacheconfig - konfiguruje Apache (httpd) cvsconfig - konfiguruje CVS sndconfig - konfiguruje system dźwięku ... update-alternatives - ustawia domyślne polecenia, np. vim jako vi update-rc.d - zarządza skryptami startowymi System-V update-menus - system menu Debiana ...
Usunięcie pakietu pozostawiając jego konfigurację:
# apt-get remove pakiet ... # dpkg --remove pakiet ...
Usunięcie pakietu wraz z jego konfiguracją:
# apt-get remove --purge pakiet ... # dpkg --purge pakiet ...
Przykładowe wstrzymanie pakietów libc6
oraz libc6-dev
dla programu dselect
oraz dla apt-get -u upgrade
pakiet odbywa się następująco:
# echo -e "libc6 hold\nlibc6-dev hold" | dpkg --set-selections
Stan "hold" nie powstrzyma polecenia apt-get -u install
pakiet. By wstrzymać pakiet przez wymuszanie automatycznego
zmniejszenia wersji dla poleceń apt-get -u upgrade
pakiet lub apt-get -u dist-upgrade, dodaj
poniższe do pliku /etc/apt/preferences
:
Package: libc6 Pin: release a=stable Pin-Priority: 2000
Tutaj pole Package: nie może przyjmować wpisów takich jak
libc6*. Jeśli musisz trzymać zsynchronizowane wersje wszystkich
pakietów binarnych powiązanych z pakietem źródłowym glibc
musisz
je oddzielnie wypisać.
Poniższe polecenie wyświetli listę pakietów wstrzymanych:
dpkg --get-selections "*"|grep -e "hold$"
apt-show-versions
pokaże Ci listę dostępnych wersji pakietu wg.
dystrybucji, z której pochodzi.
$ apt-show-versions | fgrep /testing | wc ... jak dużo posiadasz pakietów z testing $ apt-show-versions -u ... lista pakietów do uaktualnienia $ apt-get install `apt-show-versions -u -b | fgrep /unstable` ... aktualizacja wszystkich niestabilnych pakietów do ich najnowszych wersji
Instalacja pakietów przy użyciu APT pozostawia pliki pakietów w katalogu
/var/cache/apt/archives
, które muszą być usuwane by zwolnić
miejsce.
# apt-get autoclean # usuwa tylko zbędne pliki pakietów # apt-get clean # usuwa wszystkie przetrzymywane pliki pakietów
Poniższe polecenie tworzy lokalną kopię wyborów pakietów:
# debconf-get-selections > debconfsel.txt # dpkg --get-selections "*" > myselections # lub \* zamiast "*"
"*" sprawia, że w pliku myselections znajdą się również pozycje odnoszące się do pakietów ze stanem „purge”.
Możesz skopiować ten plik na inny komputer i zainstalować go za pomocą poniższych poleceń:
# dselect update # debconf-set-selections < debconfsel.txt # dpkg --set-selections < myselections # apt-get -u dselect-upgrade # lub dselect install
W przypadku częściowych uaktualnień systemu stable, pożądane jest
przebudowywanie pakietów w jego własnym środowisku korzystając z pakietu
źródłowego. Pozwala to uniknąć masowych uaktualnień spowodowanych ich
zależnościami. Przede wszystkim dodaj poniższe linie do pliku
/etc/apt/sources.list
:
deb-src http://http.us.debian.org/debian testing \ main contrib non-free deb-src http://http.us.debian.org/debian unstable \ main contrib non-free
W tym przykładzie każdy wpis deb-src został rozbity na dwie linie
z powodu ograniczonego rozmiaru papieru podczas drukowania. Sam wpis w
sources.list
powinien składać się z jednej lini.
Przyszła kolej na ściągnięcie źródeł i zbudowanie lokalnego pakietu:
$ apt-get update # uaktualnij listę ze źródłami pakietów $ apt-get source pakiet $ dpkg-source -x pakiet.dsc $ cd pakiet-wersja ... przejrzyj wymagane pakiety (Build-depends w pliku .dsc) i również je zainstaluj. Potrzebujesz także pakietu 'fakeroot'. $ dpkg-buildpackage -rfakeroot ...lub (bez sygnatury) $ dpkg-buildpackage -rfakeroot -us -uc # jeśli trzeba, użyj później „debsign” ...Następnie zainstaluj pakiet $ su -c "dpkg -i plikpakietu.deb"
Zazwyczaj należy też zainstalować kilka pakietow z końcówką
„-dev”, by spełnić zależności pakietów.
debsign
znajduje się w pakiecie devscripts
.
auto-apt
może pomóc przy spełnianiu tych zależności. Użycie
fakeroot
pozwala uniknąć niepotrzebnego korzystania z konta roota.
W Woodym, sprawy związane z zależnościami mogą być ułatwione. Przykładowo, by
skompilować występujący tylko w formie źródłowej pakiet pine
:
# apt-get build-dep pine # apt-get source -b pine
Aby utworzyć zgodne z systemem APT i dselect
lokalne archiwum
pakietów, należy utworzyć plik Packages
, a same pliki pakietów
muszą być umieszczone w specjalnym drzewie katalogów.
Lokalne archiwum pakietów deb podobne do oficjalnego archiwum Debiana tworzy się w następujący sposób:
# apt-get install dpkg-dev # cd /usr/local # install -d pool # tutaj umieszczane są pakiety # install -d dists/unstable/main/binary-i386 # ls -1 pool | sed 's/_.*$/ priority section/' | uniq > override # editor override # zmień priority oraz section # dpkg-scanpackages pool override /usr/local/ \ > dists/unstable/main/binary-i386/Packages # cat > dists/unstable/main/Release << EOF Archive: unstable Version: 3.0 Component: main Origin: Local Label: Local Architecture: i386 EOF # echo "deb file:/usr/local unstable main" \ >> /etc/apt/sources.list
Można też użyć szybszego sposobu:
# apt-get install dpkg-dev # mkdir /usr/local/debian # mv /ścieżka/do/pakietu.deb /usr/local/debian # dpkg-scanpackages /usr/local/debian /dev/null | \ gzip - > /usr/local/debian/Packages.gz # echo "deb file:/usr/local/debian ./" >> /etc/apt/sources.list
Zdalny dostęp do utworzonych archiwów jest możliwy za pośrednictwem HTTP lub
FTP. Należy wówczas odpowiednio ustawić wpisy w pliku
/etc/apt/sources.list
.
alien
pozwala na konwersję pakietów binarnych z formatów
rpm Redhata, slp Stampede, tgz Slackware
oraz pkg Solarisa na format pakietu deb Debiana.
Jeśli chcesz użyć pakietu z innej dystrybucji Linuksa, możesz użyć programu
alien
do zmiany go na twój preferowany format i późniejszej
instalacji. alien
obsługuje również pakiety LSB.
debsums
sprawdza poprawność zainstalowanych plików pakietów na
podstawie sum kontrolnych MD5. Niektóre z pakietów nie posiadają sum MD5. W
takim przypadku tymczasowym rozwiązaniem dla administratorów jest:
# cat >>/etc/apt/apt.conf.d/90debsums DPkg::Post-Install-Pkgs {"xargs /usr/bin/debsums -sg";}; ^D
wg. pomysłu Joerga Wendlanda joergland@debian.org
(nieprzetestowane).
sources.list
Wymyślne sposoby optymalizacji pliku sources.list
nie spowodowały
u mnie (w USA), znaczącej poprawy. Ręcznie wybrałem najbliższe serwery przy
użyciu apt-setup
.
apt-spy
automatycznie tworzy sources.list
, kierując
się opóźnieniami i przepustowością. netselect-apt
tworzy bardziej
kompletny sources.list
, ale używa gorszej metody do wybrania
najlepszego serwera lustrzanego (porównanie czasów odpowiedzi na pingi).
# apt-get install apt-spy # cd /etc/apt ; mv sources.list sources.list.org # apt-spy -d testing -l sources.apt
dpkg-divert
Objazdy (diversions) są metodą zmuszenia dpkg
w
zmienionej, w stosunku do domyślnej lokalizacji.
Objazdy mogą być używane przez skrypty pakietu Debiana do
przeniesienia pliku, gdy ten powoduje konflikt. Administrator systemu może też
użyć dywersji do zastąpienia pliku konfiguracyjnego pakietu lub gdy pewne pliki
(nieoznaczone jako conffiles) muszą być zachowane przez
dpkg
, podczas instalacji nowej wersji pakietu je zawierającego
(zobacz Ochrona lokalnych plików
konfiguracyjnych, Rozdział 2.2.4).
# dpkg-divert [--add] filename # dodaj „dywersję” # dpkg-divert --remove filename # usuń „dywersję”
Zazwyczaj nie należy stosować dpkg-divert
, gdy nie jest to
absolutnie potrzebne.
equivs
Jeśli własnoręcznie kompilujesz program, najlepiej jest uczynić go prawdziwym, lokalnym pakietem zdebianizowanym (*.deb). W ostateczności użyj equivs.
Package: equivs Priority: extra Section: admin Description: Circumventing Debian package dependencies This is a dummy package which can be used to create Debian packages, which only contain dependency information.
Użyj programu update-alternatives
, jeśli chcesz, by polecenie
vi
uruchamiało program vim
:
# update-alternatives --display vi ... # update-alternatives --config vi Selection Command ----------------------------------------------- 1 /usr/bin/elvis-tiny 2 /usr/bin/vim *+ 3 /usr/bin/nvi Enter to keep the default[*], or type selection number: 2
Poszczególne pozycje w systemie alternatyw Debiana są trzymane jako dowiązania
symboliczne w katalogu /etc/alternatives
.
Jeśli chcesz ustawić swoje ulubione środowisko graficzne X, użyj
update-alternatives
na /usr/bin/x-session-manager
oraz /usr/bin/x-window-manager
. Szczegóły w Personalizowane sesje X., Rozdział
9.4.5.1.
/bin/sh
jest bezpośrednim dowiązaniem do /bin/bash
lub /bin/dash
. Bezpieczniej jest użyć /bin/bash
, by
zachować kompatybilność ze skryptami skażonymi starą składnią Basha. Lepiej
jednak zdyscyplinować się do używania /bin/dash
, w celu wymuszenia
zgodności z normą POSIX. /bin/dash
. Aktualizacja jądra Linuksa
do wersji 2.4 skłania się do użycia /bin/dash
.
init
i poziomy startu (runlevels)
W pliku /etc/inittab
można ustawić domyślny poziom startu.
W przeciwieństwie do innych dystrybucji, Debian w pełni pozostawia zarządzanie
poziomami startu administratori systemu. Zarządzanie skryptami
init
w stylu System-V w Debianie powinno odbywać się za
pośrednictwem skryptu update-rc.d
.
Poniżej znajduje się przykład polecenia, które tak ustawi skrypty startowe
(skrypty init
), by skrypt
/etc/init.d/nazwa
był uruchamiany na poziomach startu
(runlevel) 1,2,3, a zatrzymywany na poziomach 4 i 5 z priorytetem równym 20
(normalnym).
# update-rc.d nazwa start 20 1 2 3 . stop 20 4 5 .
Usunięcie dowiązań symbolicznych z pozostawieniem skryptu w
init.d
:
# update-rc.d -f nazwa remove
Jeśli chodzi o edycję poziomów startu, nigdy nie używam narzędzi do tego celu.
Poszczególne elementy zmieniam ręcznie za pomocą mv
w lini poleceń
mc
, kopiując dowiązania za pomocą Alt-Enter. Przykład:
# mv S99xdm K99xdm # wyłącz xdm (X display manager)
Również wyłączam demony przez wstawienie exit 0 na początku
skryptu w init.d
. Ot, takie szybkie rozwiązanie. W końcu są to
pliki oznaczone jako conffile.
Bezpieczeństwo systemu jest bardzo ważną rzeczą w Debianie, który zakłada, że administrator jest osobą kompetentną. Dlatego czasami łatwość użycia stoi na drugim miejscu, a wiele usług demonów domyślnie ma ustawiony najwyższy poziom bezpieczeństwa z włączonymi tylko nielicznymi usługami (lub nawet żadnymi).
Uruchom ps aux lub przejrzyj zawartość /etc/init.d/*
oraz /etc/inetd.conf
, jeśli masz jakiekolwiek wątpliwości
(odnośnie Exima, DHCP, ...). Sprawdź również opisany w Ograniczenia dostępu poprzez PAM, Rozdział
9.2.1 plik /etc/hosts.deny
. Pomocne może się też okazać
polecenie pidof
(patrz pidof(8)
).
W ostatnich wersjach Debiana, X11 domyślnie nie zezwala na (zdalne) połączenia
TCP/IP. Patrz też Używanie X'ów poprzez
TCP/IP, Rozdział 9.4.6. Przekazywanie X przez SSH również jest wyłączone.
Patrz Zdalne połączenie z X –
ssh
, Rozdział 9.4.8.
[ powrót ] [ Spis treści ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ dalej ]
Debian Reference
CVS, czwartek, 18 styczeń 2007, 11:53:26 UTCosamu#at#debian.org
fenio@o2.pl