Debian-referenssi ----------------- Osamu Aoki Suomenkielinen käännös: Esko Arajärvi Kohta A.1, `Tekijät' CVS, to 18.1.2007, 11:54:20 UTC ------------------------------------------------------------------------------- Tiivistelmä ----------- Debian-referenssi (http://qref.sourceforge.net/) on tarkoitettu Debian-järjestelmän laajaksi yleiskatsaukseksi ja _asennuksen jälkeiseksi käyttöohjeeksi_. Se antaa esimerkkejä _komentorivikomennoista_ ja käsittelee monia järjestelmäylläpidon puolia. Dokumentti tarjoaa perusohjeita, vinkkejä ja muuta tietoa mm. Debianin perusajatuksista, järjestelmän asentamisesta, Debianin pakettienhallintajärjestelmästä, Linux-ytimestä Debianin alla, järjestelmän virittämisestä, yhdyskäytävien rakentamisesta, tekstieditoreista, CVS:stä, ohjelmoinnista ja GnuPG:stä _muille kuin kehittäjille_. Tekijänoikeuksista ------------------ Copyright (C) 2001--2005 by Osamu Aoki . Copyright (Luku 2) (C) 1996--2001 by Software in the Public Interest. This document may be used under the terms of the GNU General Public License version 2 or higher. (http://www.gnu.org/copyleft/gpl.html) (Tätä dokumenttia saa käyttää GNU GPL -lisenssin version 2 tai uudemman ehtojen mukaisesti. Katso epävirallinen suomennos (http://www.turre.com/licenses/gpl_fi.php).) Permission is granted to make and distribute verbatim copies of this document provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this document under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this document into another language, under the above conditions for modified versions, except that this permission notice may be included in translations approved by the Free Software Foundation instead of in the original English. ------------------------------------------------------------------------------- Sisällys -------- 1. Johdanto 1.1. Virallinen dokumentti 1.2. Dokumentin käytännöt 1.3. Esimerkkiskriptit 1.4. Perusasetukset 1.5. Debian-jakeluiden perusteet 2. Debianin perusteet 2.1. Debian-arkistot 2.1.1. Hakemistorakenteet 2.1.2. Debianin jakeluversiot 2.1.3. `stable'-jakeluversio 2.1.4. `testing'-jakeluversio 2.1.5. `unstable'-jakeluversio 2.1.6. `frozen'-jakeluversio 2.1.7. Debianin jakeluversioiden koodinimet 2.1.8. Aikaisemmin käytetyt koodinimet. 2.1.9. Koodinimien lähde 2.1.10. `pool'-hakemisto 2.1.11. Sid-jakelun historiaa 2.1.12. Palvelimelle ladatut paketit `incoming/'-hakemistossa. 2.1.13. Vanhempien pakettien hakeminen 2.1.14. Laitearkkitehtuuriosiot 2.1.15. Lähdekoodi 2.2. Debianin pakettienhallintajärjestelmä 2.2.1. Debian-pakettien yleiskuvaus 2.2.2. Debian-pakettien formaatti 2.2.3. Debianin pakettitiedostojen nimeämiskäytännöt 2.2.4. Paikallisten asetusten säilyttäminen 2.2.5. Debianin ylläpitoskriptit 2.2.6. Pakettien prioriteetit 2.2.7. Virtuaaliset paketit 2.2.8. Pakettien riippuvuudet 2.2.9. Riippuvuuden "Pre-Depends" ("esi-riippuvuus") merkitys 2.2.10. Paketin tila 2.2.11. Pakettien päivittämisen estäminen 2.2.12. Lähdekoodipaketit 2.2.13. Binääripakettien rakentaminen lähdekoodipaketeista 2.2.14. Uusien Debian-pakettien teko 2.3. Debian-järjestelmän päivittäminen 2.3.1. `dpkg' 2.3.2. APT 2.3.3. `dselect' 2.3.4. Ajossa olevan järjestelmän päivittäminen 2.3.5. Ladatut ja pakettivarastossa olevat `.deb'-tiedostot 2.3.6. Päivitysten kirjanpito 2.4. Debianin käynnistysprosessi 2.4.1. `init'-ohjelma 2.4.2. Järjestelmän ajotasot 2.4.3. Ajotasojen muokkaaminen 2.5. Monimuotoisuuden tukeminen 2.6. Kansainvälistäminen 2.7. Debian ja ydin (kernel) 2.7.1. Ytimen kääntäminen ei-Debian lähdekoodista 2.7.2. Työkaluja muokatun kernelin kääntämiseen 2.7.3. Erityishuomioita modulien käytöstä 2.7.4. Vanhan ydinpaketin poistaminen 3. Debian System installation hints 3.1. General Linux system installation hints 3.1.1. Hardware compatibility basics 3.1.2. Determining a PC's hardware and chip set 3.1.3. Determining a PC's hardware via Debian 3.1.4. Determining a PC's hardware via other OSs 3.1.5. A Lilo myth 3.1.6. GRUB 3.1.7. Choice of boot floppies 3.1.8. Installation 3.1.9. Hosts and IP to use for LAN 3.1.10. User accounts 3.1.11. Creating filesystems 3.1.12. DRAM memory guidelines 3.1.13. Swap space 3.2. Bash configuration 3.3. Mouse configuration 3.3.1. PS/2 mice 3.3.2. USB mice 3.3.3. Touchpad 3.4. NFS configuration 3.5. Samba configuration 3.6. Printer configuration 3.6.1. `lpr'/`lpd' 3.6.2. CUPS(TM) 3.7. CRON for desktop PC 3.8. Other host installation hints 3.8.1. Install a few more packages after initial install 3.8.2. Modules 3.8.3. CD-RW basic setup 3.8.4. Large memory and auto power-off 3.8.5. Strange access problems with some websites 3.8.6. Dialup PPP configuration 3.8.7. Other configuration files to tweak in `/etc/' 4. Debian tutorials 4.1. Getting started 4.1.1. Login to a shell prompt as root 4.1.2. Set up minimal newbie environment 4.1.3. Add a user account 4.1.4. Switch between virtual console 4.1.5. How to shut down 4.1.6. Play time 4.2. Midnight Commander (MC) 4.2.1. Enhance MC 4.2.2. Start MC 4.2.3. File manager in MC 4.2.4. Command-line tricks in MC 4.2.5. Editor in MC 4.2.6. Viewer in MC 4.2.7. Auto-start features of MC 4.2.8. FTP virtual filesystem of MC 4.3. Unix-like work environment 4.3.1. Special key strokes 4.3.2. Basic Unix commands 4.3.3. The command execution 4.3.4. Simple command 4.3.5. Command execution and environment variable 4.3.6. Command search path 4.3.7. Command line options 4.3.8. Shell wildcards 4.3.9. Return value of the command 4.3.10. Typical command sequences 4.3.11. Command alias 4.4. Unix-like text processing 4.4.1. Regular expressions 4.4.2. Replacement expressions 4.5. Unix-like filesystem 4.5.1. Unix file basics 4.5.2. The filesystem concept in Debian 4.5.3. File and directory access permissions 4.5.4. Timestamps 4.5.5. Links 4.5.6. Named pipes (FIFOs) 4.5.7. Sockets 4.5.8. Device files 4.5.9. `/proc' filesystem 4.6. X Window System 4.6.1. Start the X Window System 4.6.2. Menu in the X Window System 4.6.3. Keyboard sequence for the X Window System 4.7. Further study 5. Päivittäminen jakeluun `stable', `testing' tai `unstable' 5.1. Päivittäminen Potatosta Woodyyn 5.2. Päivitykseen valmistautuminen 5.3. Päivittäminen 5.3.1. `dselect'-ohjelman käyttö 5.3.2. Ohjelman `apt-get' käyttäminen 6. Debianin pakettienhallinta 6.1. Esittely 6.1.1. Tärkeimmät pakettienhallintatyökalut 6.1.2. Aputyökalut 6.2. Debianin pakettien hallinnan aloitus 6.2.1. APT:n laittaminen käyttövalmiiksi 6.2.2. Tehtävien asennus 6.2.3. `aptitude' 6.2.4. `dselect' 6.2.5. Jakeluiden seuraaminen APT:lla 6.2.6. Komennot `aptitude', `apt-get' ja `apt-cache' 6.3. Debianin selviytymiskomennot 6.3.1. Tarkista Debianin virheet ja etsi apua 6.3.2. APT upgrade:n vianetsintä 6.3.3. Pelastus käyttäen ohjelmaa `dpkg' 6.3.4. Pakettien valintatietojen palauttaminen 6.3.5. Järjestelmän pelastaminen hakemiston `/var' tuhoutumisen jälkeen 6.3.6. Paketin asentaminen käynnistyskelvottomana järjestelmään 6.3.7. Mitä tehdä, jos `dpkg'-komento on hajalla 6.4. Debianin nirvana-komennot 6.4.1. Tietoa tiedostosta 6.4.2. Tietoa paketista 6.4.3. Valvomaton asennus APT:lla 6.4.4. Asennettujen pakettien asetuksien päivittäminen 6.4.5. Pakettien poistaminen ja siivoaminen 6.4.6. Vanhempien pakettien säilyttäminen 6.4.7. `stable'/`testing'/`unstable'-sekajärjestelmä 6.4.8. Pakettitiedostojen karsiminen välimuistista 6.4.9. Järjestelmäasetusten tallennus/kopiointi 6.4.10. Paketin sovittaminen `stable'-järjestelmään 6.4.11. Paikallinen pakettiarkisto 6.4.12. Vieraiden binääripakettien muuntaminen tai asentaminen 6.4.13. Automaattiasennus-komento 6.4.14. Asennettujen pakettitiedostojen varmennus 6.4.15. `sources.list':n optimointi 6.5. Muita Debianin omituisuuksia 6.5.1. `dpkg-divert' -komento 6.5.2. `equivs'-paketti 6.5.3. Vaihtoehtoiset komennot 6.5.4. Ajotasojen käyttö 6.5.5. Pois päältä kytketyt taustapalvelut 7. The Linux kernel under Debian 7.1. Kernel recompile 7.1.1. Debian standard method 7.1.2. Classic method 7.1.3. Kernel headers 7.2. The modularized 2.4 kernel 7.2.1. PCMCIA 7.2.2. SCSI 7.2.3. Network function 7.2.4. EXT3 filesystem ( > 2.4.17) 7.2.5. Realtek RTL-8139 support in 2.4 7.2.6. Parallel port support 7.3. Tuning the kernel through the proc filesystem 7.3.1. Too many open files 7.3.2. Disk flush intervals 7.3.3. Sluggish old low memory machines 7.4. The 2.6 kernel with udev 8. Debian tips 8.1. Booting the system 8.1.1. "I forgot the root password!" (1) 8.1.2. "I forgot the root password!" (2) 8.1.3. Cannot boot the system 8.1.4. "Let me disable X on boot!" 8.1.5. Other boot tricks with the boot prompt 8.1.6. Setting GRUB boot parameters 8.2. Recording activities 8.2.1. Recording shell activities 8.2.2. Recording X activities 8.3. Copy and archive a whole subdirectory 8.3.1. Basic commands for copying a whole subdirectory 8.3.2. `cp' 8.3.3. `tar' 8.3.4. `pax' 8.3.5. `cpio' 8.3.6. `afio' 8.4. Differential backup and data synchronization 8.4.1. Differential backup with rdiff 8.4.2. Daily backup with `pdumpfs' 8.4.3. Regular differential backup with RCS 8.5. System freeze recovery 8.5.1. Kill a process 8.5.2. Alt-SysRq 8.6. Nifty little commands to remember 8.6.1. Pager 8.6.2. Free memory 8.6.3. Set time (BIOS) 8.6.4. Set time (NTP) 8.6.5. How to control console features such as the screensaver 8.6.6. Search administrative database 8.6.7. Disable sound (beep) 8.6.8. Error messages on the console screen 8.6.9. Set console to the correct type 8.6.10. Get the console back to a sane state 8.6.11. Convert a text file from DOS to Unix style 8.6.12. Convert a text file with `recode' 8.6.13. Regular-expression substitution 8.6.14. Edit a file in place using a script 8.6.15. Extract differences and merge updates for source files 8.6.16. Convert a large file into small files 8.6.17. Extract data from text file table 8.6.18. Script snippets for piping commands 8.6.19. Script snippets for looping over each file 8.6.20. Perl short script madness 8.6.21. Get text or a mailing list archive from a web page 8.6.22. Pretty print a web page 8.6.23. Pretty print a manual page 8.6.24. Merge two PostScript or PDF files 8.6.25. Time a command 8.6.26. `nice' command 8.6.27. Schedule activity (`cron', `at') 8.6.28. Console switching with `screen' 8.6.29. Network testing basics 8.6.30. Flush mail from local spool 8.6.31. Remove frozen mail from local spool 8.6.32. Redeliver `mbox' contents 8.6.33. Clear file contents 8.6.34. Dummy files 8.6.35. `chroot' 8.6.36. How to check hard links 8.6.37. `mount' hard disk image file 8.6.38. Samba 8.6.39. Utilities for foreign filesystems 8.7. Typical mistakes to be noted 8.7.1. `rm -rf .*' 8.7.2. `rm /etc/passwd' 9. Tuning a Debian system 9.1. System initialization 9.1.1. Customizing init scripts 9.1.2. Customizing system logging 9.1.3. Optimizing hardware 9.2. Restricting access 9.2.1. Restricting logins with PAM 9.2.2. "Why GNU `su' does not support the `wheel' group" 9.2.3. Purposes of standard groups 9.2.4. Working more safely -- `sudo' 9.2.5. Restricting access to services 9.2.6. Centralizing authentication -- LDAP 9.3. CD writers 9.3.1. Introduction 9.3.2. Approach 1: modules + `lilo' 9.3.3. Approach 2: recompile the kernel 9.3.4. Post-configuration steps 9.3.5. CD-image file (bootable) 9.3.6. Write to the CD-writer (R, RW): 9.3.7. Make an image file of a CD 9.3.8. Debian CD images 9.3.9. Back up the system to CD-R 9.3.10. Copy a music CD to CD-R 9.3.11. Writing DVD-R, DVD-RW, and DVD+RW 9.4. X 9.4.1. X packages 9.4.2. Hardware detection for X 9.4.3. The X server 9.4.4. X clients 9.4.5. X sessions 9.4.6. Using X over TCP/IP 9.4.7. Connecting to a remote X server -- `xhost' 9.4.8. Connecting to a remote X server -- `ssh' 9.4.9. The X terminal emulator -- `xterm' 9.4.10. X resources 9.4.11. Keymaps and pointer button mappings in X 9.4.12. Getting root in X 9.4.13. TrueType fonts in X 9.4.14. Web browsers in X 9.4.15. Mail Clients (MUAs) in X 9.5. SSH 9.5.1. Basics of SSH 9.5.2. Port forwarding for SMTP/POP3 tunneling 9.5.3. Connecting with fewer passwords -- RSA 9.5.4. Dealing with alien SSH clients 9.5.5. Setting up `ssh-agent' 9.5.6. Troubleshooting SSH 9.6. Mail 9.6.1. Mail transport agents (MTAs) 9.6.2. Fetching mail -- Fetchmail 9.6.3. Processing mail -- Procmail 9.6.4. Processing spam with `crm114' 9.6.5. Reading mail -- Mutt 9.7. Localization (l10n) 9.7.1. Basics of localization 9.7.2. Locales 9.7.3. Introduction to locales 9.7.4. Activating locale support 9.7.5. Activating a particular locale 9.7.6. ISO 8601 date format locale 9.7.7. Example for the US (ISO-8859-1) 9.7.8. Example for France with Euro sign (ISO-8859-15) 9.7.9. Example for a multilingual X window system 9.7.10. Alternative X input methods 9.7.11. X terminal emulators 9.7.12. UTF-8 support for the X terminal emulator 9.7.13. Example for UTF-8 in a framebuffer console 9.7.14. Beyond locales 9.8. Multilingualization (m17n) 10. Network configuration 10.1. Basics of IP networking 10.2. Low level network configuration 10.2.1. Low level network configuration -- `ifconfig' and `route' 10.2.2. Low level network configuration -- `ip' 10.2.3. Configuring a Wi-Fi interface 10.2.4. Configuring a PPP interface 10.3. Naming the computer 10.3.1. Hostname 10.3.2. Mailname 10.4. Domain Name Service (DNS) 10.4.1. The resolver 10.4.2. Managing nameserver information -- `resolvconf' 10.4.3. Caching looked-up names -- `nscd', `dnsmasq', `pdnsd', `bind9' 10.4.4. Providing Domain Name Service -- `bind' 10.5. Configuring network interfaces using DHCP 10.6. High level network configuration in Debian 10.6.1. High level network configuration using `ifupdown' 10.6.2. High level network configuration using `ifupdown' logical interface definitions 10.6.3. Automatic network configuration using `ifupdown' 10.6.4. Automatic network configuration using `laptop-net' 10.6.5. Automatic network configuration using `network-manager' 10.7. Dealing with inconsistent naming of interfaces by the kernel 10.8. Triggering network configuration 10.8.1. Triggering network configuration at boot time 10.8.2. Triggering network configuration -- `hotplug' 10.8.3. Triggering network configuration -- `ifplugd' 10.8.4. Triggering network configuration -- `waproamd' 10.8.5. Network configuration and PCMCIA 10.9. Multi-stage mapping 10.10. Network service configuration 10.11. Network troubleshooting 10.12. Building a gateway router 10.12.1. Netfilter configuration 10.12.2. Manage multiple net connections 11. Editors 11.1. Popular editors 11.2. Rescue editors 11.3. Emacs and Vim 11.3.1. Vim hints 11.3.2. Emacs hints 11.3.3. Starting the editor 11.3.4. Editor command summary (Emacs, Vim) 11.3.5. Vim configuration 11.3.6. Ctags 11.3.7. Convert a syntax-highlighted screen to HTML source 11.3.8. Split screen with `vim' 12. Version Control Systems 12.1. Concurrent Versions System (CVS) 12.1.1. Installing a CVS server 12.1.2. CVS session examples 12.1.3. Troubleshooting CVS 12.1.4. CVS commands 12.2. Subversion 12.2.1. Installing a Subversion server 12.2.2. Moving a CVS repository to Subversion 12.2.3. Subversion usage examples 13. Programming 13.1. Where to start 13.2. Shell 13.2.1. Bash -- _GNU_ standard interactive shell 13.2.2. POSIX shells 13.2.3. Shell parameters 13.2.4. Shell redirection 13.2.5. Shell conditionals 13.2.6. Command-line processing 13.3. Awk 13.4. Perl 13.5. Python 13.6. Make 13.7. C 13.7.1. Simple C program (`gcc') 13.7.2. Debugging 13.7.3. Flex -- a better Lex 13.7.4. Bison -- a better Yacc 13.7.5. Autoconf 13.8. Web 13.9. Document preparation 13.9.1. `roff' typesetting 13.9.2. SGML 13.9.3. TeX/LaTeX 13.9.4. Literate Programming 13.10. Packaging 13.10.1. Packaging a single binary 13.10.2. Packaging with tools 14. GnuPG 14.1. Installing GnuPG 14.2. Using GnuPG 14.3. Managing GnuPG 14.4. Using GnuPG with applications 14.4.1. Using GnuPG with Mutt 14.4.2. Using GnuPG with Vim 15. Support for Debian 15.1. References 15.2. Finding the meaning of a word 15.3. Finding the popularity of a Debian package 15.4. The Debian bug tracking system 15.5. Mailing lists 15.6. Internet Relay Chat (IRC) 15.7. Search engines 15.8. Websites A. Liite A.1. Tekijät A.2. Takuut A.3. Palaute A.4. Dokumentin formaatti A.5. Debian-sokkelo A.6. Debian-lainauksia ------------------------------------------------------------------------------- 1. Johdanto ----------- Tämän Debian-referenssin (http://qref.sourceforge.net/) tarkoituksena on olla laaja yleiskatsaus Debian-järjestelmään ja toimia asennuksen jälkeisenä käyttöohjeena. Dokumentin kohdelukija on valmis lukemaan komentoriviskriptejä. Lukijalla oletetaan myös jo olevan perusosaamista Unixin kaltaisista järjestelmistä. Tätä kirjoitettaessa on tehty tietoinen päätös olla selittämättä kaikkea yksityiskohtaisesti, jos tieto löytyy ohjesivuilta, info-sivuilta tai HOWTO-dokumenteista. Täydellisten selitysten sijaan on pyritty tarjoamaan suoraan sovellettavissa olevaa tietoa antamalla tarkkoja komentosekvenssejä tekstissä ja esimerkkiskriptejä hakemistossa http://www.debian.org/doc/manuals/debian-reference/examples/. Komentojen sisältö tulisi ymmärtää ennen niiden käyttämistä. Komentojen tarkka muoto saattaa hieman vaihdella järjestelmästä toiseen. Suuri osa sisällytetystä tiedosta on muistutuksia ja viittauksia virallisiin referensseihin, jotka on listattu kappaleessa Kohta 15.1, `References'. Tämä dokumentti oli alun perin "pikareferenssi", mutta se kasvoi. Joka tapauksessa johtavia ajatuksia ovat lyhyys ja yksinkertaisuus. Hätäapua järjestelmän ylläpidossa tarjoaa kappale Kohta 6.3, `Debianin selviytymiskomennot'. 1.1. Virallinen dokumentti -------------------------- Viimeisin virallinen versio dokumentista on Debianin arkistoissa paketissa `debian-reference-fi' ja se on myös saatavissa osoitteesta: http://www.debian.org/doc/manuals/debian-reference/. Viimeisin kehitysversio löytyy osoitteesta: http://qref.sourceforge.net/Debian/. Projektin kotisivu on http://qref.sourceforge.net/, jolta tämä dokumentti löytyy seuraavissa formaateissa: tavallinen teksti, HTML, PDF, SGML ja PostScript. 1.2. Dokumentin käytännöt ------------------------- Tämä Debian-referenssi esittää ohjeet lyhyinä `bash'-komentotulkin komentoina. Dokumentissa käytetään seuraavia käytäntöjä: # komento pääkäyttäjän tunnuksella $ komento käyttäjän tunnuksella ... toiminnon kuvaus Näissä komentoriviesimerkeissä `PS2=" "'. Lisätietoja `bash':sta on kappaleessa Kohta 13.2.1, `Bash -- _GNU_ standard interactive shell'. Viitteet * UNIX-tyylisiin _ohjesivuihin_ on esitetty muodossa: bash(1) ja * GNU _TEXINFO-sivuihin_ muodossa: `info libc'. * _Kirjoihin_ muodossa: _The C Programming Language_. * _URL:eihin_ muodossa: http://www.debian.org/doc/manuals/debian-reference/. * järjestelmän _tiedostoihin_ muodossa: `/usr/share/doc/Debian/reference/'. Käytössä on seuraavat lyhenteet: * _LDP_: Linux Documentation Project eli Linux-dokumentointiprojekti (http://www.tldp.org/) * _DDP_: Debian Documentation Project eli Debian-dokumentointiprojekti (http://www.debian.org/doc/) Muut lyhenteet on määritelty tekstissä ennen niiden käyttöä. Tässä dokumentissa LDP-dokumentteihin on annettu vain URL-viitteet. LDP-dokumentit on kuitenkin myös paketoitu Debianille. Kun paketit on asennettu, dokumentit löytyvät hakemistosta `/usr/share/doc/HOWTO/'. Katso Kohta 15.1, `References'. 1.3. Esimerkkiskriptit ---------------------- Dokumentin mukana tulevat esimerkkiskriptit (http://www.debian.org/doc/manuals/debian-reference/examples/) löytyvät hakemistosta `/usr/share/doc/Debian/reference/examples/'. Piilotettujen tiedostojen nimien alussa oleva "." on vaihdettu alaviivaksi "_". Tiedostonimiin on lisätty ylimääräinen pääte, jos tiedostosta on tarjolla useampia vaihtoehtoja. 1.4. Perusasetukset ------------------- Jos järjestelmä on asennettu minimimäärällä paketteja ja tästä dokumentista halutaan ottaa kaikki irti, kannattaa ajaa seuraavat komennot muiden hyödyllistä dokumentaatiota sisältävien pakettien asentamiseksi. # aptitude install mc less ssh vim kernel-package \ manpages-dev doc-debian doc-linux-text \ debian-policy developers-reference maint-guide \ apt-howto harden-doc debian-reference \ libpam-doc glibc-doc samba-doc exim4-doc-html 1.5. Debian-jakeluiden perusteet -------------------------------- Debian ylläpitää kolmea eri jakelua yhtäaikaisesti. Nämä ovat: * `stable' --- Hyödyllisin tuotantopalvelimilla, koska sitä päivitetään vain tietoturvapäivityksillä. Katso Kohta 2.1.3, ``stable'-jakeluversio'. * `testing' --- Suositeltu jakelu työasemille, koska se sisältää työpöytäohjelmien tuoreita, mutta jonkin verran testattuja versioita. Katso Kohta 2.1.4, ``testing'-jakeluversio'. * `unstable' --- Uusinta uutta. Debianin kehittäjien valinta. Katso Kohta 2.1.5, ``unstable'-jakeluversio'. Kun `unstable'-jakelun paketeista ei ensimmäisen noin viikon aikana löydetä julkaisukriittisiä virheitä, ne siirretään automaattisesti `testing'-jakeluun. Debian-jakeluilla on myös koodinimet, jotka on kuvattu kappaleessa Kohta 2.1.7, `Debianin jakeluversioiden koodinimet'. Ennen Sargen julkaisua kesäkuussa 2005, kolme jakelua olivat Woody (stable), Sarge (testing) ja Sid (unstable). Sargen julkaisun jälkeen kolme jakelua olivat vastaavasti Sarge, Etch ja Sid. Kun Etch julkaistaan, `stable' ja `unstable' julkaisut ovat Etch ja Sid. Tällöin luodaan uusi `testing'-jakelu (aluksi se on kopio `stable':sta) ja sille annetaan uusi koodinimi. Jos haluat sähköpostia Debiania koskevista tärkeistä tiedotuksista, liity hiljaiselle sähköpostilistalle `debian-devel-announce@lists.debian.org'. Katso Kohta 2.1, `Debian-arkistot'. Jos haluat käyttää paketeista uudempia versioita kuin niitä, jotka julkaistiin julkaistaessa käyttämääsi jakelua, voit joko päivittää järjestelmäsi uudempaan jakeluun kappaleen Luku 5, `Päivittäminen jakeluun `stable', `testing' tai `unstable'' ohjeiden mukaan tai päivittää vain valitsemasi paketit. Jos pakettia ei saa helposti päivitettyä, saatat haluta rakentaa paketin uudelleen (backport) kappaleen Kohta 6.4.10, `Paketin sovittaminen `stable'-järjestelmään' ohjeiden mukaan. `testing'-jakelun seuraamisen sivuvaikutuksena tietoturvapäivityksiä sisältävien pakettien asennus saattaa viivästyä. Tämä johtuu siitä, että paketit ladataan ensin jakeluun `unstable' ja ne siirtyvät `testing'-jakeluun viiveellä. Jos paketteja käytetään sekaisin eri jakeluista esim. `testing':stä ja `stable':sta tai `unstable':sta ja `stable':sta, päivittyvät peruspaketit kuten `libc6' lähes pakolla jossain vaiheessa `testing'- tai `unstable'-versioihin, jotka saattavat sisältää virheitä. Varoitus on annettu. `testing'- tai `unstable'-jakeluiden käyttäminen lisää vakavien virheiden riskiä. Tätä riskiä voidaan hallita laittamalla tietokoneelle monikäynnistys, jossa toisena vaihtoehtona on vakaampi Debian-jakelu, tai käyttämällä `chroot'-ohjelmaa kappaleessa Kohta 8.6.35, ``chroot'' kuvatulla tavalla. Jälkimmäinen mahdollistaa eri Debian-jakeluiden ajamisen samanaikaisesti eri konsoleissa. Debian-jakeluiden perusteet on selitetty kappaleessa Luku 2, `Debianin perusteet', jonka jälkeen kerrotaan perustietoa uusimpien ohjelmien käytöstä ja `testing'- ja `unstable'-jakeluiden hyödyistä Debianissa. Kärsimättömien kannattaa siirtyä suoraan kappaleeseen Kohta 6.3, `Debianin selviytymiskomennot'. Hauskoja päivityksiä! ------------------------------------------------------------------------------- 2. Debianin perusteet --------------------- Tämä kappale tarjoaa tavallisille käyttäjille perustietoa Debian käyttöjärjestelmästä. Virallista tietoa löydät seuraavista oppaista: * Debian Policy Manual * Debian Developer's Reference * Debian New Maintainers' Guide Nämä on listattu kappaleessa Kohta 15.1, `References'. Jos etsit yleisluontoisempia selityksiä ja esimerkkejä, katso lukua Luku 6, `Debianin pakettienhallinta' tai muita relevantteja lukuja. Tämä luku perustuu "Debian FAQ" -oppaaseen. Debian-ylläpitäjien alkuun pääsemisen helpottamiseksi ohjeiden järjestystä on muutettu huomattavasti 2.1. Debian-arkistot -------------------- 2.1.1. Hakemistorakenteet ------------------------- Debiania varten pakatut ohjelmat ovat saatavissa FTP:llä tai HTTP:llä jokaiselta Debianin peilipalvelimelta (http://www.debian.org/mirror/) jostain hakemistopuusta. Seuraavat hakemistot löytyvät jokaiselta Debianin peilipalvelimelta hakemiston `debian' alta. `dists/': Tässä hakemistossa ovat "jakeluversiot" ja täältä hakeminen oli ennen kanoninen tapa saada tarjolla olevia Debianin julkaisuversioiden paketteja. Joitain vanhoja paketteja sekä tiedostot `Contents-*.gz' ja `Packages.gz' löytyvät vielä täältä. `pool/': Debianin julkaisuversioiden kaikkien pakettien uusi fyysinen sijainti. `tools/': DOS-apuohjelmia käynnistyslevykkeiden tekemiseen, kiintolevyn osiointiin, tiedostojen pakkaamiseen ja purkamiseen sekä Linuxin käynnistämiseen `doc/': Debianin perusdokumentaatio, kuten FAQ (usein kysytyt kysymykset), ohjeet ohjelmavirheiden ilmoittamiseen, jne. `indices/': Tiedosto pakettien ylläpitäjistä ja override-tiedostot. `project/': Lähinnä ohjelmakehittäjille tarkoitettua materiaalia, kuten: `project/experimental/': Tämä hakemisto sisältää paketit ja apuohjelmat, joita kehitetään edelleen ja jotka ovat vielä alfa-testausvaiheessa. Näitä paketteja ei tulisi käyttää, koska ne voivat olla vaarallisia ja haitallisia jopa kokeneimmille käyttäjille. `project/orphaned/': Paketit, jotka niiden ylläpitäjä on hylännyt, ja jotka on poistettu jakelusta. 2.1.2. Debianin jakeluversiot ----------------------------- Normaalisti `dists' hakemistossa on kolme Debianin jakeluversiota. Niiden nimet ovat `stable' (vakaa), `testing' (testattava) ja `unstable' (epävakaa) jakelu. Joskus siellä oli myös `frozen' (jäädytetty) jakeluversio (joka nykyään on vain testing-version tietty kehitysvaihe). Kukin jakeluversio on määritelty symbolisena linkkinä koodinimellä varustettuun hakemistoon `dists'-hakemistossa. 2.1.3. `stable'-jakeluversio ---------------------------- `stable'-jakeluversioon, Debian Sarge (3.1r0), lähetetyt paketit tallennetaan `stable'-hakemistoon (joka on symbolinen linkki hakemistoon `sarge/'). * `stable/main/': Tässä hakemistossa ovat pakettien uusimpaan viralliseen Debian-jakeluun kuuluvat versiot. Nämä paketit ovat kaikki vapaita, mikä tarkoittaa että ne noudattavat Debianin vapaiden ohjelmistojen ohjeistoa (http://www.debian.org/social_contract#guidelines) (DFSG). (Ohjeisto löytyy myös paketin `debian-doc' asentamana hakemistosta `/usr/share/doc/debian/social-contract.txt'.) * `stable/non-free/': Tässä hakemistossa olevat paketit eivät ole vapaita DFSG:n määritelmän mukaan. Joidenkin pakettien lisenssit esimerkiksi kieltävät kaupallisen levityksen. Toisia taas saa levittää eteenpäin, mutta ne ovat maksullisia julkisohjelmia. * `stable/contrib/': Tässä hakemistossa olevat paketit ovat itse vapaita DFSG:n mukaisesti, mutta ovat riippuvaisia jostain paketista, joka _ei_ ole vapaa. Ylläolevien sijaintien lisäksi fyysiset paketit sijaitsevat nykyään hakemistossa `pool' (Kohta 2.1.10, ``pool'-hakemisto'). `stable'-jakelun tämänhetkiset ongelmat raportoidaan verkkosivulla Stablen ongelmat (http://ftp-master.debian.org/testing/stable_probs.html). 2.1.4. `testing'-jakeluversio ----------------------------- `testing'-jakeluversioon, Debian Etch, lähetetyt paketit tallennetaan `testing'-hakemistoon (joka on symbolinen linkki hakemistoon `etch/'), kun niitä on jonkin aikaa testattu `unstable'-jakelussa. Fyysiset paketit sijaitsevat nykyään hakemistossa `pool' (Kohta 2.1.10, ``pool'-hakemisto'). `testing/'-hakemistossa on myös alihakemistot `main', `contrib' ja `non-free', jotka vastaavat `stable/'-jakelun alihakemistoja. Näistä paketeista tulee aina olla sama versio kaikilla laitearkkitehtuureilla, joilla ne on käännetty ja pakettien tulee olla asentuvia. Niissä tulee myös olla vähemmän julkaisukriittisiä virheitä kuin `unstable'-jakelussa olevissa versioissa. Tällä pyritään siihen, että `testing'-jakelu olisi aina lähes valmis julkaisuversiokandidaatti. Lisää tietoa testausmekanismeista on sivulla http://www.debian.org/devel/testing. `testing'-jakelun tilasta kerrotaan seuraavilla sivuilla: * päivitysselitykset (http://ftp-master.debian.org/testing/update_excuses.html) * testausongelmat (http://ftp-master.debian.org/testing/testing_probs.html) * julkaisukriittiset virheet (http://bugs.debian.org/release-critical/) * perusjärjestelmän virheet (http://bugs.qa.debian.org/cgi-bin/base.cgi) * standard- (vakio-) ja task- (tehtävä-) pakettien virheet (http://bugs.qa.debian.org/cgi-bin/standard.cgi) * muut virheet ja virheidenkorjaustalkoiden muistiinpanot (http://bugs.qa.debian.org/) 2.1.5. `unstable'-jakeluversio ------------------------------ `unstable'-jakeluversioon, jonka nimi on aina "Sid", lähetetyt paketit tallennetaan `unstable'-hakemistoon (joka on symbolinen linkki hakemistoon `sid/'), kun ne kopioidaan Debian-arkistoon. Paketit pysyvät hakemistossa kunnes ne siirretään `testing/'-hakemistoon. Fyysiset paketit sijaitsevat nykyään hakemistossa `pool' (Kohta 2.1.10, ``pool'-hakemisto'). `unstable/'-hakemistossa on myös alihakemistot `main', `contrib' ja `non-free', jotka vastaavat `stable/'-jakelun alihakemistoja. `unstable'-jakelu on vedos uusimmasta kehitysversiosta. Käyttäjät ovat tervetulleita testaamaan ja käyttämään näitä paketteja, mutta paketit eivät välttämättä ole kovin valmiita. `unstable'-jakelun käytön etu on se, että käytössäsi on aina Debian-projektin uusin versio; haittapuoli on se, että jos jokin hajoaa, olet omillasi. `unstable'-jakelun virheiden tilaa raportoidaan verkkosivulla Unstablen ongelmat (http://ftp-master.debian.org/testing/unstable_probs.html). 2.1.6. `frozen'-jakeluversio ---------------------------- Kun `testing'-jakelu on tarpeeksi hyvässä kunnosssa, se jäädytetään, mikä tarkoittaa ettei siihen hyväksytä enää uutta koodia, vaan ainoastaan mahdollisia virheiden korjauksia. Tällöin myös luodaan uusi testing-hakemisto `dists'-hakemistoon ja sille annetaan uusi koodinimi. Jäädytettyä jakeluversiota testataan muutaman kuukauden ajan muuttaen ja testaten sitä vuorotellen "testisykleissä". Jäädytetyn jakelun yhteydessä pidetään kirjaa pakettien virheistä, jotka voivat viivästyttää paketin julkaisua tai estää koko jakelun julkaisun. Kun virheiden määrä laskee alle hyväksyttävän enimmäismäärän, jäädytetystä jakelusta tulee uusi `stable', se julkaistaan ja edellinen vakaa jakelu jää käytöstä (ja se siirretään arkistoon). 2.1.7. Debianin jakeluversioiden koodinimet ------------------------------------------- Fyysiset hakemistonimet `dists'-hakemistossa, kuten `sarge/' ja `etch/', ovat vain "koodinimiä". Kun Debianin jakelu on kehitysvaiheessa, sillä ei ole versionumeroa vaan koodinimi. Näiden koodinimien tarkoituksena on tehdä Debianin jakeluiden peilaamisesta helpompaa. (Jos todellisen hakemiston kuten `unstable':n nimi vaihtuisi yhtäkkiä `stable/':ksi, paljon tavaraa tarvitsisi turhaan ladata uudestaan.) Tällä hetkellä `stable/' on symbolinen linkki hakemistoon `sarge/' ja `testing/' on symbolinen linkki hakemistoon `etch/'. Tämä tarkoittaa, että `Sarge' on tämänhetkinen vakaa jakeluversio ja `Etch' on tämänhetkinen testattava jakeluversio. `unstable/' on pysyvä linkki hakemistoon `sid/', koska epävakaa jakeluversio on aina nimeltään Sid. 2.1.8. Aikaisemmin käytetyt koodinimet. --------------------------------------- Seuraavat koodinimet on jo käytetty: "Buzz" versiolle 1.1, "Rex" versiolle 1.2, "Bo" versiolle 1.3.x, "Hamm" versiolle 2.0, "Slink" versiolle 2.1, "Potato" versiolle 2.2, "Woody" versiolle 3.0 ja "Sarge" versiolle 3.1. 2.1.9. Koodinimien lähde ------------------------ Tähän mennessä kaikki koodinimet ovat Pixarin elokuvasta _Toy Story_. * _Buzz_ (Buzz Lightyear) oli avaruusmies, * _Rex_ oli tyrannosaurus, * _Bo_ (Bo Peep) oli lampaista huolehtiva tyttö, * _Hamm_ oli säästöpossu, * _Slink_ (Slinky Dog) oli lelukoira, * _Potato_ oli Mr. Potato Head -nukke, * _Woody_ oli karjapaimen, * _Sarge_ oli vihreiden muovisotilaiden johtaja, * _Etch_ (Etch-a-Sketch) oli piirtolelu, * _Sid_ oli naapurin poika, joka hajotti leluja. 2.1.10. `pool'-hakemisto ------------------------ Aikaisemmin paketit olivat `dists'-hakemiston alihakemistoissa sen mukaan mihin jakeluversioon ne kuuluivat. Tästä aiheutui erinäisiä ongelmia, muun muassa suuria latausmääriä peilipalvelimilla, kun suuria muutoksia tehtiin. Nykyään paketit pidetään suuressa "altaassa", joka on organisoitu lähdekoodipakettien nimien mukaan. Jotta allas olisi hallittavissa, se on jaettu osaston (`main', `contrib' ja `non-free') ja lähdekoodipaketin nimen ensimmäisen kirjaimen mukaan alihakemistoihin. Näissä hakemistoissa on useita tiedostoja: binääripaketit jokaiselle laitearkkitehtuurille ja lähdekoodipaketit, joista binääripaketit on käännetty. Kunkin paketin sijainti löytyy komennon `apt-cache showsrc ' tulosteen riviltä "Directory:". Esimerkiksi `apache'-ohjelman paketit löytyvät hakemistosta `pool/main/a/apache/'. Koska `lib*'-nimisiä paketteja on niin paljon, niitä käsitellään hieman eri tavalla. Esimerkiksi `libpaper'-paketit ovat hakemistossa `pool/main/libp/libpaper/'. Jotkin ohjelmat, kuten `apt', käyttävät `dists'-hakemistoja edelleen tiedostojen indeksoimiseen. Normaalisti käyttäjän ei tarvitse huolehtia näistä, sillä uudempi `apt' -ohjelma ja luultavasti myös vanhempi `dpkg-ftp'-ohjelma hoitavat kaiken automaattisesti. Lisätietoa löytyy dokumentista RFC: implementation of package pools (http://lists.debian.org/debian-devel-announce/2000/debian-devel-announce-200010/msg00007.html). 2.1.11. Sid-jakelun historiaa ----------------------------- Kun nykyistä Sidiä ei ollut, Debianin arkistosivuston organisoinnissa oli yksi suuri ongelma: oletuksena oli, että kun arkkitehtuuri lisättiin sen hetkiseen `unstable/'-hakemistoon, se julkaistaisiin kun kyseisestä jakelusta tulisi uusi `stable'. Monien arkkitehtuurien kohdalla näin ei käynyt ja hakemistoja piti siirtää julkaisun aikaan. Tämä oli epäkäytännöllistä, koska siirto kulutti paljon siirtokapasiteettia. Arkiston ylläpitäjät kiersivät ongelmaa useita vuosia laittamalla julkaisemattomien arkkitehtuurien binääreitä erityiseen hakemistoon nimeltä `sid'. Kun jokin arkkitehtuuri julkaistiin ensimmäisen kerran, sen hetkisestä `stable/'-hakemistosta oli linkki hakemistoon `sid/' ja siitä eteenpäin binäärit luotiin normaalisti `unstable/'-hakemistoon. Tämä malli oli käyttäjille jossain määrin hämmentävä. Siirryttäessä pakettialtaisiin (katso Kohta 2.1.10, ``pool'-hakemisto') Woody-julkaisuversion kehityksen aikaan, binääripaketteja alettiin säilyttää kanonisessa paikassa altaassa riippumatta jakelusta. Tällöin version julkaisu ei enää aiheuta suuria latausmääriä (vaikka kehityksen aikana siirtokapasiteetin kulutus onkin suurempaa). 2.1.12. Palvelimelle ladatut paketit `incoming/'-hakemistossa. -------------------------------------------------------------- Palvelimelle ladatut paketit laitetaan hakemistoon http://incoming.debian.org/, kun on ensin tarkistettu, että ne todella tulevat joltain Debian-kehittäjältä. (Ne laitetaan alihakemistoon `DELAYED', jos lataaja ei ole kyseisen paketin ylläpitäjä (ns. Non-Maintainer Upload eli NMU).) Kerran päivässä paketit siirretään hakemistosta `incoming/' hakemistoon `unstable'. Hätätilanteessa saatat haluta asentaa paketteja hakemistosta `incoming/' jo ennen kuin ne ehtivät hakemistoon `unstable/'. 2.1.13. Vanhempien pakettien hakeminen -------------------------------------- Uusimpia Debian-jakeluita säilytetään `debian'-hakemistossa jokaisella Debian-peilipalvelimella (http://www.debian.org/mirror/), kun taas vanhempien Debian-jakeluiden, esimerkiksi Slinkin, arkistoja säilytetään osoitteessa http://archive.debian.org/ tai hakemistossa `debian-archive' Debianin peilipalvelimilla. Vanhemmat `testing'- ja `unstable'-paketit löytyvät osoitteesta http://snapshot.debian.net/. 2.1.14. Laitearkkitehtuuriosiot ------------------------------- Jokaisen päähakemistopuun (`dists/stable/main', `dists/stable/contrib', `dists/stable/non-free', `dists/unstable/main', jne.) sisällä binääripakettien kuvaukset ovat alihakemistoissa, joiden nimet kertovat laitearkkitehtuurin, jota varten paketit on käännetty. * `binary-all/' paketeille, jotka ovat riippumattomia arkkitehtuurista. Tällaisia ovat esimerkiksi Perl-skriptit ja puhdas dokumentaatio. * `binary-/' paketeille, joita voi suorittaa tietyllä alustalla. Huomaa, että todelliset binääripaketit eivät nykyään enää ole näissä hakemistoissa vaan päätason `pool'-hakemistossa. Indeksitiedostot (`Packages' ja `Packages.gz') on jätetty hakemistoihin taaksepäin yhteensopivuuden takaamiseksi. Lista tuetuista laitearkkitehtuureista löytyy kunkin jakeluversion julkistusmuistiosta (stable (http://www.debian.org/releases/stable/releasenotes), testing (http://www.debian.org/releases/testing/releasenotes)). 2.1.15. Lähdekoodi ------------------ Debian-systeemin kaikkien osien lähdekoodi on sisällytetty järjestelmään. Lisäksi useimpien järjestelmän ohjelmien lisenssi _vaatii_, että niiden lähdekoodia levitetään ohjelman mukana tai että ohjelman mukana kerrotaan kuinka lähdekoodin voi saada. Yleensä lähdekoodeja pidetään joko `source'-hakemistoissa, jotka sijaitsevat kaikkien arkkitehtuurispesifisten binäärihakemistojen rinnalla, tai nykyään `pool'-hakemistossa (Kts. Kohta 2.1.10, ``pool'-hakemisto'). Hakeaksesi paketin lähdekoodin tuntematta Debian-arkiston rakennetta, käytä komentoa `apt-get source '. Jotkin paketit, esimerkiksi `pine', ovat saatavissa ainoastaan lähdekoodipakettina lisenssirajoitusten takia. (Äskettäin Pinen asennusta helpottamaan on luotu paketti `pine-tracker'.) Kappaleissa Kohta 6.4.10, `Paketin sovittaminen `stable'-järjestelmään' ja Kohta 13.10, `Packaging' kerrotaan tavoista kääntää paketti manuaalisesti. Hakemistoissa `contrib' ja `non-free' olevien, muodollisesti Debian-järjestelmään kuulumattomien, pakettien lähdekoodi saattaa olla saatavissa tai sitten ei. 2.2. Debianin pakettienhallintajärjestelmä ------------------------------------------ 2.2.1. Debian-pakettien yleiskuvaus ----------------------------------- Paketit yleensä sisältävät kaikki joidenkin tiettyjen komentojen tai ominaisuuksien toteuttamiseen tarvittavat tiedostot. Debian-paketteja on olemassa kahdenlaisia: * _Binääripaketteja_, jotka sisältävät suoritettavia tiedostoja, asetustiedostoja, man/info-ohjesivuja, tekijänoikeustietoja ja muuta dokumentaatiota. Näitä paketteja levitetään Debianin omassa arkistointiformaatissa (kts. Kohta 2.2.2, `Debian-pakettien formaatti'). Ne tunnistaa yleensä `.deb'-tiedostopäätteestä. Binääripaketit voi purkaa Debian-apuohjelmalla `dpkg', jonka yksityiskohtaisemmat ohjeet löytyvät sen ohjesivulta. * _Lähdekoodipaketteja_, jotka sisältävät lähdekoodipaketin sisällön kuvaavan `.dsc'-tiedoston (kertoo myös seuraavien tiedostojen nimet), tar-formaatissa olevan ja gzip-pakatun, alkuperäisen ja muuttamattoman lähdekooditiedoston `.orig.tar.gz', sekä yleensä `.diff.gz'-tiedoston, joka sisältää alkuperäiseen lähdekoodiin Debiania varten tehdyt muutokset. Apuohjelmalla `dpkg-source' voi pakata ja purkaa Debian-lähdekoodipaketteja. Tarkemmat ohjeet löytyvät ohjelman ohjesivulta. Ohjelmia asennettaessa pakettienhallintajärjestelmä käyttää pakettien ylläpitäjien asettamia "riippuvuuksia". Nämä riippuvuudet kuvataan jokaisen paketin mukana olevassa `control'-tiedostossa. Esimerkiksi GNU C-kääntäjän sisältävä paketti (`gcc') on riippuvainen paketista `binutils', joka sisältää linkittäjän ja kokoajan. Jos käyttäjä yrittää asentaa paketin `gcc' asentamatta ensin pakettia `binutils', pakettienhallintajärjestelmä (dpkg) pysähtyy ja tulostaa virheilmoituksen jossa se kertoo tarvitsevansa myös paketin `binutils'. Käyttäjän on kuitenkin mahdollista ohittaa tämä toiminnallisuus (kts. dpkg(8)). Lisätietoja löytyy alta kappaleesta Kohta 2.2.8, `Pakettien riippuvuudet'. Debianin paketointityökaluja voidaan käyttää * pakettien tai niiden osien hallintaan ja muunteluun, * pakettien osiin jakamiseen, jos on tarve siirtää niitä rajallisen kokoisella tallennusmedialla kuten levykkeillä, * kehittäjien apuna pakettiarkistoa rakennettaessa ja * pakettien asentamiseen etänä Debianin arkistosivustolta. 2.2.2. Debian-pakettien formaatti --------------------------------- Debianin "paketti" eli pakattu tiedosto sisältää tiettyyn ohjelmistoon tai toisiinsa liittyviin ohjelmiin kuuluvia suoritettavia tiedostoja, ohjelmakirjastoja ja dokumentaatiota. Yleensä Debianin pakettien tiedostopääte on `.deb'. [1] Debianin binääripakettien sisällön formaatti on kuvattu ohjesivulla deb(5). Koska pakettien tämä sisäinen formaatti saattaa vaihtua (Debianin julkaisuversioiden välillä), käytä aina ohjelmaa dpkg-deb(1) `.deb'-tiedostojen muuttamiseen. Ainakin Sarge-jakelussa kaikkia Debian-paketteja on voinut käsitellä Unixin peruskomennoilla `ar' ja `tar', vaikka `dpkg'-komennot eivät olisi käytettävissä. [1] `debian-installer'-projektin yhteydessä kehitettiin paketit, joiden tiedostopääte on `.udeb'. Nämä ovat mikro-`.deb' -paketteja, jotka eivät täysin noudata Debianin linjauksia, joista puuttuu mm. dokumentaatio, ja jotka on tarkoitettu ainoastaan `debian-installer'-ohjelman käyttöön. `.deb'- ja `.udeb'-pakettien tiedostomuodot ovat identtiset. `.udeb'-pakettien käsittelyyn käytetty `udpkg'-ohjelma on rajoittuneempi kuin standardi `dpkg' ja se tukee harvempia pakettien riippuvuussuhteita. Tiedostopääte vaihdettiin, koska Debian-arkiston ylläpitäjät eivät halunneet arkistoon `.deb'-päätteisiä paketteja, jotka eivät täyttäneet kaikkia paketeille asetettuja vaatimuksia. Uusi tiedostopääte korostaa eroa ja pienentää mahdollisuutta, että käyttäjät tahattomasti asentaisivat näitä paketteja oikeisiin järjestelmiin. `.udeb'-paketteja käytetään perusasennuksen aikana hyvin rajoitetun Debian-järjestelmän luomiseen. 2.2.3. Debianin pakettitiedostojen nimeämiskäytännöt ---------------------------------------------------- Debian-pakettien tiedostonimet noudattavat seuraavaa käytäntöä: _-_.deb jossa, yleensä, on paketin nimi, on ohjelman versionumero, on Debian-version muutosnumero ja kohdelaitearkkitehtuuri. Pakettien nimiä on tietysti helppo muuttaa. Tiedoston todella sisältämän paketin saat selville komennolla: dpkg --info Debian-version muutosnumeron määrittää Debian-kehittäjä, tai kuka tahansa paketin paketoi. Muutosnumeron muuttaminen yleensä merkitsee, että paketointitapa on jollain tavalla muuttunut. 2.2.4. Paikallisten asetusten säilyttäminen ------------------------------------------- Paikallisen ylläpitäjän muokattaviksi tarkoitettuja tiedostoja säilytetään hakemistossa `/etc/'. Debianin politiikka on, että kaikki paikallisesti muokattavien tiedostojen muutosten tulee säilyä pakettien päivityksessä. Jos paikallisesti muokattavan tiedoston oletusversio toimitetaan paketissa itsessään, tiedosto listataan "asetustiedostona". Pakettienhallintajärjestelmä ei kysymättä ylläpitäjän lupaa päivitä asetustiedostoja, joita ylläpitäjä on edellisen asennuksen jälkeen muokannut. Toisaalta, jos ylläpitäjä ei ole muokannut asetustiedostoa, se päivitetään muun paketin mukana. Lähes aina tämä on toivottavaa ja siksi asetustiedostoihin tehtävät muutokset kannattaa minimoida. Pakettiin kuuluvat asetustiedostot voi listata ajamalla seuraavan komennon. dpkg --status Lista löytyy riviltä: "Conffiles:". Lisätietoja asetustiedostoista löytyy dokumentista Debian Policy Manual kappaleesta "Configuration files". (Kts. Kohta 15.1, `References'). 2.2.5. Debianin ylläpitoskriptit -------------------------------- Debianin ylläpitoskriptit ovat suoritettavia komentotiedostoja, jotka ajetaan automaattisesti ennen tai jälkeen paketin asennuksen. Nämä tiedostot yhdessä `control'-nimisen tiedoston kanssa muodostavat Debian-paketin "hallintaosion" (control section). Ylläpitotiedostoja ovat: preinst Tämä skripti suoritetaan ennen kuin Debian-paketin (`.deb/') purkamista. Monet "preinst"-skriptit pysäyttävät päivitettäviin paketteihin liittyvät ajossa olevat palvelut kunnes asennus tai päivitys on valmis (eli "postint"-skripti on onnistuneesti suoritettu). postinst Tämä skripti tyypillisesti saattaa loppuun kaikki paketin tarvitsemat asetusten määrittelyt sen jälkeen, kun Debian-paketti (`.deb') on purettu. Usein "postinst"-skriptit pyytävät käyttäjältä syötteitä ja varoittavat käyttäjää siitä, että jos tämä hyväksyy oletusasetukset, hänen tulisi muistaa määrittää asetukset myöhemmin tarvittaessa uudelleen. Monet "postinst"-skriptit myös suorittavat tarvittavat komennot pakettiin liittyvien palveluiden käynnistämiseksi asennuksen tai päivityksen jälkeen. prerm Tämä skripti tyypillisesti pysäyttää kaikkien pakettiin liittyvät taustaohjelmat. Skripti suoritetaan ennen pakettiin liittyvien tiedostojen poistamista. postrm Tämä skripti tyypillisesti muokkaa pakettiin liittyviä linkkejä ja muita tiedostoja tai poistaa paketin luomia tiedostoja. (Kts. myös Kohta 2.2.7, `Virtuaaliset paketit'.) Nykyään kaikki hallintatiedostot löytyvät hakemistosta `/var/lib/dpkg/info'. Pakettiin `foo' liittyvien tiedostojen nimi alkaa "foo" ja niiden tiedostopääte on "preinst", "postinst", jne. Samassa hakemistossa oleva tiedosto `foo.list' listaa kaikki paketin `foo' kanssa asennetut tiedostot. (Huomaa, että näiden tiedostojen sijainti on ohjelman `dpkg' määrittelemä ja saattaa muuttua.) 2.2.6. Pakettien prioriteetit ----------------------------- Jokaiselle Debian-paketille annetaan jakelun ylläpitäjien toimesta _prioriteetti_ auttamaan pakettienhallintajärjestelmää. Prioriteetteja ovat: * _Required_-paketit (vaadittavat) tarvitaan, jotta järjestelmä toimii oikein. Tähän sisältyvät kaikki työkalut, joita tarvitaan järjestelmän vikojen korjaamiseen. Näitä paketteja ei tule poistaa tai järjestelmä saattaa hajota niin ettei edes ohjelmaa `dpkg' voida käyttää aiemman tilanteen palauttamiseen. Järjestelmä, jossa on ainoastaan Required-paketit on luultavasti riittämätön useimpiin tarkoituksiin, mutta mahdollistaa ylläpitäjälle järjestelmän käynnistämisen uudelleen ja uusien ohjelmien asentamisen. * _Important_-paketit (tärkeät) tulisi löytyä jokaisesta Unixin kaltaisesta järjestelmästä. Muilla paketeilla, joita ilman järjestelmä ei toimi hyvin tai ole käyttökelpoinen, on tämä prioriteetti. Tämä _ei_ sisällä Emacsia, X11:sta tai TeX:ä tai mitään muuta suurta ohjelmaa. Nämä paketit tarjoavat vain perusrakenteen. * _Standard_-paketit (vakio) ovat tavallisia kaikissa Linux-järjestelmissä ja sisältävät melko pienen, mutta ei liian rajoitetun komentoriviltä käytettävän järjestelmän. Nämä paketit asennetaan oletuksena, jos käyttäjä ei valitse mitään muuta. "Standard" ei sisällä monia suuria ohjelmia, mutta sisältää Emacsin (joka on paremminkin osa systeemin perustaa kuin ohjelma) ja kohtuullisen osajoukon TeX:stä ja LaTeX:stö (jos tämä on mahdollista ilman X:ää). * _Optional_-paketit (valinnaiset) sisältävät kaiken sen, mitä käyttäjä saattaisi haluta asentaa, vaikkei ohjelmia tuntisikaan, jos hänellä ei ole mitään erityisvaatimuksia. Tämä sisältää X11:sta, täyden TeX-jakelun ja paljon ohjelmia. * _Extra_-paketit joko ovat yhteensopimattomia jonkin korkeamman prioriteetin paketin kanssa, ovat tarpeettomia käyttäjille, jotka eivät niitä tunne, tai niillä on erityisvaatimuksia, joiden takia ne eivät saa prioriteettia "Optional". Huomaa erot pakettikuvauksissa seuraavien välillä: "Priority: required", "Section: base" ja "Essential: yes". "Section: base" tarkoittaa, että paketti asennetaan ennen kaikkea muuta uudessa järjestelmässä. Useimmilla "Section: base"-paketeilla on "Priority: required" tai ainakin "Priority: important" ja monet niistä on merkitty tunnisteella "Essential: yes". "Essential: yes" tarkoittaa, että poistettaessa pakettia järjestelmästä pakettienhallintaohjelmalle kuten `dpkg' täytyy antaa ylimääräinen pakotusvalitsin, jotta poisto onnistuu. Esimerkiksi paketeilla `libc6', `mawk' ja `makedev' on "Priority: required" ja "Section: base", mutta ei tunnistetta "Essential: yes". 2.2.7. Virtuaaliset paketit --------------------------- Virtuaalinen paketti on yleinen nimi, jolla tarkoitetaan mitä tahansa yhtä pakettia joukosta paketteja, jotka kaikki tarjoavat saman perustoiminnallisuuden. Esimerkiksi ohjelmat `tin' ja `trn' ovat molemmat tarkoitettu uutisryhmien lukemiseen ja niinpä kumpi tahansa niistä täyttää sellaisen ohjelman tarpeen, joka toimiakseen vaatii, että järjestelmässä on uutisryhmien lukuohjelma. Näin ollen molempien ohjelmien sanotaan tarjoavan virtuaalisen paketin nimeltä `news-reader' (uutislukija). Vastaavasti monet paketit kuten `exim', `exim4', `sendmail' ja `postfix' tarjoavat toiminnallisuuden sähköpostin välitykseen. Niinpä sanotaan, että ne tarjoavat virtuaalisen paketin `mail-transport-agent' (sähköpostin välitysohjelma). Jos mikä tahansa niistä on asennettuna, tämän virtuaalisen paketin olemassaolo riittää ohjelmalle, jolle on määritelty riippuvuus sähköpostin välitysohjelmaan, Jos systeemiin on asennettuna useampia paketteja, jotka tarjoavat saman virtuaalisen paketin, järjestelmän ylläpitäjä voi valita yhden näistä ensisijaisesti käytettäväksi. Valinta tehdään komennolla `update-alternatives', joka on tarkemmin kuvattu kappaleessa Kohta 6.5.3, `Vaihtoehtoiset komennot'. 2.2.8. Pakettien riippuvuudet ----------------------------- Debianin pakettienhallintajärjestelmä käyttää riippuvuusilmoituksia, joilla ilmaistaan, että toimiakseen oikein tai paremmin paketti vaatii, että jokin toinen paketti on asennettuna. * Paketti A _riippuu_ (_Depends_) paketista B, jos B:n tulee ehdottomasti olla asennettuna, jotta A olisi käyttökelpoinen. Joissain tapauksissa A ei ole riippuvainen ainoastaan B:stä, vaan jostain tietystä B:n versiosta. Tällaisessa tapauksessa riippuvuus määritellään yleensä alarajana, joka tarkoittaa, että myös B:n uudemmat versiot kelpaavat. * Paketti A _suosittelee_ (_Recommends_) pakettia B, jos paketin ylläpitäjä arvelee, että suurin osa käyttäjistä ei halua pakettia A ilman jotain paketin B tarjoamaa toiminnallisuutta. * Paketti A _ehdottaa_ (_Suggests_) pakettia B, jos B sisältää pakettiin A liittyviä tiedostoja tai parantaa sen toiminnallisuutta. Sama riippuvuus ilmaistaan ilmoittamalla, että paketti B _parantaa_ (_Enhances_) pakettia A. * Paketti A _törmää_ (_Conflicts_) paketin B kanssa, kun A ei toimi kunnolla, jos B on asennettuna. Tämän riippuvuuden yhteydessä usein määritellään riippuvuus "korvaa". * Paketti A _korvaa_ (_Replaces_) paketin B, kun B:n asentamat tiedostot poistetaan tai korvataan A:n tiedostoilla. * Paketti A _tarjoaa_ (_Provides_) paketin B, kun kaikki B:n toiminnallisuus ja tiedostot sisältyvät A:han. Tarkempia tietoja näiden termien käytöstä löytyy dokumenteista _Packaging Manual_ ja _Policy Manual_. Huomaa, että ohjelmissa `dselect' ja `aptitude' voi tarkemmin määrätä riippuvuuksilla _Recommends_ ja _Suggests_ merkittyjen pakettien asennusta kuin ohjelmassa `apt-get', joka vain asentaa kaikki _Depends_-vaatimuksella merkityt paketit ja jättää _Recommends_- ja _Suggests_-merkityt paketit asentamatta. Molempien ohjelmien uudemmat versiot pohjautuvat APT:iin. 2.2.9. Riippuvuuden "Pre-Depends" ("esi-riippuvuus") merkitys ------------------------------------------------------------- `dpkg' aina määrittää paketin asetukset ennen kuin se määrittää paketista riippuvan toisen paketin asetukset. Normaalisti `dpkg' kuitenkin purkaa paketit satunnaisessa järjestyksessä, johon ei vaikuta pakettien väliset riippuvuudet. (Purkuprosessi koostuu tiedostojen paketista purkamisesta ja niiden siirtämisestä oikeisiin paikkoihin. Kuitenkin, jos paketille on määritetty "Pre-Depends"-riippuvuus jostain toisesta paketista, tämä toinen paketti puretaan ja sen asetukset määritetään ennen kuin siitä riippuva paketti edes puretaan. [1] Tämän riippuvuuden käyttö pyritään minimoimaan. [1] Tämä mekanismi kehitettiin, jotta `a.out'-formaatista ELF-formaattiin päivitettävät järjestelmät saadaan päivitettyä turvallisesti. Tällaisessa päivityksessä pakettien _purkujärjestys_ oli oleellinen. 2.2.10. Paketin tila -------------------- Paketin tila voi olla "unknown" (tuntematon), "install" (asenna), "remove" (poista), "purge" (siivoa) tai "hold" (säilytä). Nämä "liput" kertovat mitä käyttäjä on halunnut paketille tehdä (joko tehdessä valintoja ohjelman `dselect' valintaosiossa tai käyttäen suoraan ohjelmaa `dpkg'). Lippujen merkitykset ovat: * _unknown_ - käyttäjä ei ole koskaan kertonut haluaako hän paketin. * _install_ - käyttäjä haluaa, että paketti on asennettu tai päivitetty. * _remove_ - käyttäjä haluaa, että paketti poistetaan, mutta olemassa olevat asetustiedostot säilytetään. * _purge_ - käyttäjä haluaa, että paketti poistetaan kokonaan, mukaan lukien sen asetustiedostot. * _hold_ - käyttäjä haluaa, että paketin tilaa tai versiota ei muuteta mitenkään. 2.2.11. Pakettien päivittämisen estäminen ----------------------------------------- Pakettien päivittämisen estämiseen on kaksi tapaa ohjelmassa `dpkg', ja Woodystä alkaen ohjelmassa APT. Ohjelmassa `dpkg', tallenna ensin lista valituista paketeista: dpkg --get-selections \* > Sen jälkeen muuta tuloksena olevassa tiedostossa `' säilytettävän paketin, esimerkiksi `libc6', rivi muodosta: libc6 install muotoon: libc6 hold Tallenna tiedosto ja lataa se `dpkg':n tietokantaan komennolla: dpkg --set-selections < Jos tiedät säilytettävän paketin nimen, voit ajaa suoraan komennon: echo libc6 hold | dpkg --set-selections Tämä menetelmä säilyttää paketit kunkin paketin asennusvaiheessa. Saman voin tehdä ohjelmassa `dselect'. Etsi valintaosiossa ([S]elect) paketti, jonka nykyisen tilan haluat säilyttää ja paina näppäintä `=' (tai `H'). Muutokset tulevat voimaan heti, kun poistut valintaikkunasta. Woody:ssä ja sitä uudemmissa jakeluissa oleva APT-järjestelmä tarjoaa uuden vaihtoehtoisen mekanismin pakettien säilyttämiseen päivityksen aikana käyttäen `Pin-Priority'-järjestelmää. Katso ohjesivua apt_preferences(5) ja dokumenttia http://www.debian.org/doc/manuals/apt-howto/ tai pakettia `apt-howto'. 2.2.12. Lähdekoodipaketit ------------------------- Lähdekoodipaketteja levitetään hakemistossa `source', josta voit joko ladata ne manuaalisesti tai käyttää komentoa apt-get source niiden hakemiseen. (Katso ohjesivulta apt-get(8) kuinka tehdä tämä APT:lla.) 2.2.13. Binääripakettien rakentaminen lähdekoodipaketeista ---------------------------------------------------------- Kääntääksesi paketin `' tarvitset kaikki paketit `.dsc', `.tar.gz' ja `.gz'. (Suoraan Debianille tehdyille paketeille ei ole tiedostoa `.diff.gz'.) Kun sinulla on ne kaikki, jos paketti `dpkg-dev' on asennettuna, komento $ dpkg-source -x .dsc purkaa paketin hakemistoon `'. Anna seuraavat komennot paketoidaksesi binääripaketin: $ cd foo-versio $ su -c "apt-get update ; apt-get install fakeroot" $ dpkg-buildpackage -rfakeroot -us -uc Sitten: # su -c "dpkg -i ../.deb" asentaaksesi rakentamasi paketin. Katso Kohta 6.4.10, `Paketin sovittaminen `stable'-järjestelmään'. 2.2.14. Uusien Debian-pakettien teko ------------------------------------ Tarkat ohjeet uusien pakettien tekemisestä löytyvät dokumentista _New Maintainers' Guide_, jonka saat paketista `maint-guide' tai sivulta http://www.debian.org/doc/manuals/maint-guide/. 2.3. Debian-järjestelmän päivittäminen -------------------------------------- Yksi Debianin tavoitteista on tarjota sujuva, turvallinen ja luotettava päivitysprosessi. Pakettienhallintajärjestelmä varoittaa ylläpitäjää tärkeistä muutoksista ja pyytää joskus ylläpitäjää tekemään päätöksiä. Kannattaa myös lukea julkistusmuistio, joka toimitetaan kaikilla Debian-CD:illä ja on luettavissa verkossa sivulla http://www.debian.org/releases/stable/releasenotes tai http://www.debian.org/releases/testing/releasenotes. Käytännönläheinen opas päivittämiseen löytyy kappaleesta Luku 6, `Debianin pakettienhallinta'. Tässä kappaleessa ainoastaan hahmotellaan prosessi, alkaen paketointityökaluista. 2.3.1. `dpkg' ------------- Tämä on pääasiallinen ohjelma pakettitiedostojen käsittelyyn. Ohjesivu dpkg(8) tarjoaa ohjelman täyden kuvauksen. `dpkg' mukana tulee muutamia alkeellisia lisäohjelmia. * `dpkg-deb': `.deb'-tiedostojen käsittelyyn dpkg-deb(1) * `dpkg-ftp': Vanhempi pakettitiedostojen hakukomento dpkg-ftp(1) * `dpkg-mountable': Vanhempi pakettitiedostojen hakukomento dpkg-mountable(1) * `dpkg-split': Jakaa suuren paketin pienempiin osiin. dpkg-split(1) APT-järjestelmä on korvannut ohjelmat `dpkg-ftp' ja `dpkg-mountable'. 2.3.2. APT ---------- APT (the Advanced Packaging Tool eli kehittynyt paketointityökalu) on kehittynyt rajapinta Debianin pakettienhallintajärjestelmään. Se sisältää useampia ohjelmia, joiden nimet tyypillisesti alkavat "apt-". `apt-get', `apt-cache' ja `apt-cdrom' ovat komentorivityökaluja pakettien hallintaan. Ne toimivat myös taustaohjelmina toisille työkaluille kuten `dselect' ja `aptitude'. Nykyään `aptitude' on suositeltu työkalu järjestelmäylläpitoon. Saadaksesi lisätietoa asenna paketit `apt' ja `aptitude' ja lue ohjesivut: aptitude(8), apt-get(8), apt-cache(8), apt-cdrom(8), apt.conf(5), sources.list(5) ja apt_preferences(5). Toinen tietolähde on APT HOWTO (http://www.debian.org/doc/manuals/apt-howto/). Sen saa asennettua paketissa `apt-howto' hakemistoon `/usr/share/doc/Debian/apt-howto/'. `apt-get upgrade' ja `apt-get dist-upgrade' hakevat ainoastaan paketit, joiden riippuvuussuhde on "Depends:" ja jättävät huomioitta riippuvuussuhteet "Recommends:" ja "Suggests:". Välttääksesi tämän käytä ohjelmaa `dselect'. 2.3.3. `dselect' ---------------- Tämä ohjelma on valikkopohjainen käyttöliittymä Debianin pakettienhallintajärjestelmään. Se on erityisen hyödyllinen asennettaessa järjestelmää ensimmäistä kertaa ja tehtäessä suuria päivityksiä. Katso kappaletta Kohta 6.2.4, ``dselect''. Saadaksesi lisätietoa lue dselect Documentation for Beginners (http://www.debian.org/releases/woody/i386/dselect-beginner). 2.3.4. Ajossa olevan järjestelmän päivittäminen ----------------------------------------------- Debian-järjestelmän tiedostojärjestelmä tukee tiedostojen korvaamista toisilla vaikka ne olisivat käytössä. Kun paketti päivitetään, kaikki pakettiin liittyvät taustaprosessit käynnistetään uudelleen, jos ne on asetettu ajettavaksi nykyisellä järjestelmän ajotasolla. Debian ei vaadi siirtymistä yksikäyttäjä-tilaan päivitystä varten. 2.3.5. Ladatut ja pakettivarastossa olevat `.deb'-tiedostot ----------------------------------------------------------- Jos olet manuaalisesti ladannut pakettitiedostoja levyllesi (mikä ei ole välttämätöntä, katso ylläolevaa ohjelmien `dpkg-ftp' ja APT kuvausta), voit asennettuasi paketit poistaa lataamasi `.deb'-tiedostot järjestelmästäsi. Jos käytät ohjelmaa APT, nämä tiedostot tallennetaan hakemistoon `/var/cache/apt/archives'. Voit poistaa ne asennuksen jälkeen (komennolla `apt-get clean') tai kopioida ne toisen tietokoneen `/var/cache/apt/archives'-hakemistoon välttyäksesi lataamasta niitä uudelleen seuraavissa asennuksissa. 2.3.6. Päivitysten kirjanpito ----------------------------- `dpkg' pitää kirjaa paketeista, jotka on purettu, joille on määritetty asetukset ja jotka on poistettu tai siivottu, mutta ei (nykyään) pidä kirjaa näiden toimien lopputuloksista. Helpoin tapa kiertää tämä rajoitus on ajaa ohjelmat `dpkg', `dselect', `apt-get', jne. ohjelman script(1) sisältä. 2.4. Debianin käynnistysprosessi -------------------------------- 2.4.1. `init'-ohjelma --------------------- Kuten kaikki Unixit, Debian käynnistetään suorittamalla ohjelma `init'. `init'-ohjelman asetustiedosto (`/etc/inittab') määrää, että ensimmäisenä suoritetaan skripti `/etc/init.d/rcS'. Seuraavat tapahtumat riippuvat siitä kumpi paketeista `sysv-rc' ja `file-rc' on asennettuna. (Paketti `file-rc' sisältää oman `/etc/init.d/rcS'-skriptinsä ja käyttää tiedostoa rc-hakemistoissa olevien symbolisten linkkien sijaan kontrolloidessaan mitkä ohjelmat käynnistetään milläkin ajotasolla.) Paketin `sysv-rc' `/etc/init.d/rcS'-tiedosto ajaa kaikki hakemiston `/etc/rcS.d/' skriptit alustaakseen järjestelmän. Tällöin mm. liitetään ja tarkistetaan tiedostojärjestelmiä, ladataan moduleita, alustetaan tietoliikenneyhteydet, asetetaan kellonaika ja niin edelleen. Tämän jälkeen, yhteensopivuussyistä, se ajaa myös kaikki hakemiston `/etc/rc.boot/' skriptit, joiden nimessä ei ole pistettä. Jälkimmäinen hakemisto on varattu järjestelmän ylläpitäjän käyttöön, mutta sen käyttöä ei suositella. Lisätietoa saat Debian Policy Manualin kappaleista Kohta 9.1, `System initialization' ja System run levels and init.d scripts (http://www.debian.org/doc/debian-policy/ch-opersys#s-sysvinit). Debian ei käytä BSD-tyylistä `rc.local'-hakemistoa. 2.4.2. Järjestelmän ajotasot ---------------------------- Käynnistysprosessin jälkeen `init' käynnistää kaikki oletusajotasolla ajettavaksi määritellyt palvelut. Oletusajotaso määritetään tiedoston `/etc/inittab' rivillä `id'. Debianin oletuksissa `id=2'. Debianissa käytetään seuraavia ajotasoja: * 1 (yksikäyttäjä-tila), * 2-5 (monikäyttäjä-tilat), and * 0 (sammuttaa järjestelmän), * 6 (käynnistää järjestelmän uudelleen). Myös ajotasoja 7, 8 ja 9 voidaan käyttää, mutta niiden rc-hakemistoihin ei automaattisesti kopioida skriptejä, kun paketteja asennetaan. Ajotasoja vaihdetaan ohjelmalla `telinit'. Vaihdettaessa jollekin ajotasolle, kaikki skriptit hakemistossa `/etc/rc.d/' suoritetaan. Skriptin nimen ensimmäinen kirjain kertoo _tavan_, jolla skripti ajetaan. Kirjaimella `K' alkaville skripteille annetaan komentoriviargumentti `stop' (pysäytä) ja kirjaimella `S' alkaville skripteille argumentti `start' (käynnistä). Skriptit ajetaan aakkosjärjestyksessä. Tästä johtuen pysäytysskriptit ajetaan ennen käynnistysskriptejä ja kirjaimien `K' ja `S' perässä olevat kaksi numeroa määräävät ajojärjestyksen. Hakemistossa `/etc/rc.d' olevat skriptit ovat oikeasti vain symbolisia linkkejä hakemiston `/etc/init.d/' skripteihin. Nämä skriptit hyväksyvät myös argumentit "restart" (käynnistä uudelleen) ja "force-reload" (pakota uudelleenlataus). Näitä argumentteja voidaan käyttää järjestelmän käynnistyksen jälkeen, jos taustaohjelma tarvitsee käynnistää uudelleen tai pakottaa lukemaan asetustiedostonsa uudelleen. Esimerkiksi: # /etc/init.d/exim4 force-reload 2.4.3. Ajotasojen muokkaaminen ------------------------------ Ajotasojen muokkaaminen on vaativa järjestelmän ylläpitäjän tehtävä. Seuraavat ohjeet pätevät suurimmalle osalle palveluita. Käynnistääksesi palvelun ajotasolla , luo symbolinen linkki `/etc/rc.d/S', joka osoittaa tiedostoon `../init.d/'. Järjestysnumeron tulisi olla sama kuin palvelulle pakettia asennettaessa annettu numero. Pysäyttääksesi palvelun, nimeä symbolinen linkki siten, että sen nimi alkaa kirjaimella `K' `S':n sijaan ja sen järjestysnumero on 100 miinus . Näiden muutosten tekeminen on helpointa ajotasoeditorilla kuten `sysv-rc-conf' tai `ksysv'. On mahdollista poistaa palvelun symbolinen `S'-linkki uudelleennimeämisen sijaan. Tällöin palvelua ei pysäytetä vaan se jää `sysv-rc' init-järjestelmän mielestä "kelluvaan" tilaan. Kun ajotasoa vaihdetaan, kyseistä palvelua ei käynnistetä eikä pysäytetä vaan se jätetään siihen tilaan, jossa se oli. Huomaa kuitenkin, että riippumatta palvelun tilasta kelluvassa tilassa oleva palvelu käynnistetään, jos sen asentama paketti päivitetään. Tämä on tunnettu nykyisen Debian-järjestelmän puute. Huomaa myös, että ajotasojen 0 ja 6 `K'-linkit tulisi säilyttää. Jos poistat kaikki palveluun liittyvät symboliset linkit, niin palvelun paketin päivittäminen palauttaa linkit oletustasoille. Hakemiston `/etc/rcS.d/' symbolisia linkkejä _ei_ suositella muutettavaksi mitenkään. 2.5. Monimuotoisuuden tukeminen ------------------------------- Debian tarjoaa järjestelmän ylläpitäjälle useita tapoja toteuttaa toiveitaan rikkomatta järjestelmää. * `dpkg-divert', katso Kohta 6.5.1, ``dpkg-divert' -komento'. * `equivs', katso Kohta 6.5.2, ``equivs'-paketti'. * `update-alternative', katso Kohta 6.5.3, `Vaihtoehtoiset komennot'. * `make-kpkg' voi käyttää monia alkulataimia. Katso make-kpkg(1) and Kohta 7.1, `Kernel recompile'. Kaikki hakemistopuussa `/usr/local/' olevat tiedostot kuuluvat järjestelmän ylläpitäjälle eikä Debian koske niihin. Useimmat hakemiston `/etc/' alla olevat tiedostot ovat `asetustiedostoja', eikä Debian muokkaa niitä päivityksen yhteydessä ellei ylläpitäjä nimenomaan tätä pyydä. 2.6. Kansainvälistäminen ------------------------ Debian-järjestelmä tukee useiden eri kielien merkki- ja kirjoitusjärjestelmiä sekä komentorivillä että X:ssä. Useita dokumentteja, ohjesivuja ja järjestelmäviestejä on käännetty yhä useammalle kielelle. Asennuksen aikana Debian pyytää käyttäjää valitsemaan asennuskielen (ja joskus myös kielen variantin). Jos käyttämäsi järjestelmä ei tue kaikki kielen ominaisuuksia, joita tarvitset, tai jos haluat vaihtaa kieltä tai asentaa uuden kieltäsi tukevan näppäimistön, katso kappaletta Kohta 9.7, `Localization (l10n)'. 2.7. Debian ja ydin (kernel) ---------------------------- Katso Luku 7, `The Linux kernel under Debian'. 2.7.1. Ytimen kääntäminen ei-Debian lähdekoodista ------------------------------------------------- Debian menettelee seuraavasti otsaketietojen kanssa. Debianin C-kirjastot on käännetty käyttäen uusimman _stable_-jakelun _ytimen_ otsaketietoja. Esimerkiksi Debian-1.2 -julkaisu käytti otsaketietoja, joiden versionumero oli 5.4.13. Tämä käytäntö poikkeaa kaikista Linux FTP-sivustoilla levitetyistä lähdekoodipaketeista, jotka käyttävät vielä uudempia versioita otsaketiedoista. Ytimen lähdekoodin mukana levitetyt ytimen otsaketiedot löytyvät hakemistosta `/usr/include/linux/include/'. Jos on tarpeen kääntää ohjelma uudempien ytimen otsaketietojen kanssa kuin mitä paketti `libc6-dev' tarjoaa, on käännöskomentoon lisättävä valitsin `-I/usr/src/linux/include/'. Tämä on ollut tarpeen esimerkiksi paketoitaessa automaattista liittäjäpalvelua (automounter daemon, `amd'). Kun uusissa ytimissä muutettiin NFS:n sisäistä käsittelyä, ohjelma `amd' tarvitsisi tätä tietoa. Tämä vaati uusimpien ytimen otsikkotietojen käyttöä. 2.7.2. Työkaluja muokatun kernelin kääntämiseen ----------------------------------------------- Käyttäjien, jotka haluavat (tai joiden täytyy) kääntää itse muokattu ydin, suositellaan lataamaan paketti `kernel-package'. Paketti sisältää skriptejä ydinpaketin tekemiseen ja mahdollistaa Debianin ytimen binäärikuvan sisältävän paketin rakentamisen pelkästään ajamalla komennon # make-kpkg kernel_image ytimen lähdekoodin sisältävän hakemiston juuressa. Ohjeita saat ajamalla komennon # make-kpkg --help ja ohjesivuilta make-kpkg(1) ja Luku 7, `The Linux kernel under Debian'. Käyttäjien tarvitsee erikseen ladata viimeisimmän (tai haluamansa) ytimen lähdekoodi joltain Linux-arkistosivulta, ellei paketti kernel-source- ole saatavilla (missä on ytimen versio). Debianin `initrd' latausskripti vaatii erityisen ytimen muutostiedoston nimeltä `initrd'. Katso http://bugs.debian.org/149236. Yksityiskohtaiset ohjeet paketin `kernel-package' käytöstä löytyvät tiedostosta `/usr/share/doc/kernel-package/README.gz'. 2.7.3. Erityishuomioita modulien käytöstä ----------------------------------------- Debianin paketti `modconf' tarjoaa komentoriviskriptin, (`/usr/sbin/modconf') jonka avulla voidaan muokata modulien asetuksia. Skripti tuottaa valikkopohjaisen käyttöliittymän järjestelmän ladattavien laiteajurien valitsemiseen. Valintojen pohjalta ohjelma muokkaa tiedostoja `/etc/modules.conf' (joka listaa aliakset ja muut argumentit, joita käytetään modulien yhteydessä), `/etc/modules' (joka listaa käynnistyksen yhteydessä ladattavat modulit) ja hakemiston `/etc/modutils/' tiedostoja. (Uusien) muokattujen kernelien rakentamista helpottavien `Configure.help'-tiedostojen tapaan, paketti `modconf' asentaa ohjetiedostoja (hakemistoon `/usr/share/modconf/'), jotka sisältävät yksityiskohtaista tiedota kunkin modulin sopivista argumenteista. 2.7.4. Vanhan ydinpaketin poistaminen ------------------------------------- `kernel-image-.prerm'-skripti tarkistaa yritätkö poistaa samaa ydintä, jota juuri ajat. Niinpä voit turvallisesti poistaa tarpeettomat ydinpaketit komennolla: # dpkg --purge --force-remove-essential kernel-image- (Korvaa ytimen versio- ja muutosnumeroilla.) ------------------------------------------------------------------------------- 3. Debian System installation hints ----------------------------------- Official documentation for installing Debian is located at http://www.debian.org/releases/stable/ and http://www.debian.org/releases/stable/installmanual. The development versions are located at http://www.debian.org/releases/testing/ and http://www.debian.org/releases/testing/installmanual (work in progress, sometimes this may not exist). Although this chapter was initially written during the days of the Potato installer, most of the contents have been updated to the Woody installer and they are very similar installers. Since Sarge will use a totally new installer, please use this as a reference point for the Sarge installer. Also some key packages have changed names and priorities. For example, default MTA of Sarge is `exim4' instead of `exim', and `coreutils' has been introduced to replace several packages. You may need to adjust actions. 3.1. General Linux system installation hints -------------------------------------------- Do not forget to check http://www.debian.org/CD/netinst/ if you are looking for a compact CD image of the Debian installer. Running the `testing' or `unstable' distribution increases the risk of hitting serious bugs. This risk can be managed by deploying a multibooting scheme with a more stable Debian distribution or by using the nice trick provided by `chroot' as described in Kohta 8.6.35, ``chroot''. The latter will enable running different Debian distributions simultaneously on different consoles. 3.1.1. Hardware compatibility basics ------------------------------------ Linux is compatible with most PC hardware and can be installed to almost any system. For me it was as easy as installing Windows 95/98/Me. The hardware compatibility list just seems to keep growing. If you have a laptop PC, check Linux on Laptops (http://www.linux-laptop.net/) for installation pointers by brand and model. My recommendation for desktop PC hardware is "Just be conservative": * SCSI rather than IDE for work, IDE/ATAPI HD for private use. * IDE/ATAPI CD-ROM (or CD-RW). * PCI rather than ISA, especially for the network card (NIC). * Use a cheap NIC. Tulip for PCI, NE2000 for ISA are good. * Avoid PCMCIA (notebook) as your first Linux install. * No USB keyboard, mouse, ... unless you want a challenge. If you have a slow machine, yanking out the hard drive and plugging it into another faster machine for installation is a good idea. 3.1.2. Determining a PC's hardware and chip set ----------------------------------------------- During installation, one will be asked to identify the hardware or chip set of the PC. Sometimes that information may not seem easy to find. Here is one method: 1. Open your PC's case and look inside. 2. Record the product ID codes on the large chips on the graphics card, network card, chip near serial ports, chip near IDE ports. 3. Record card names printed on the back of the PCI and ISA cards. 3.1.3. Determining a PC's hardware via Debian --------------------------------------------- The following commands on a Linux system should give some idea of actual hardware and configuration. $ pager /proc/pci $ pager /proc/interrupts $ pager /proc/ioports $ pager /proc/bus/usb/devices These commands can be run during the install process from the console screen by pressing Alt-F2. After the initial installation, with the installation of optional packages such as `pciutils', `usbutils', and `lshw', you can obtain more extensive system information. $ lspci -v |pager $ lsusb -v |pager # lshw |pager Typical uses of interrupts: * IRQ0: timer output (8254) * IRQ1: keyboard controller * IRQ2: cascade to IRQ8--IRQ15 on PC-AT * IRQ3: secondary serial port (io-port=0x2F8) (`/dev/ttyS1') * IRQ4: primary serial port (io-port=0x3F8) (`/dev/ttyS0') * IRQ5: free [sound card (SB16: io-port=0x220, DMA-low=1, DMA-high=5)] * IRQ6: floppy disk controller (io-port=0x3F0) (`/dev/fd0', `/dev/fd1') * IRQ7: parport (io-port=0x378) (`/dev/lp0') * IRQ8: rtc * IRQ9: software interrupt (int 0x0A), redirect to IRQ2 * IRQ10: free [network interface card (NE2000: io-port=0x300)] * IRQ11: free [(SB16-SCSI: io-port=0x340, SB16-IDE: io-port=0x1E8,0x3EE)] * IRQ12: PS/2 Mouse * IRQ13: free (was 80287 math coprocessor) * IRQ14: primary IDE controller (`/dev/hda', `/dev/hdb') * IRQ15: secondary IDE controller (`/dev/hdc', `/dev/hdd') For old non-PnP ISA cards, you may want to set IRQ5, IRQ10, and IRQ11 as non-PnP from the BIOS. For USB devices, device classes are listed in `/proc/bus/usb/devices' as `Cls=': * Cls=00 : Unused * Cls=01 : Audio (speaker etc.) * Cls=02 : Communication (MODEM, NIC, ...) * Cls=03 : HID (Human Interface Device: KB, mouse, joystick) * Cls=07 : Printer * Cls=08 : Mass storage (FDD, CD/DVD drive, HDD, Flash, ...) * Cls=09 : Hub (USB hub) * Cls=255 : Vendor specific If the device class of a device is not 255, Linux supports the device. 3.1.4. Determining a PC's hardware via other OSs ------------------------------------------------ Hardware information can also be obtained from other OSs: Install another commercial Linux distribution. Hardware detection on those tends to be better than on Debian as of now. (This situation should even out once `debian-installer' is introduced with Sarge.) Install Windows. Hardware configuration can be obtained by right-clicking "My Computer" to get to Properties / Device Manager. Record all resource information such as IRQ, I/O port address, and DMA. Some old ISA cards may need to be configured under DOS and used accordingly. 3.1.5. A Lilo myth ------------------ "Lilo is limited to 1024 cylinders." Wrong! The newer `lilo' used after Debian Potato has lba32 support. If the BIOS of your motherboard is recent enough to support lba32, `lilo' should be able to load beyond the old 1024-cylinder limitation. Just make sure to add a line reading "lba32" somewhere near the beginning of your `lilo.conf' file if you have kept an old `lilo.conf'. See `/usr/share/doc/lilo/Manual.txt.gz'. 3.1.6. GRUB ----------- The new boot loader `grub' from the GNU Hurd project can be installed on a Debian Woody system: # apt-get update # apt-get install grub-doc # mc /usr/share/doc/grub-doc/html/ ... read contents # apt-get install grub # pager /usr/share/doc/grub/README.Debian.gz ... read it :) To edit the GRUB menu, edit `/boot/grub/menu.lst'. See Kohta 8.1.6, `Setting GRUB boot parameters' for how to set boot parameters during the boot process since it is slightly different from `lilo' configuration. 3.1.7. Choice of boot floppies ------------------------------ For Potato, I liked the IDEPCI disk set for normal install to a desktop. For Woody, I like the bf2.4 boot disk set. They both use a version of `boot-floppies' to create boot floppies. If you have a PCMCIA network card, you need to use the standard boot disk set (largest number of floppies but all driver modules available) and configure the NIC in the PCMCIA setup; do not try to set up an NIC card in the standard network setup dialog. For special systems, you may need to create a custom rescue disk. This can be done by replacing the kernel image named "linux" on the Debian rescue disk by overwriting it with another compressed kernel image compiled off-site for the machine. Details are documented in `readme.txt' on the rescue disk. The rescue floppy uses the MS-DOS filesystem, so you can use any system to read and edit it. This should make life easier for people with a special network card, etc. For Sarge, `debian-installer' and/or `pgi' is expected to be used for creating boot floppies. 3.1.8. Installation ------------------- Follow the official instructions found in http://www.debian.org/releases/stable/installmanual or http://www.debian.org/releases/testing/installmanual (work in progress, sometimes this may not exist). If you are installing a system using `boot-floppies' in the `testing' distribution, you may need to open a console terminal during the install process by pressing Alt-F2 and manually edit `/etc/apt/sources.list' entries, changing "stable" to "testing" to adjust APT sources. I tend to install `lilo' into places like `/dev/hda3', while installing `mbr' into `/dev/hda'. This minimizes the risk of overwriting boot information. Here is what I choose during the install process. * MD5 passwords "yes" * shadow passwords "yes" * Install "advanced" (dselect **) and select * Exclude emacs (if selected), nvi, tex, telnet, talk(d); * Include mc, vim, either one of nano-tiny or elvis-tiny. See Kohta 6.2.4, ``dselect''. Even if you are an Emacs fan, avoid it now and be content with nano during install. Also avoid installing other large packages such as TeX (Potato used to do this) at this stage. See Kohta 11.2, `Rescue editors' for the reason for installing nano-tiny or elvis-tiny here. * All configuration questions = "y" (replace current) during each package install dialog. * `exim': select 2 for machine since I send mail through my ISP's SMTP server. For more information on dselect, see Kohta 6.2.4, ``dselect''. 3.1.9. Hosts and IP to use for LAN ---------------------------------- Example of LAN configuration (C subnet: 192.168.1.0/24): Internet | +--- External ISP provides POP service (accessed by fetchmail) | Access point ISP provides DHCP service and SMTP relay service | : Cable modem (Dialup) | : LAN Gateway machine external port: eth0 (IP given by ISP's DHCP) use old notebook PC (IBM Thinkpad, 486 DX2 50MHz, 20MB RAM) run Linux 2.4 kernel with ext3 filesystem. run "ipmasq" package (with stronger patch, NAT, and firewall) run "dhcp-client" package configured for eth0 (override DNS setting) run "dhcp" package configured for eth1 run "exim" as the smarthost (mode 2) run "fetchmail" with a long interval (fallback) run "bind" as the cache nameserver for Internet from LAN as authoritative nameserver for LAN domain from LAN run "ssh" on port 22 and 8080 (connect from anywhere) run "squid" as the cache server for the Debian archive (for APT) LAN Gateway machine internal port: eth1 (IP = 192.168.1.1, fixed) | +--- LAN Switch (100base T) ---+ | | Some fixed IP clients on LAN Some DHCP clients on LAN (IP = 192.168.1.2-127, fixed) (IP = 192.168.1.128-200, dynamic) See Luku 10, `Network configuration' for the details of configuring the network. See Kohta 10.12, `Building a gateway router' for the details of configuring the LAN gateway server. 3.1.10. User accounts --------------------- In order to have a consistent feel across machines, the first few accounts are always the same in my system. I always create a first user account with a name like "admin" (uid=1000). I forward all root email there. This account is given membership in the `adm' group (see Kohta 9.2.2, `"Why GNU `su' does not support the `wheel' group"'), which can be given a good amount of root privilege through `su' using PAM or the `sudo' command. See Kohta 4.1.3, `Add a user account' for details. 3.1.11. Creating filesystems ---------------------------- 3.1.11.1. Hard disk partition ----------------------------- I prefer to use different partitions for different directory trees to limit damage upon system crash. E.g., / == (/ + /boot + /bin + /sbin) == 50MB+ /tmp == 100MB+ /var == 100MB+ /home == 100MB+ /usr == 700MB+ with X /usr/local == 100MB The size of the `/usr' directory is very dependent on X Window applications and documentation. `/usr/' can be 300MB if one runs a console terminal only, whereas 2GB--3GB is not an unusual size if one has installed many Gnome applications. When `/usr/' grows too big, moving out `/usr/share/' to a different partition is the most effective cure. With the new large prepackaged Linux 2.4 kernels, `/' may need more than 200MB. For example, the current status of my Internet gateway machine is as follows (output of the `df -h' command): Filesystem Size Used Avail Use% Mounted on /dev/hda3 300M 106M 179M 38% / /dev/hda7 100M 12M 82M 13% /home /dev/hda8 596M 53M 513M 10% /var /dev/hda6 100M 834k 94M 1% /var/lib/cvs /dev/hda9 596M 222M 343M 40% /usr /dev/hda10 596M 130M 436M 23% /var/cache/apt/archives /dev/hda11 1.5G 204M 1.2G 14% /var/spool/squid (The large area reserved for `/var/spool/squid/' is for a proxy cache for package downloading.) Following is `fdisk -l' output to provide an idea of partition structure: # fdisk -l /dev/hda # comment /dev/hda1 1 41 309928+ 6 FAT16 # DOS /dev/hda2 42 84 325080 83 Linux # (not used) /dev/hda3 * 85 126 317520 83 Linux # Main /dev/hda4 127 629 3802680 5 Extended /dev/hda5 127 143 128488+ 82 Linux swap /dev/hda6 144 157 105808+ 83 Linux /dev/hda7 158 171 105808+ 83 Linux /dev/hda8 172 253 619888+ 83 Linux /dev/hda9 254 335 619888+ 83 Linux /dev/hda10 336 417 619888+ 83 Linux /dev/hda11 418 629 1602688+ 83 Linux A few unused partitions exist. These are for installing a second Linux distribution or as expansion space for growing directory trees. 3.1.11.2. Mount filesystems --------------------------- Mounting the above filesystems properly is accomplished with the following `/etc/fstab': # /etc/fstab: static filesystem information. # # filesystem mount point type options dump pass /dev/hda3 / ext2 defaults,errors=remount-ro 0 1 /dev/hda5 none swap sw 0 0 proc /proc proc defaults 0 0 /dev/fd0 /floppy auto defaults,user,noauto 0 0 /dev/cdrom /cdrom iso9660 defaults,ro,user,noauto 0 0 # # keep partitions separate /dev/hda7 /home ext2 defaults 0 2 /dev/hda8 /var ext2 defaults 0 2 /dev/hda6 /var/lib/cvs ext2 defaults 0 2 # noatime will speed up file access for read access /dev/hda9 /usr ext2 defaults,noatime 0 2 /dev/hda10 /var/cache/apt/archives ext2 defaults 0 2 # very big partition for proxy cache /dev/hda11 /var/spool/squid ext2 rw 0 2 # backup bootable DOS /dev/hda1 /mnt/dos vfat rw,noauto 0 0 # backup bootable Linux system (not done) /dev/hda2 /mnt/linux ext2 rw,noauto 0 0 # # nfs mounts mickey:/ /mnt/mickey nfs ro,noauto,intr 0 0 goofy:/ /mnt/goofy nfs ro,noauto,intr 0 0 # minnie:/ /mnt/minnie smbfs ro,soft,intr,credentials={filename} 0 2 For NFS, I use `noauto,intr' combined with the default `hard' option. This way, it is possible to recover from a hung process due to a dead connection using Ctrl-C. For a Windows machine connected with Samba (smbfs), `rw,auto,soft,intr' may be good idea. See Kohta 3.5, `Samba configuration'. For a floppy drive, using `noauto,rw,sync,user,exec' instead prevents file corruption after accidental disk eject before unmount, but this slows the write process. 3.1.11.3. Autofs mount ---------------------- Key points to auto mount: * Load the `vfat' module to allow `/etc/auto.misc' to contain `-fstype=auto': # modprobe vfat # prior to the floppy access attempt ... or to automate this setting, # echo "vfat" >> /etc/modules ... and reboot the system. * Set `/etc/auto.misc' as follows: floppy -fstype=auto,sync,nodev,nosuid,gid=100,umask=000 :/dev/fd0 ... where gid=100 is "users". * Create `cdrom' and `floppy' links in `/home/', that point to `/var/autofs/misc/cdrom' and `/var/autofs/misc/floppy' respectively. * Add to the "users" group. 3.1.11.4. NFS mount ------------------- The external Linux NFS server (goofy) resides behind a firewall (gateway). I have a very relaxed security policy on my LAN since I am the only user. To enable NFS access, the NFS server side needs to add `/etc/exports' as follows: # /etc/exports: the access control list for filesystems which may be # exported to NFS clients. See exports(5). / (rw,no_root_squash) This is needed to activate the NFS server in addition to installing and activating the NFS server and client packages. For simplicity, I usually create a single partition of 2GB for an experimental or secondary lazy Linux install. I optionally share swap and `/tmp' partitions for these installs. A multipartition scheme is too involved for these usages. If only a simple console system is needed, 500MB may be more than sufficient. 3.1.12. DRAM memory guidelines ------------------------------ Following are rough guidelines for DRAM. 4MB: Bare minimum for Linux kernel to function. 16MB: Minimum for reasonable console system. 32MB: Minimum for simple X system. 64MB: Minimum for X system with GNOME/KDE. 128MB: Comfortable for X system with GNOME/KDE. 256MB (or more): Why not if you can afford it? DRAM is cheap. Using the boot option `mem=4m' (or lilo `append="mem=4m"') will show how the system would perform with 4MB of memory installed. A lilo boot parameter is needed for a system containing more than 64MB of memory with an old BIOS. 3.1.13. Swap space ------------------ I use the following guidelines for swap space: * Each swap partition is < 128MB (if using an old 2.0 kernel), < 2GB (with recent kernels) * Total = either (1 to 2 times installed RAM) or (128MB to 2GB) as a guideline * Spread them on different drives and mount all of them with `sw,pri=1' options in `/etc/fstab'. This ensures that the kernel does a striping RAID of the swap partitions and offers the maximum swap performance. * Use a central portion of the hard disk when possible. Even if you never need it, some swap space (128MB) is desirable so the system will slow down before it crashes hard with a program which leaks memory. 3.2. Bash configuration ----------------------- I modify shell startup scripts to my taste across the system: /etc/bash.bashrc Replace with private one /etc/profile Keep distribution copy ( \w -> \W) /etc/skel/.bashrc Replace with private copy /etc/skel/.profile Replace with private copy /etc/skel/.bash_profile Replace with private copy ~/.bashrc Replace with private copy for all accounts ~/.profile Replace with private copy for all accounts ~/.bash_profile Replace with private copy for all accounts See details in my example scripts (http://www.debian.org/doc/manuals/debian-reference/examples/). I like a transparent system, so I set `umask' to 002 or 022. `PATH' is set by the following configuration files in this order: /etc/login.defs - before the shell sets PATH /etc/profile (may call /etc/bash.bashrc) ~/.bash_profile (may call ~/.bashrc) 3.3. Mouse configuration ------------------------ 3.3.1. PS/2 mice ---------------- In the case of a PS/2-connector mouse on an ATX motherboard, the signal flow should be: mouse -> /dev/psaux -> gpm -> /dev/gpmdata = /dev/mouse -> X Here, a symlink `/dev/mouse' is created and is pointing to `/dev/gpmdata' to make some configuration utilities happy and to make reconfiguration easy. (E.g., if you decide not to use the `gpm' daemon after all, just point the symlink `/dev/mouse' to `/dev/psaux' after getting rid of the `gpm' daemon.) This signal flow allows the keyboard and mouse to be unplugged and reinitialized by restarting `gpm' upon reconnect. X will stay alive! The protocol of the signal flow between `gpm' output and X input can be implemented in either of two ways, as "ms3" (use the Microsoft 3-button serial mouse protocol) or "raw" (use the same protocol as the mouse that is connected), and this choice dictates the choice of protocol used in X configuration. I will demonstrate the configuration examples using a Logitech 3-button (traditional Unix-style mouse) PS/2 mouse as an example in the following. If you are one of the unfortunate whose graphics card is not supported by the new X4 and need to use the old X3 (some ATI 64 bit cards), configure `/etc/X11/XF86Config' instead of `/etc/X11/XF86Config-4' in the following examples while installing X3 packages. 3.3.1.1. The ms3 protocol approach ---------------------------------- /etc/gpm.conf | /etc/X11/XF86Config-4 =========================+====================================== device=/dev/psaux | Section "InputDevice" responsiveness= | Identifier "Configured Mouse" repeat_type=ms3 | Driver "mouse" type=autops2 | Option "CorePointer" append="" | Option "Device" "/dev/mouse" sample_rate= | Option "Protocol" "IntelliMouse" | EndSection If this approach is used, the mouse type adjustment is done only by editing `gpm.conf' and X configuration stays constant. See my example scripts (http://www.debian.org/doc/manuals/debian-reference/examples/). 3.3.1.2. The raw protocol approach ---------------------------------- /etc/gpm.conf | /etc/X11/XF86Config-4 =========================+====================================== device=/dev/psaux | Section "InputDevice" responsiveness= | Identifier "Configured Mouse" repeat_type=raw | Driver "mouse" type=autops2 | Option "CorePointer" append="" | Option "Device" "/dev/mouse" sample_rate= | Option "Protocol" "MouseManPlusPS/2" | EndSection If this approach is used, the mouse type adjustment is done by editing `gpm.conf' as well as adjusting X configuration. 3.3.1.3. How to adjust to different mice ---------------------------------------- The `gpm' device type `autops2' is supposed to autodetect most of the PS/2 mice in the market. Unfortunately it doesn't always work and it isn't available in pre-Woody versions. Try using `ps2', or `imps2' in `gpm.conf' instead of `autops2' for such cases. To find out the specific types of mouse `gpm' knows about, type: `gpm -t help'. See gpm(8). If a 2-button PS/2 mouse is used, set the X protocol to enable `Emulate3Buttons'. The difference of protocol between the 2-button mouse and the 3-button mouse is autodetected and auto-adjusted for `gpm' after tapping the middle button once. For X protocol with Kohta 3.3.1.2, `The raw protocol approach' or without `gpm', use: * `IntelliMouse': serial port mouse (`gpm' repeater with "ms3") * `PS/2': PS/2 port mouse (always test this first) * `IMPS/2': any PS/2 port mice (2, 3, or scroll mice, better) * `MouseManPlusPS/2': Logitech PS/2 port mouse * `...' See more at Mouse Support in XFree86 (http://www.xfree86.org/current/mouse.html). A typical Microsoft scroll mouse is reported to work best with: /etc/gpm.conf | /etc/X11/XF86Config-4 =========================+====================================== device=/dev/psaux | Section "InputDevice" responsiveness= | Identifier "Configured Mouse" repeat_type=raw | Driver "mouse" type=autops2 | Option "CorePointer" append="" | Option "Device" "/dev/mouse" sample_rate= | Option "Protocol" "IMPS/2" | Option "Buttons" "5" | Option "ZAxisMapping" "4 5" | EndSection For some recent thin Toshiba notebook PCs, activating `gpm' before PCMCIA in the System-V init script may help prevent system lockup. Weird but true. 3.3.2. USB mice --------------- Make sure you have all required kernel functions activated through kernel compile time configuration or modules: * Under "Input core support": * "Input core support" (CONFIG_INPUT, `input.o'), * "Mouse support" (CONFIG_INPUT_MOUSEDEV, `mousedev.o'), * Under "USB support": * "Support for USB" (CONFIG_USB, `usbcore.o'), * "Preliminary USB device filesystem" (CONFIG_USB_DEVICEFS), * "UHCI" or "OHCI" (CONFIG_USB_UHCI || CONFIG_USB_UHCI_ALT || CONFIG_USB_OHCI, `usb-uhci.o' || `uhci.o' || `usb-ohci.o'), * "USB Human Interface Device (full HID) support" (CONFIG_USB_HID, `hid.o'), and * "HID input layer support" (CONFIG_USB_HIDINPUT) Here, lower case names are module names. If you're not using devfs, create a device node `/dev/input/mice' with major 13 and minor 63 as follows: # cd /dev # mkdir input # mknod input/mice c 13 63 For typical scroll _USB_ mice, configuration combinations should be: /etc/gpm.conf | /etc/X11/XF86Config-4 =========================+====================================== device=/dev/input/mice | Section "InputDevice" responsiveness= | Identifier "Generic Mouse" repeat_type=raw | Driver "mouse" type=autops2 | Option "SendCoreEvents" "true" append="" | Option "Device" "/dev/input/mice" sample_rate= | Option "Protocol" "IMPS/2" | Option "Buttons" "5" | Option "ZAxisMapping" "4 5" | EndSection See the Linux USB Project (http://www.linux-usb.org/) for more information. 3.3.3. Touchpad --------------- Although the touchpad on a laptop computer emulates a 2-button PS/2 mouse as the default behavior, the `tpconfig' package enables full control of the device. For example, setting `OPTIONS="--tapmode=0"' in `/etc/default/tpconfig' will disable pesky "click by tap" behavior. Set `/etc/gpm.conf' as follows to use both touchpad and USB external mouse on the console: device=/dev/psaux responsiveness= repeat_type=ms3 type=autops2 append="-M -m /dev/input/mice -t autops2" sample_rate= 3.4. NFS configuration ---------------------- Set up NFS by setting `/etc/exports'. # apt-get install nfs-kernel-server # echo "/ *.domainname-for-lan-hosts(rw,no_root_squash,nohide)" \ >> /etc/exports See my example scripts for details (http://www.debian.org/doc/manuals/debian-reference/examples/). 3.5. Samba configuration ------------------------ References: * http://www.samba.org/ * `samba-doc' package Setting up Samba with "share" mode is much easier since this creates WfW-type share drives. But it is preferable to set it up with "user" mode. Samba can be configured through `debconf' or `vi': # dpkg-reconfigure --priority= samba # in Woody # vi /etc/samba/smb.conf See my example scripts for details (http://www.debian.org/doc/manuals/debian-reference/examples/). Adding a new user to the `smbpasswd' file can be done via `smbpasswd': $ su -c "smbpasswd -a username" Make sure to use encrypted passwords for optimum compatibility. Set `os level' according to the following system equivalences (the larger the number, the higher the priority as server): 0: Samba with a loose attitude (will never become a master browser) 1: WfW 3.1, Win95, Win98, Win/Me? 16: Win NT WS 3.51 17: Win NT WS 4.0 32: Win NT SVR 3.51 33: Win NT SVR 4.0 255: Samba with mighty power Make sure that users are members of the group owning the directory that gives shared access and that the directory path has its execution bit set to access. 3.6. Printer configuration -------------------------- The traditional method is `lpr'/`lpd'. There is a new CUPS(TM) system (Common UNIX Printing System). PDQ is another approach. See the Linux Printing HOWTO (http://www.tldp.org/HOWTO/Printing-HOWTO.html) for more information. 3.6.1. `lpr'/`lpd' ------------------ For the `lpr'/`lpd' type spoolers (`lpr', `lprng', and `gnulpr'), set up `/etc/printcap' as follows if they are connected to a PostScript or text-only printer (the basics): |:\ :sd=/var/spool/lpd/:\ :mx#0:\ :sh:\ :lp=/dev/lp0: Meaning of the above lines: * Head line: -- name of spool, = alias * mx#0 -- max file size unlimited * sh -- suppress printing of burst page header * lp=/dev/lp0 -- local printer device, or port@host for remote This is a good configuration if you are connected to a PostScript printer. Also, when printing from a Windows machine through Samba, this is a good configuration for any Windows-supported printer (no bidirectional communication is supported). You have to select the corresponding printer configuration on the Windows machine. If you do not have a PostScript printer, you need to set up a filtering system using `gs'. There are many autoconfiguration tools provided for setting up `/etc/printcap'. Any of these combinations is an option: * `gnulpr', (`lpr-ppd') and `printtool'---I use this. * `lpr' and `apsfilter' * `lpr' and `magicfilter' * `lprng' and `lprngtool' * `lprng' and `apsfilter' * `lprng' and `magicfilter' In order to run GUI configuration tools such as `printtool', see Kohta 9.4.12, `Getting root in X' to gain root privilege. Printer spools created with `printtool' use `gs' and act like PostScript printers. So when accessing them, use PostScript printer drivers. On the Windows side, "Apple LaserWriter" is the standard one. 3.6.2. CUPS(TM) --------------- The Common UNIX Printing System (or CUPS(TM)) is installed by using `aptitude' and installing all packages under "Tasks" -> "Servers" -> "Print Server". (Sarge) For the best result, you should set `aptitude' with "F10" -> "Options" -> "Dependency handling" -> "[X] Install Recommended packages automatically". KDE and Gnome Desktop Environments provide easy printer configuration. Alternatively, you can configure the system using any web browser if `swat' is installed: $ http://localhost:631 For example, to add your printer on some port to the list of accessible printers: * click "Printers" from the main page, and then "Add Printer", * enter "root" for the username and its password, * proceed to add the printer following the prompts, * go back to the "Printers" page and click "Configure Printer", and * proceed to configure the paper size, resolution, and other parameters. See more information at http://localhost:631/documentation.html and http://www.cups.org/cups-help.html. 3.7. CRON for desktop PC ------------------------ The Vixie `cron' is installed as the default for the scheduled execution of programs. It does not function well unless your system is up 24/7. For the desktop use PC, you need to install `anacron' over `cron' to address this problem. `fcron' package may be used as alternative. See Kohta 8.6.27, `Schedule activity (`cron', `at')' for the configuration of CRON jobs. 3.8. Other host installation hints ---------------------------------- 3.8.1. Install a few more packages after initial install -------------------------------------------------------- Once you have made it this far, you have a small but functioning Debian system. It is a good time to install bigger packages. * Run `tasksel'. See Kohta 6.2.2, `Tehtävien asennus'. You may choose these if you need them: * End-user -- X Window System * Development -- C and C++ * Development -- Python * Development -- Tcl/Tk * Miscellaneous -- TeX/LaTeX environment * For others, I prefer to use `tasksel' as a guide by looking into their components listed under and installing them selectively through `dselect'. * Run `dselect'. Here the first thing you may want to do is select your favorite editor and any programs you need. You can install many Emacs variants at the same time. See Kohta 6.2.4, ``dselect'' and Kohta 11.1, `Popular editors'. Also you may replace some of the default packages with full-featured ones. * ... * ... I usually edit `/etc/inittab' for easy shutdown. ... # What to do when CTRL-ALT-DEL is pressed. ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -h now ... 3.8.2. Modules -------------- Modules for the device drivers are configured during the initial installation. `modconf' provides menu-driven module configuration afterward. This program is quite useful when some modules were left out during the initial installation or a new kernel was installed after the initial installation. All preloading module names need to be listed in `/etc/modules'. I also use `lsmod' and `depmod' to control them manually. Also make sure to add a few lines in `/etc/modules' to handle IP masquerading (FTP, etc.) for 2.4 kernels. See Kohta 7.2, `The modularized 2.4 kernel', specifically Kohta 7.2.3, `Network function'. 3.8.3. CD-RW basic setup ------------------------ For IDE connected CD-RW drive with 2.4 kernel, edit the following files: /etc/lilo.conf (add append="hdc=ide-scsi ignore=hdc", run lilo to activate) /dev/cdrom (symlink # cd /dev; ln -sf scd0 cdrom) /etc/modules (add "ide-scsi" and "sg". If needed "sr" after this.) See Kohta 9.3, `CD writers' for details. 3.8.4. Large memory and auto power-off -------------------------------------- Edit `/etc/lilo.conf' as follows to set boot-prompt parameters for large memory (for 2.2 kernels) and auto power-off (for APM): append="mem=128M apm=on apm=power-off noapic" Run `lilo' to install these settings. `apm=power-off' is needed for a SMP kernel and `noapic' is needed to avoid problems for my buggy SMP hardware. The same can be done directly by entering options at the boot prompt. See Kohta 8.1.5, `Other boot tricks with the boot prompt'. If APM is compiled as a module, as in Debian default 2.4 kernels, run `insmod apm power_off=1' after boot or set `/etc/modules' by: # echo "apm power_off=1" >>/etc/modules Alternatively, compiling ACPI support achieves the same goal with newer kernels and seems to be more SMP-friendly (this requires a newer motherboard). The 2.4 kernel on newer motherboards should detect large memory correctly. CONFIG_PM=y CONFIG_ACPI=y ... CONFIG_ACPI_BUSMGR=m CONFIG_ACPI_SYS=m and add the following lines in `/etc/modules' in this order: ospm_busmgr ospm_system Or recompile the kernel with all of the kernel options above set to "y". In any case, none of the boot-prompt parameters are needed with ACPI. 3.8.5. Strange access problems with some websites ------------------------------------------------- Recent Linux kernels enable ECN by default, which may cause access problems with some websites on bad routers. To check ECN status: # cat /proc/sys/net/ipv4/tcp_ecn ... or # sysctl net.ipv4.tcp_ecn To turn it off, use: # echo "0" > /proc/sys/net/ipv4/tcp_ecn ... or # sysctl -w net.ipv4.tcp_ecn=0 To disable TCP ECN on every boot, edit `/etc/sysctl.conf' and add: net.ipv4.tcp_ecn = 0 3.8.6. Dialup PPP configuration ------------------------------- Install the `pppconfig' package to set up dialup PPP access. # apt-get install pppconfig # pppconfig ... follow the directions to configure dialup PPP # adduser dip ... allow to access dialup PPP Dialup PPP access can be initiated by the user (): $ pon # start PPP access to your ISP ... enjoy the Internet $ poff # stop PPP access, optional See Kohta 10.2.4, `Configuring a PPP interface' for more details. 3.8.7. Other configuration files to tweak in `/etc/' ---------------------------------------------------- You may want to add an `/etc/cron.deny' file, missing from the standard Debian install (you can copy `/etc/at.deny'). ------------------------------------------------------------------------------- 4. Debian tutorials ------------------- This section provides a basic orientation to the Debian world for the real newbie. If you have been using any Unix-like system for a while, you probably know everything I explained here. Please use this as a reality check. 4.1. Getting started -------------------- After the installation of the Debian system on your PC, you need to learn few things to make it useful. Let us give you an express training. 4.1.1. Login to a shell prompt as root -------------------------------------- Upon rebooting the system, you will be presented either the graphical login screen or the character based login screen depending on your initial selection of packages. For the sake of simplicity, if you are presented with the graphical login screen, press Ctrl-Alt-F1 [1] to gain the character based login screen. Suppose your hostname is `', the login prompt looks like: login: Type `root' , press the Enter-key and type the password which you selected during the install process. In the Debian system, following the Unix tradition, the password is case sensitive. Then the system starts with the greeting message and presents you with the root command prompt waiting for your input. [2] login: root Password: Last login: Sun Oct 26 19:04:09 2003 on tty3 Linux 2.4.22-1-686 #6 Sat Oct 4 14:09:08 EST 2003 i686 GNU/Linux Most of the programs included with the Debian GNU/Linux system are freely redistributable; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. root@:root# You are ready to perform the system administration from this root command prompt. This root account is also called superuser or privileged user. From this account, you can do anything: * read, write, and remove any files on the system irrespective of their file permissions * set file ownership and permission of any files on the system * set the password of any non-privileged users on the system * login to any accounts without their passwords It is extremely bad idea to share the access to the root account by sharing the password. Use of program such as sudo(8) is the good way to share the administrative privileges. Please note that it is considered a good Unix habit to login to the non-privileged user account first even when you plan to perform administrative activities. Use commands `sudo', `super', or `su -c' to gain the limited root privileged when needed. See Kohta 9.2.4, `Working more safely -- `sudo''. [3] [1] The left-Ctrl-key, the left-Alt-key, and the F1-key are pressed together. [2] Note that if you edited the greeting message in `/etc/motd', this will be different. [3] I have to admit I used to use the superuser account more often than needed just because it was easy and I was sloppy. 4.1.2. Set up minimal newbie environment ---------------------------------------- I think learning a computer system is like learning a new foreign language. Although tutorial books are helpful, you have to practice it with helper tools. In this context, I think it is a good idea to install few additional packages such as `mc', `vim', `lynx', `doc-linux-text', and `debian-policy'. [1] # apt-get update ... # apt-get install mc vim lynx doc-linux-text debian-policy ... If you already had these packages installed, nothing will be installed. [1] It may also be a good idea to install `gpm', `emacs21', and `doc-linux-html'. See Kohta 3.3, `Mouse configuration' and Luku 11, `Editors'. 4.1.3. Add a user account ------------------------- During the installation, you usually created a non-privileged user account who receives e-mails sent to the root account. [1] Since you do not want to use this special user account for the following training activities either, you should create another new user account. Suppose you wish this new username to be `', type: root@:root# adduser ... answer all the questions will create it. [2] Before going further, let's learn few things first. [1] I tend to name this account created during installation as `admin' but this can be any arbitrary name. [2] You may want to add this user `' to the `adm' group to enable read access to the many logfiles in `/var/log/'. See passwd(5), group(5), shadow(5), group(5), vipw(8), and vigr(8). For the official meanings of users and groups, see a recent version of the Users and Groups (/usr/share/doc/base-passwd/users-and-groups.html) document. 4.1.4. Switch between virtual console ------------------------------------- In the default Debian system, there are six independent pseudo-terminals available, i.e., you can use the PC's VGA character console screen as 6 switchable VT-100 terminals. Switch from one to another by pressing the Left-Alt-key and one of the F1--F6 keys simultaneously. Each pseudo-terminal allows independent login to accounts. The multiuser environment is a great Unix feature, and very addictive. If you accidentally typed Alt-F7 on a system running the X Window System and the console screen displays graphic screen, regain the access to the character console by pressing Ctrl-Alt-F1. Just try to move to different console and come back to the original one to get used to this. 4.1.5. How to shut down ----------------------- Just like any other modern OSs where the file operation involves caching data in the memory, the Debian system needs the proper shutdown procedure before power can safely be turned off to maintain the integrity of files. Use the following command from the root command prompt to shutdown the system: # shutdown -h now This is for the normal multiuser mode. If you are in the single-user mode, use following from the root command prompt: # poweroff -i -f Alternatively, you may type Ctrl-Alt-Delete to shutdown. [1] Wait until the system displays "System halted" then shut off power. If the APM or ACPI function has been turned on by the BIOS and Linux properly, the system will power down by itself. See Kohta 3.8.4, `Large memory and auto power-off' for the detail. [1] The left-Ctrl-key, the left-Alt-Key, and the Delete are pressed together from the console. In the default system, this will cause system reboot. You need to modify `/etc/inittab' to have `shutdown' command with `-h' option as described in Kohta 3.8.1, `Install a few more packages after initial install'. 4.1.6. Play time ---------------- Now you are ready to play with the Debian system without risks as long as you use this non-privileged user account `'. [1] Let's login to the `'. If you are at root shell prompt, type Ctrl-D [2] at the root command prompt to close the root shell activity and return to the login prompt. Enter your newly created username `' and the corresponding password. [3] You will be presented with the following command prompt. @:$ From here on, the example given will use simplified command prompt for the sake of simplicity. I will use: * `#' : root shell prompt * `$' : non-privileged user shell prompt We will start learning the Debian system first with the easy way Kohta 4.2, `Midnight Commander (MC)' and later with the proper way Kohta 4.3, `Unix-like work environment'. [1] This is because the Debian system is, even just after the default installation, configured with the proper file permissions which prevent non-privileged user to damage the system. Of course, there may still exist some holes which can be exploited but those who worry about this issue should not be reading this section but should be reading Securing Debian Manual (http://www.debian.org/doc/manuals/securing-debian-howto/). [2] The left-Ctrl-key and the d-key are pressed together. No need to press the Shift-key even though these control characters are referred as "control D" with the upper case. [3] If you enter `root' instead of `' here and the corresponding password, you will gain the access to the `root' account. This procedure will be needed to regain the access to the `root' account. 4.2. Midnight Commander (MC) ---------------------------- Midnight Commander (MC) is a GNU "Swiss army knife" for the Linux console and other terminal environments. This gives newbie a menu driven console experience which is much easier to learn than standard Unix commands. Use this command to explore the Debian system. This is the best way to learn. Please explore few key locations just using the cursor keys and Enter key: * `/etc' and its subdirectories. * `/var/log' and its subdirectories. * `/usr/share/doc' and its subdirectories. * `/sbin' and `/bin' 4.2.1. Enhance MC ----------------- In order to make MC to change working directory upon exit, you need to modify `~/.bashrc' (or `/etc/bash.bashrc', called from `.bashrc'), as detailed in its manual page, mc(1), under the `-P' option. [1] [1] If you do not u