1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397
|
<?xml version='1.0' encoding='utf-8'?>
<!-- -*- DocBook -*- -->
<chapter id="customizing"><title>Dostosowanie systemu Debian GNU/Linux do Twoich potrzeb</title>
<section id="papersize"><title>Skąd mogę mieć pewność, że wszystkie programy używają tego samego rozmiaru papieru?</title>
<para>
Zainstaluj pakiet <systemitem role="package">libpaperg</systemitem>. Podczas
instalacji zostaniesz zapytany o domyślny rozmiar papieru, który ma być
używany w całym systemie. Ustawienie to będzie przechowywane w pliku
<literal>/etc/papersize</literal>.
</para>
<para>
Użytkownicy mogą ustalić własny rozmiar papieru używając zmiennej
systemowej <literal>PAPERSIZE</literal>. Więcej informacji uzyskasz na
stronie podręcznika systemowego
<citerefentry><refentrytitle>papersize</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
</para>
</section>
<section id="hardwareaccess"><title>Jak mogę udostępnić urządzenia peryferyjne bez narażania bezpieczeństwa systemu?</title>
<para>
Wiele plików urządzeń w katalogu <literal>/dev/</literal> należy do
pewnych, wcześniej zdefiniowanych, grup. Na przykład
<literal>/dev/fd0</literal> należy do grupy <literal>floppy</literal>, a
<literal>/dev/dsp</literal> należy do grupy <literal>audio</literal>.
</para>
<para>
Jeśli chcesz żeby dany użytkownik miał dostęp do jednego z tych urządzeń
to po prostu dodaj go do grupy, do której należy to urządzenie. Możesz to
zrobić na przykład tak:
</para>
<screen>
adduser użytkownik grupa
</screen>
<para>
W ten sposób nie będziesz musiał zmieniać praw dostępu urządzenia.
</para>
</section>
<section id="consolefont"><title>W jaki sposób załadować czcionkę konsoli podczas startu systemu?</title>
<para>
Pakiety <systemitem role="package">kbd</systemitem> oraz <systemitem
role="package">console-tools</systemitem> pozwalają to osiągnąć. Dostosuj
odpowiednio do swoich potrzeb plik <literal>/etc/kbd/config</literal> lub
<literal>/etc/console-tools/config</literal>.
</para>
</section>
<section id="appdefaults"><title>W jaki sposób skonfigurować domyślne parametry aplikacji dla środowiska X11?</title>
<para>
Programy Debiana pod X'y instalują swoje zasoby do katalogu
<literal>/etc/X11/app-defaults/</literal>. Jeśli chcesz dostosować aplikacje
X'ów globalnie to dokonaj zmiany w tych plikach. Oznaczone są one jako
konfiguracyjne więc ich zawartość pozostanie niezmieniona podczas procesu
aktualizacji.
</para>
</section>
<section id="booting"><title>Wydaje się, że każda dystrybucja posiada inne procedury startu systemu. Jak to wygląda w Debianie?</title>
<para>
Jak wszystkie Uniksy, Debian startuje uruchamiając program
<literal>init</literal>. Plik konfiguracyjny dla <literal>init</literal> (tj.
<literal>/etc/inittab</literal>) określa, że pierwszym wykonywanym skryptem
powinien być <literal>/etc/init.d/rcS</literal>. Skrypt ten uruchamia
wszystkie skrypty z katalogu <literal>/etc/rcS.d/</literal> poprzez
bezpośrednie interpretowanie lub uruchamianie podprocesów interpretujących
(zależnie od rozszerzeń plików) w celu dokonania inicjalizacji, takiej jak:
sprawdzenie oraz zamontowanie systemów plików, załadowanie modułów,
uruchomienie usług sieciowych, ustawienie zegara i innych. W dalszej
kolejności, w celu utrzymania zgodności ze starszymi wersjami, uruchamia
również skrypty (oprócz tych ze znakiem '.' w nazwach) z katalogu
<literal>/etc/rc.boot/</literal>. Wszystkie skrypty w tym katalogu są
zazwyczaj zarezerwowane do użytku administratora systemu. Używanie ich jest
przestarzałą praktyką.
</para>
<para>
Po zakończeniu procedury startu, <literal>init</literal> wykonuje wszystkie
skrypty startowe z katalogu zależnego od domyślnego poziomu startu (domyślny
poziom startu określany jest przez wpis <literal>id</literal> w pliku
<literal>/etc/inittab</literal>). Jak większość Uniksów zgodnych z System
V, Linux ma 7 poziomów startu (runlevels):
</para>
<itemizedlist>
<listitem>
<para>
0 (zatrzymanie systemu),
</para>
</listitem>
<listitem>
<para>
1 (tryb pojedynczego użytkownika),
</para>
</listitem>
<listitem>
<para>
2 do 5 (różne tryby wielodostępowe) i
</para>
</listitem>
<listitem>
<para>
6 (ponowne uruchomienie systemu).
</para>
</listitem>
</itemizedlist>
<para>
Systemy oparte na Debianie posiadają domyślny wpis id=2 co oznacza, że w
momencie wejścia w stan pracy wielodostępowej, domyślnym poziomem startu
będzie '2' oraz, że zostaną uruchomione skrypty z katalogu
<literal>/etc/rc2.d</literal>.
</para>
<para>
Tak naprawdę skrypty, w każdym z katalogów <literal>/etc/rcN.d/</literal>,
są tylko symbolicznymi dowiązaniami do skryptów z
<literal>/etc/init.d</literal>. Jednak <emphasis>nazwy</emphasis> plików, z
katalogów <literal>/etc/rcN.d/</literal>, są tak nadane aby pokazać
<emphasis>sposób</emphasis> w jaki skrypty z <literal>/etc/init.d/</literal>
będą uruchamiane. Przed wejściem do dowolnego poziomu startu wszystkie
skrypty zaczynające się literą 'K' zostaną uruchomione. Te skrypty
usuwają usługi. Następnie wykonane zostaną wszystkie skrypty zaczynające
się literą 'S'. Te skrypty uruchamiają usługi. Dwucyfrowa liczba, która
występuje po 'K' lub 'S' oznacza kolejność, w jakiej uruchamiają się
skrypty. Mniejsza liczba oznacza, że skrypt uruchomi się wcześniej.
</para>
<para>
To podejście działa, ponieważ wszystkie skrypty z
<literal>/etc/init.d/</literal> pobierają jeden z argumentów: `start',
`stop', `reload', `restart' lub `force-reload' i wykonają zadanie określone
przez ten argument. Skrypty te mogą być używane nawet po zakończeniu
rozruchu systemu w celu kontroli różnych procesów.
</para>
<para>
Na przykład, z argumentem `reload', polecenie:
</para>
<screen>
/etc/init.d/sendmail reload
</screen>
<para>
wyśle sygnał demonowi sendmail'a aby ponownie przeczytał i zinterpretował
swój plik konfiguracyjny.
</para>
</section>
<section id="custombootscripts"><title>Wygląda na to że Debian nie używa <literal>rc.local</literal> aby dostosować proces startu systemu. Jakie narzędzia zostały dostarczone do tego celu?</title>
<para>
Przypuśćmy, że system ma uruchomić skrypt <literal>foo</literal> podczas
startu systemu lub podczas przejścia w dany poziom startu (runlevel). W
takiej sytuacji administrator systemu powinien:
</para>
<itemizedlist>
<listitem>
<para>
Umieścić skrypt <literal>foo</literal> w katalogu
<literal>/etc/init.d/</literal>.
</para>
</listitem>
<listitem>
<para>
Uruchomić polecenie Debiana <literal>update-rc.d</literal> z odpowiednimi
parametrami w celu ustanowienia dowiązań pomiędzy (określonymi w linii
poleceń) katalogami rc?.d, a <literal>/etc/init.d/foo</literal>. W tym
przypadku '?' jest cyfrą od 0 do 6 i oznacza odpowiedni poziom startu Systemu
V.
</para>
</listitem>
<listitem>
<para>
Ponownie uruchomić system.
</para>
</listitem>
</itemizedlist>
<para>
Polecenie <literal>update-rc.d</literal> ustanowi dowiązania w katalogach
rc?.d ze skryptem w <literal>/etc/init.d</literal>. Każde dowiązanie
składać się będzie, w kolejności: z litery 'S' lub 'K', dwucyfrowej liczby
oraz nazwy skryptu. Skrypty zaczynające się literą 'S' w
<literal>/etc/rcN.d/</literal> zostaną wykonane przy przejściu do poziomu
startu <literal>N</literal>. Skrypty zaczynające się literą 'K' zostaną
wykonane przy wyjściu z poziomu startu <literal>N</literal>.
</para>
<para>
Można, na przykład, sprawić by skrypt <literal>foo</literal> wykonał się
podczas startu systemu poprzez umieszczenie go w katalogu
<literal>/etc/init.d/</literal> oraz utworzenie dowiązań przy pomocy
polecenia <literal>update-rc.d foo defaults 19</literal>. Parametr 'defaults'
oznacza domyślne poziomy startu tzn. od 2 do 5. Parametr '19' daje
pewność, że <literal>foo</literal> zostanie uruchomiony wcześniej niż
skrypty o numerach 20 i wyższych.
</para>
</section>
<section id="interconffiles"><title>Jak system zarządzania pakietami radzi sobie z pakietami, zawierającymi pliki konfiguracyjne innych pakietów?</title>
<para>
Niektórzy użytkownicy chcieliby, na przykład, stworzyć nowy serwer
instalując grupę pakietów Debiana i lokalnie wygenerowane pakiety
zawierające pliki konfiguracyjne. Zazwyczaj nie jest to dobry pomysł
ponieważ program <command>dpkg</command> nie będzie wiedział o istnieniu
plików konfiguracyjnych jeśli znajdują się one w innych pakietach. Może
to doprowadzić do nadpisania konfliktowych plików gdy jeden z pakietów
oryginalnej ,,grupy'' zostanie uaktualniony.
</para>
<para>
Zamiast tego utwórz lokalny pakiet, który modyfikuje pliki konfiguracyjne
,,grupy'' pakietów Debiana, które Cię interesują. Wtedy
<command>dpkg</command> i reszta systemu zarządzania pakietami będzie
wiedział, że pliki zostały zmodyfikowane przez lokalnego administratora i
nie będzie próbował ich nadpisać w czasie aktualizacji.
</para>
</section>
<section id="divert"><title>Jak mogę nadpisać plik instalowany przez inny pakiet tak żeby używana była moja wersja?</title>
<para>
Powiedzmy, że administrator lub lokalny użytkownik woli używać programu
,,login-local'' niż ,,login'', który dostarczany jest przez pakiet Debiana o
nazwie <systemitem role="package">login</systemitem> .
</para>
<para>
Nie należy:
</para>
<itemizedlist>
<listitem>
<para>
Nadpisywać pliku <literal>/bin/login</literal> plikiem
<literal>login-local</literal>.
</para>
</listitem>
</itemizedlist>
<para>
System zarządzania pakietami nie będzie wiedział o tej zmianie i po prostu
nadpisze Twój plik <literal>/bin/login</literal> jeśli
<literal>login</literal> (lub każdy inny pakiet dostarczający plik
<literal>/bin/login</literal>) zostanie zainstalowany lub uaktualniony.
</para>
<para>
Zrób raczej tak:
</para>
<itemizedlist>
<listitem>
<para>
Wykonaj:
</para>
<screen>
dpkg-divert --divert /bin/login.debian /bin/login
</screen>
<para>
aby każde przyszłe instalacje pakietu <systemitem
role="package">login</systemitem> zamiast zapisywać plik
<literal>/bin/login</literal> zapisywały go jako
<literal>/bin/login.debian</literal>
</para>
</listitem>
<listitem>
<para>
Następnie wykonaj:
</para>
<screen>
cp login-local /bin/login
</screen>
<para>
aby przenieść Twój lokalnie zbudowany program na właściwe miejsce.
</para>
</listitem>
</itemizedlist>
<para>
Więcej informacji znajdziesz w
<citerefentry><refentrytitle>dpkg-divert</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
</para>
</section>
<section id="localpackages"><title>W jaki sposób dodać do listy dostępnych pakietów moje lokalnie zbudowane pakiety tak, aby system zarządzania pakietami o nich wiedział?</title>
<para>
Wykonaj polecenie:
</para>
<screen>
dpkg-scanpackages BIN_KAT PLIK_NADP [PRZEDR_SCIEZKI] > moje_Pakiety
</screen>
<para>
gdzie:
</para>
<itemizedlist>
<listitem>
<para>
BIN_KAT jest katalogiem gdzie przechowywane są pliki archiwów Debiana (zwykle
mają rozszerzenia ,,.deb'').
</para>
</listitem>
<listitem>
<para>
PLIK_NADP (ang. override file) jest plikiem, który modyfikowany jest przez
opiekunów wydania i, dla pakietów z dystrybucji main, zwykle znajduje się w
archiwum FTP Debiana jako <literal>indices/override.main.gz</literal>. Możesz
zignorować ten plik dla lokalnych pakietów.
</para>
</listitem>
<listitem>
<para>
PRZEDR_SCIEZKI jest <emphasis>opcjonalnym</emphasis> parametrem, którego
wartość może zostać dołączona do nazwy tworzonego pliku
<literal>moje_Pakiety</literal>.
</para>
</listitem>
</itemizedlist>
<para>
Kiedy już plik <literal>moje_Pakiety</literal> zostanie utworzony powiadom o
tym system zarządzania pakietami wykonując polecenie:
</para>
<screen>
dpkg --merge-avail moje_Pakiety
</screen>
<para>
Jeśli używasz APT to możesz również dodać lokalne repozytorium do swojego
pliku
<citerefentry><refentrytitle>sources.list</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
</para>
</section>
<section id="diverse"><title>Niektórzy użytkownicy lubią mawk, inni gawk; jedni lubią vim'a, inni lubią elvis'a; niektórzy lubią trn, inni lubią tin. Jak Debian wspiera taką różnorodność upodobań?</title>
<para>
Istnieje wiele przypadków kiedy dwa pakiety dostarczają dwie różne wersje
programu o takiej samej funkcjonalności. Użytkownicy mogą preferować jeden
z nich bardziej od drugiego z przyzwyczajenia, lub z powodu interfejsu
użytkownika, który dla danego pakietu jest, w jakiś sposób, bardziej
przyjazny niż interfejs drugiego. Różni użytkownicy w tym samym systemie
mogą dokonać różnych wyborów.
</para>
<para>
Debian używa systemu pakietów ,,wirtualnych'' aby pozwolić administratorom
systemu na wybór (lub pozwolić wybrać użytkownikom) ulubione narzędzia,
gdy istnieją dwie lub więcej wersji z taką samą podstawową
funkcjonalnością, która zaspokoi wymagania zależności bez podawania nazwy
konkretnego pakietu.
</para>
<para>
Na przykład: w systemie zainstalowane są dwie różne wersje czytników grup
dyskusyjnych. Serwer grup dyskusyjnych może 'zalecać' aby w systemie był
zainstalowany <emphasis>jakiś</emphasis> czytnik grup dyskusyjnych ale wybór
<literal>tin</literal>'a lub <literal>trn</literal>'a pozostawiony zostaje
użytkownikowi. Działa to w ten sposób, że oba pakiety <systemitem
role="package">tin</systemitem> oraz <systemitem
role="package">trn</systemitem> dostarczają wirtualny pakiet <systemitem
role="package">news-reader</systemitem>. <emphasis>Który</emphasis> program
zostanie wywołany zależy od dowiązania pliku z nazwą wirtualnego pakietu
<literal>/etc/alternatives/news-reader</literal> do wybranego pliku czytnika
np. <literal>/usr/bin/trn</literal>.
</para>
<para>
Pojedyncze dowiązanie nie wystarcza aby wspierać pełne użycie
alternatywnych programów. Strony pomocy i prawdopodobnie inne, powiązane z
programem, pliki muszą także zostać wybrane. Skrypt Perl'a
<literal>update-alternatives</literal> dostarcza sposobu, który zapewnia, że
wszystkie pliki powiązane z danym pakietem zostaną wybrane jako domyślne dla
systemu.
</para>
<para>
Na przykład, aby sprawdzić jakie pliki wykonywalne dostarcza
'x-window-manager' uruchom:
</para>
<screen>
update-alternatives --display x-window-manager
</screen>
<para>
Jeśli chcesz to zmienić uruchom:
</para>
<screen>
update-alternatives --config x-window-manager
</screen>
<para>
i wykonaj instrukcje, które pojawią się na ekranie (po prostu naciśnij
klawisz z cyfrą, która znajduje się przy programie, który bardziej lubisz).
</para>
<para>
Jeśli z jakiegoś powodu pakiet nie zarejestruje się jako menedżer okien
(wyślij informacje o błędzie jeśli uznasz to za usterkę) lub jeśli
używasz menedżera okien z katalogu /usr/local (taki wybór nie pojawi się na
ekranie), możesz uaktualnić dowiązania poprzez parametry wywołania tak jak
na przykładzie poniżej:
</para>
<screen>
update-alternatives --install /usr/bin/x-window-manager \
x-window-manager /usr/local/bin/wmaker-cvs 50
</screen>
<para>
Pierwszy parametr za `--install' jest dowiązaniem symbolicznym, które
wskazuje na /etc/alternatives/NAZWA, gdzie NAZWA jest drugim parametrem.
Trzeci parametr to program, do którego /etc/alternatives/NAZWA powinien
zostać dowiązany, a czwarty jest priorytetem (większe wartości wskazują,
że ta alternatywa, przy działaniu automatycznym, będzie wybrana z większym
prawdopodobieństwem).
</para>
<para>
Aby usunąć alternatywny wpis, który dodałeś uruchom po prostu:
</para>
<screen>
update-alternatives --remove x-window-manager /usr/local/bin/wmaker-cvs
</screen>
</section>
</chapter>
|