Справочник по Debian -------------------- Osamu Aoki Перевод Ильи В. Головко раздел A.1, `Authors' CVS, Чтв 18. Янв 2007, 11:54:11 UTC ------------------------------------------------------------------------------- Аннотация --------- Этот Справочник по Debian (http://qref.sourceforge.net/) представляет широкий обзор системы Debian в форме _руководства пользователя после установки_. Он охватывает многие аспекты системного администрирования, используя примеры _в командой строке_. Содержит руководство по основам системы, советы и многую другую информацию по фундаментальным концепциям Debian, процессу установки, системе управления пакетами, ядру Linux в среде Debian, построению шлюза, текстовым редакторам, системе CVS, программированию и средствам GnuPG для _рядовых пользователей и администраторов_. Сведения об авторских правах ---------------------------- Copyright (c) 2001--2005 by Osamu Aoki . Copyright (Chapter 2) (c) 1996--2001 by Software in the Public Interest. Этот документ может использоваться на условиях лицензии GNU General Public License версии 2 или выше. (http://www.gnu.org/copyleft/gpl.html) Разрешается создавать и распространять точные копии этого документа с указанием лицензии и с этой заметкой о разрешениях, сохраняемой на всех копиях. Разрешается копировать и распространять модифицированные версии этого документа на условиях для точного копирования только, если вся итоговая произведенная работа распространяется на условиях лицензии, идентичной этой. Разрешается копировать и распространять переводы этого документа на другой язык на выше приведенных условиях для модифицированных версий, за исключением того, что эта заметка о разрешениях может включаться в переводы вместо оригинальой английской версии в случае одобрения ее Фондом Свободного Обеспечения. ------------------------------------------------------------------------------- Содержание ---------- 1. Введение 1.1. Официальный документ 1.2. Соглашения, принятые в документе 1.3. Примеры скриптов 1.4. Базовая установка 1.5. Основы дистрибуции Debian 2. Основы Debian 2.1. Архивы Debian 2.1.1. Структура каталогов 2.1.2. Дистрибутивы Debian 2.1.3. Дистрибутив `stable' 2.1.4. Дистрибутив `testing' 2.1.5. Дистрибутив `unstable' 2.1.6. Дистрибутив `frozen' 2.1.7. Кодовые имена дистрибутивов Debian 2.1.8. Кодовые имена прошлого 2.1.9. Источник кодовых имен 2.1.10. Каталог `pool' 2.1.11. Историческая справка относительно Sid 2.1.12. Пакеты, закаченные в `incoming/' 2.1.13. Доступ к старым пакетам 2.1.14. Секции архитектрур 2.1.15. Исходный код 2.2. Система управления пакетами в Debian 2.2.1. Обзор пакетов Debian 2.2.2. Формат Debian пакета 2.2.3. Соглашение об именах файлов Debian-пакетов 2.2.4. Сохранение текущей конфигурации 2.2.5. Скрипты сопровождения Debian 2.2.6. Приоритеты пакетов 2.2.7. Виртуальные пакеты 2.2.8. Зависимости пакетов 2.2.9. Значение "pre-depends" 2.2.10. Статус пакета 2.2.11. Удержание пакетов от обновления 2.2.12. Пакеты с исходным текстом 2.2.13. Сборка бинарного пакета из пакета с исходным текстом 2.2.14. Создание новых пакетов Debian 2.3. Обновление системы Debian 2.3.1. Способы обновления системы Debian 2.3.2. Обзор инструментов управления пакетами 2.3.3. Программа `dpkg' 2.3.4. Система APT 2.3.5. Программа `dselect' 2.3.6. Обновление работающей системы 2.3.7. Скаченные и кэшированные архивные файлы `.deb' 2.3.8. Журналирование (record-keeping) процесса обновления 2.4. Процесс загрузки Debian 2.4.1. Программа `init' 2.4.2. Уровни выполнения 2.4.3. Настройка процесса загрузки 2.5. Поддержание многообразия программного обеспечения 2.6. Интернационализация 2.7. Debian и ядро 2.7.1. Компиляция ядра, полученного не из Debian 2.7.2. Инструменты для построения ядер, настроенных пользователем 2.7.3. Специальное положение о том, как работать с модулями 2.7.4. Удаление из системы старого пакета с ядром 3. Советы по установке системы Debian 3.1. Общие советы по установке системы Linux 3.1.1. Основы совместимости аппаратного обеспечения 3.1.2. Определение аппаратного обеспечения ПК и набора микросхем 3.1.3. Определение состава оборудования ПК при помощи Debian 3.1.4. Определение состава оборудования ПК при помощи других операционных систем 3.1.5. Миф о LILO 3.1.6. GRUB 3.1.7. Выбор набора загрузочных дискет 3.1.8. Установка 3.1.9. Хосты и IP-адреса для использования в локальных сетях 3.1.10. Учетные записи пользователей 3.1.11. Создание файловых систем 3.1.12. Рекомендации по оперативной памяти 3.1.13. Пространство для подкачки 3.2. Конфигурация командного интерпретатора Bash 3.3. Настройка мыши 3.3.1. Мышь PS/2 3.3.2. Мышь USB 3.3.3. Сенсорный коврик ноутбука 3.4. Конфигурация NFS 3.5. Настройка Samba 3.6. Настройка принтера 3.6.1. `lpr'/`lpd' 3.6.2. CUPS(TM) 3.7. Прочие советы по инсталляции системы 3.7.1. Установка дополнительных пакетов после первоначальной инсталляции 3.7.2. Модули 3.7.3. Базовая установка CD-RW 3.7.4. Большой размер оперативной памяти и автовыключение питания 3.7.5. Странные проблемы доступа на некоторые web-сайты 3.7.6. Конфигурация Dialup PPP 3.7.7. Другие конфигурационные файлы для настройки из каталога `/etc/' 4. Руководство по Debian 4.1. Введение 4.1.1. Вход в систему как пользователь root 4.1.2. Установка минимальной среды окружения для новичка 4.1.3. Добавление пользовательской учетной записи 4.1.4. Переключение между виртуальными консолями 4.1.5. Как завершить работу системы 4.1.6. Время поразвлечься 4.2. Midnight Commander (MC) 4.2.1. Улучшим MC 4.2.2. Запуск MC 4.2.3. Файловый менеджер в MC 4.2.4. Особенности командной строки в MC 4.2.5. Редактор в MC 4.2.6. Программа просмотра в MC 4.2.7. Возможности MC по автоматическому запуску программ 4.2.8. Виртуальная FTP-файловая система MC 4.3. Традиционная для Unix рабочая среда 4.3.1. Специальные комбинации клавиш 4.3.2. Основные команды Unix 4.3.3. Выполнение команд 4.3.4. Простая команда 4.3.5. Выполнение команды и переменные окружения 4.3.6. Путь поиска команды 4.3.7. Опции командной строки 4.3.8. Шаблоны имени файла (wildcards) командного интерпретатора 4.3.9. Код возврата команды 4.3.10. Типовые последовательности команд 4.3.11. Псевдоним команды 4.4. Традиционная для Unix обработка текста 4.4.1. Регулярные выражения 4.4.2. Выражения подстановки 4.5. Традиционная файловая система Unix 4.5.1. Основы файлов Unix 4.5.2. Концепция файловой системы в Debian 4.5.3. Права доступа к файлам и каталогам 4.5.4. ВременнЫе метки (Timestamps) 4.5.5. Ссылки 4.5.6. Именованные каналы (FIFOs) 4.5.7. Сокеты 4.5.8. Файлы устройств 4.5.9. Файловая система `/proc' 4.6. Система X Window System 4.6.1. Запуск системы the X Window System 4.6.2. Меню в системе X Window System 4.6.3. Клавиатурные комбинации клавиш в системе X Window System 4.7. Для дальнейшего изучения 5. Обновление до дистрибутива `testing' 5.1. Перевод системы APT к ее Woody-версии 5.2. Подготовка обновления (от `stable' к `testing') 5.3. Обновление системы Debian 5.3.1. Самый лучший способ обновления, использующий программу `dselect' 5.3.2. Устаревший способ обновления через `apt-get' 6. Управление пакетами в Debian 6.1. Введение 6.1.1. Основные инструменты 6.1.2. Удобные инструменты 6.2. Основы управления пакетами в Debian 6.2.1. Установка _задачи_ при помощи программ `tasksel' или `aptitude' 6.2.2. Установка системы APT - нет перевода!!!! 6.2.3. Программа `dselect' 6.2.4. Программа `aptitude' 6.2.5. Команды `apt-cache' и `apt-get' 6.2.6. Tracking a flavor of Debian distribution 6.2.7. Откат всех пакетов до уровня `stable' 6.2.8. Обзор файла `/etc/apt/preferences' 6.3. Команды выживания в системе Debian 6.3.1. Программные ошибки в Debian и поддержка 6.3.2. Разрешение проблем APT upgrade 6.3.3. Восстановление через `dpkg' 6.3.4. Восстановление информации о выбранных пакетах 6.3.5. Восстановление системы после сбоя каталога `/var' 6.3.6. Установка пакета в систему, которая не загружается 6.3.7. Что делать, если команда `dpkg' не работает 6.4. Нирвана в командах Debian 6.4.1. Информация о файле 6.4.2. Информация о пакете 6.4.3. Автоматическая установка при помощи APT 6.4.4. Повторное конфигурирование установленных пакетов 6.4.5. Операции remove и purge с пакетами 6.4.6. Удержание старых пакетов 6.4.7. Система на смеси `stable'/`testing'/`unstable' 6.4.8. Удаление файлов кэшированных пакетов 6.4.9. Запись/копирование конфигурации системы 6.4.10. Портирование пакета в систему на базе `stable' 6.4.11. Local package archive 6.4.12. Convert or install an alien binary package 6.4.13. Verify installed package files 6.4.14. Optimized `sources.list' 6.5. Other Debian peculiarities 6.5.1. The `dpkg-divert' command 6.5.2. The `equivs' package 6.5.3. Alternative commands 6.5.4. System-V `init' and runlevels 6.5.5. Отключение неиспользующихся сервисов 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 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. Regular-expression substitution 8.6.13. Edit a file in place using a script 8.6.14. Extract differences and merge updates for source files 8.6.15. Convert a large file into small files 8.6.16. Extract data from text file table 8.6.17. Script snippets for piping commands 8.6.18. Script snippets for looping over each file 8.6.19. Perl short script madness 8.6.20. Get text or a mailing list archive from a web page 8.6.21. Pretty print a web page 8.6.22. Pretty print a manual page 8.6.23. Merge two PostScript or PDF files 8.6.24. Time a command 8.6.25. `nice' command 8.6.26. Schedule activity (`cron', `at') 8.6.27. Console switching with `screen' 8.6.28. Network testing basics 8.6.29. Flush mail from local spool 8.6.30. Remove frozen mail from local spool 8.6.31. Redeliver mbox contents 8.6.32. Clear file contents 8.6.33. Dummy files 8.6.34. `chroot' 8.6.35. How to check hard links 8.6.36. `mount' hard disk image file 8.6.37. Samba 8.6.38. 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.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.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. Reading mail -- Mutt 9.7. Localization 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 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. Configuring an interface with a static IP address 10.6.2. Configuring an interface using DHCP 10.6.3. Configuring a Wi-Fi interface 10.6.4. Configuring a PPP interface 10.6.5. Configuring a PPPoE interface 10.6.6. Configuring multiple Ethernet interfaces for a gateway 10.6.7. Configuring virtual interfaces 10.7. Network configuration using logical interface definitions 10.8. Magic network configuration 10.8.1. Logical interface selection using guessnet 10.8.2. Automatic network configuration using laptop-net 10.9. Dealing with inconsistent naming of interfaces by the kernel 10.10. Triggering network configuration 10.10.1. Triggering network configuration at boot time 10.10.2. Triggering network configuration -- `hotplug' 10.10.3. Triggering network configuration -- `ifplugd' 10.10.4. Triggering network configuration -- `waproamd' 10.10.5. Network configuration and PCMCIA 10.11. Multi-stage mapping 10.12. Network service configuration 10.13. Network troubleshooting 10.14. Building a gateway router 10.14.1. Netfilter configuration 10.14.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. Document preparation 13.8.1. `roff' typesetting 13.8.2. SGML 13.8.3. TeX/LaTeX 13.8.4. Literate Programming 13.9. Packaging 13.9.1. Packaging a single binary 13.9.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. Appendix A.1. Authors A.2. Warranties A.3. Feedback A.4. Document format A.5. The Debian maze A.6. The Debian quotes ------------------------------------------------------------------------------- 1. Введение ----------- Этот Справочник по Debian (http://qref.sourceforge.net/) дает широкий обзор системы Debian в виде _руководства пользователя после установки_. Предназначается для тех, кто не боится работы в командной строке. Я предполагаю, что читатель уже имеет базовые навыки работы в Unix-подобных системах перед прочтением данного документа. Я сделал осознанное решение _не_ объяснять до мелочей все то, что может быть найдено в _man_-страницах, _info_-cтраницах, или документах _HOWTO_. Вместо подробных объяснений я попытался дать больше практической информации, предоставив _точные последовательности команд_ как в основном тексте, так и в _Примерах скриптов_ из http://www.debian.org/doc/manuals/debian-reference/examples/. Вы должны понимать содержимое примеров перед вводом команд. И возможно Ваша система может потребовать несколько другой последовательности команд. Много приведенной здесь информации состоит из указателей на авторитетные ccылки, приведенные в раздел 15.1, `References'. Это, отчасти, из-за того, что документ изначально разрабатывался в форме "_Краткого справочника_". _Коротко и ясно_ (KISS) - принцип, которым я руководствовался. За помощью при аварийном обслуживании системы немедленно переходите к секции раздел 6.3, `Команды выживания в системе Debian'. 1.1. Официальный документ ------------------------- Самый последний официальный документ располагается в архивах Debian в форме пакета `debian-reference-en'. Он также доступен по адресу http://www.debian.org/doc/manuals/debian-reference/. Самая последняя разрабатываемая версия находится по адресу http://qref.sourceforge.net/Debian/. Проект размещается на сайте http://qref.sourceforge.net/, где данный документ доступен для скачивания в форматах "просто текст", HTML, PDF, SGML и PostScript. 1.2. Соглашения, принятые в документе ------------------------------------- Этот "Справочник по Debian" предоставляет информацию путем коротких скриптов для командного интерпретатора Bash. Используются следующие соглашения: # команда от имени пользователя root $ команда от имени обычного пользователя ... описание действия Дополнительную информацию по командному интерпретатору Bash смотрите в раздел 13.2.1, `Bash -- _GNU_ standard interactive shell'. Ссылки на: * _Unix man_-страницу даются в форме bash(1). * страницу _GNU TEXINFO_ даются в форме `info libc'. * _книгу_ даются в форме _Язык программирования Си_. * _URL_ даются в форме http://www.debian.org/doc/manuals/debian-reference/. * _файл_ в системе даются форме `/usr/share/doc/Debian/reference/'. Используются следующие абревиатуры: * _LDP_: Linux Documentation Project (проект документации системы Linux) (http://www.tldp.org/) * _DDP_: Debian Documentation Project (проект документации системы Debian) (http://www.debian.org/doc/) В этом справочнике для документов из LDP даются только адреса URL, хотя они (документы) могут быть получены в виде пакетов и установлены в каталог `/usr/share/doc/HOWTO/'. Смотрите раздел 15.1, `References'. 1.3. Примеры скриптов --------------------- Примеры скриптов доступны в каталоге examples subdirectory (http://www.debian.org/doc/manuals/debian-reference/examples/), устанавливаемые в `/usr/share/doc/Debian/reference/'; для скрытых файлов точка в начале имени файла заменяется на подчеркивание "_". Когда имеется несколько альтернативных примеров скрипта, то добавляется добавочное расширение имени файла. 1.4. Базовая установка ---------------------- Если систему установлена с минимальным количеством пакетов, то нужно выполнить следующую последовательность команд для установки некоторых нужных пакетов и ключевых документов: # 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 ------------------------------ Релизы Debian бывают трех видов : * `stable' (стабильный) : Хорош для установки на рабочий сервер. Скучноват для рабочей станции (WS). Смотрите раздел 2.1.3, `Дистрибутив `stable''. * `testing' (тестируемый): Хорош для установки на рабочую станцию. Смотрите раздел 2.1.4, `Дистрибутив `testing''. * `unstable' (нестабильный): Не стоит слепо устанавливать. Смотрите раздел 2.1.5, `Дистрибутив `unstable''. Изучайте ключевой лист рассылки `debian-devel-announce@lists.debian.org' на предмет изменения статуса Debian. В марте 2002 этим трем версиям релизов соответствовали кодовые имена Potato (рабочий), Woody (бета-тест, достаточно стабилен при приближению к выпуску), и Sid (альфа-тест). В августе 2002 после выхода Woody эти имена релизов стали соответствовать Woody (рабочий), Sarge (бэта-тест, достаточно современен некоторое время), и Sid (вечный альфа-тест). Когда пакеты в `unstable' не имеют критических для выпуска (RC) ошибок в течение недели или больше, то они автоматически переходят в `testing'. Смотрите раздел 2.1, `Архивы Debian'. Существует два подхода, чтобы позволить вам работать на самых последних версиях ПО Debian: * Глава 5, `Обновление до дистрибутива `testing'' (в основном для рабочих станций) * раздел 6.4.10, `Портирование пакета в систему на базе `stable'' (в основном для серверов) Использование `testing'-дистрибутива Debian имеет побочный эффект, выражающийся в очень медленном исправлении ошибок, связанных с безопасностью, в ПО дистрибутива. Имейте это в виду. Если Вы смешиваете виды релизов Debian, то использование частей `testing' или `unstable' в системе на базе `stable' приведет к нежелательному вытягиванию многих ключевых пакетов из `testing' или `unstable', которые могут содержать ошибки. Имейте в виду и это. Использование `testing' или `unstable' дистрибутивов Debian увеличивает риск столкнуться с серьезными ошибками. Этого можно избежать путем развертывания бутового загрузчика с возможностью выбора более стабильного дистрибутива Debian, или использования программы `chroot' для более стабильного дистрибутива (описано в раздел 8.6.34, ``chroot''). Это позволит выполнить одновременно разные виды Debian на разных консолях. После разъяснения основ дистрибутивов Debian в Глава 2, `Основы Debian', я представлю некоторую базовую информацию, помогающую Вам жить счастливо с самым последним ПО, взяв преимущества Debian-дистрибутивов `testing' и `unstable'. Нетерпеливым можно сразу перейти к раздел 6.3, `Команды выживания в системе Debian'. Счасливых обновлений! ------------------------------------------------------------------------------- 2. Основы Debian ---------------- Эта секция обеспечивает основную информацию по системе Debian для пользователей. За авторитетной информацией обращайтесь к документам: * Руководство по политике Debian * Руководство по созданию пакетов в Debian * Справочник Debian-разработчика * Руководство начинающего Debian-мейнтейнера ссылки на которые приведены в раздел 15.1, `References'. Если вы ищете менее детализированные описания (в форме HOW-TO), переходите к главе Глава 6, `Управление пакетами в Debian' или другие соответствующие главы. Эта статья основана на документах, взятых из "Debian FAQ", тщательным образом реорганизованного в форму введения для обычного администратора системы Debian. 2.1. Архивы Debian ------------------ 2.1.1. Структура каталогов -------------------------- Программное обеспечение, сформированное в debian-пакеты, доступно в одной из нескольких древовидных структур каталогов на каждом зеркальном сайте Debian Debian mirror site (http://www.debian.org/mirror/) по протоколам FTP или HTTP. Следующие каталоги могут быть найдены на каждом зеркале Debian в каталоге `debian': `dists/': Этот каталог содержит "дистрибутивы" и используется для канонического пути для доступа к имеющимся (в настоящее время) пакетам в релизах и пре-релизах Debian. Некоторые старые пакеты и файлы `Packages.gz' могут быть до сих пор и здесь. `pool/': Это новое физическое расположение всех пакетов релизов и пре-релизов Debian. `tools/': DOS-утилиты для создания загрузочных дискет, разбиения вашего жесткого диска, сжатия/распаковки файлов и загрузки Linux. `doc/': Это основная документация по Debian, такая как FAQ, инструкции по системе оповещения об ошибках и т.д. `indices/': The Maintainers file and the override files. `project/': материалы, в основном, для разработчиков. Это: `project/experimental/': Этот каталог содержит пакеты и инструменты, которые находятся в разработке или даже в альфа-тестировании. Пользователи не должны использовать эти пакеты, так как они могут быть опасны и вредны даже для достаточно опытных. `project/orphaned/': Здесь находятся пакеты, которые 'осиротели' (т.е. остались без мейнтейнера) и были изъяты из дистрибутива. 2.1.2. Дистрибутивы Debian -------------------------- Обычно существует три дистрибутива Debian в каталоге `dists'. Это дистрибутив `stable', дистрибутив `testing' и дистрибутив `unstable'. Иногда может быть еще и `frozen'. Каждый дистрибутив определяется как символическая ссылка на реальный каталог под кодовым именем в каталоге `dists'. 2.1.3. Дистрибутив `stable' --------------------------- Пакеты `stable' дистрибутива Debian Sarge (3.1r0) записываются в каталог `stable' (символическая ссылка на каталог `sarge/'): * `stable/main/': Этот каталог содержит пакеты, которые формально составляют самый свежий релиз системы Debian. Эти пакеты полностью отвечают Рекомендациям об открытом ПО в Debian (DFSG) (http://www.debian.org/social_contract#guidelines) (смотрите также файл `/usr/share/doc/debian/social-contract.txt' из пакета `debian-doc') и являются полностью свободными к использованию и распространению. * `stable/non-free/': Этот каталог содержит пакеты, распространение которых ограничено требованиями ряда копирайтов. Например, некоторые пакеты имеют лицензию, которая запрещает коммерческую дистрибуцию. Другие могут распространяться в составе дистрибутива, но в действительности являются shareware и несвободным ПО. Лицензия каждого из этих пакетов должна быть изучена и учтена перед тем, как пакет будет включен в дистрибутив на CDROM и т.д. * `stable/contrib/': Этот каталог содержит пакеты, которые сами по себе являются свободными (отвечают DFSG) и могут _свободно распространяться_, но неким образом зависят от _несвободного_ пакета из non-free секции. Теперь, в дополнение к выше указанным расположениям пакетов, пакеты физически располагаются в каталоге `pool' (раздел 2.1.10, `Каталог `pool''). Текущее состояние по найденным ошибкам в `stable' дистрибутиве отображается на странице Stable Problems (http://ftp-master.debian.org/testing/stable_probs.html). 2.1.4. Дистрибутив `testing' ---------------------------- Пакеты для дистрибутива `testing', Debian Etch, записываются в `testing' каталог (символическая ссылка на `etch/') после того, как они пройдут некоторое тестирование в `unstable'. Физически пакеты располагаются в каталоге `pool'' (раздел 2.1.10, `Каталог `pool''). В каталоге `testing/' также имеются подкаталоги `main', `contrib' и `non-free', которые выполняют те же функции, что и в дистрибутиве `stable/'. Для всех архитектур, под которые собираются пакеты дистрибутива `testing', обеспечивается синхронность версий, также эти пакеты не должны иметь зависимостей, которые могли бы привести к невозможности их удалить, и должны иметь меньше критических ошибок, чем версия, находящаяся сейчас в `unstable'. Таким образом, мы надеемся, что `testing' всегда близок, чтобы стать кандидатом в релиз. Подробности о механизме тестирования смотрите в документе http://www.debian.org/devel/testing. Самое последнее состояние дистрибутива `testing' публикуется на этих сайтах: * update excuses (http://ftp-master.debian.org/testing/update_excuses.html) * проблемы testing (http://ftp-master.debian.org/testing/testing_probs.html) * критические ошибки (http://bugs.debian.org/release-critical/) * ошибки в базовой системе (http://bugs.qa.debian.org/cgi-bin/base.cgi) * ошибки в стандартных пакетах и пакетах задач (http://bugs.qa.debian.org/cgi-bin/standard.cgi) * замечания по другим ошибкам и их исправлениям (http://bugs.qa.debian.org/) 2.1.5. Дистрибутив `unstable' ----------------------------- Пакеты для `unstable' дистрибутива, который всегда имеет кодовое имя "Sid", сохраняются в каталоге `unstable' (символическая ссылка на `sid/') сразу после того, как их закачают в Debian-архив и они находятся там до их перемещения в `testing/'. Сами пакеты размещаются в каталоге `pool' (раздел 2.1.10, `Каталог `pool''). В каталоге `unstable' также существуют подкаталоги `main', `contrib' и `non-free', которые выполняют те же функции, что и в дистрибутиве `stable/'. Дистрибутив `unstable' содержит снимок разрабатываемой в настоящий момент системы. Вы можете использовать и тестировать эти пакеты, осознавая состояние их готовности. Преимущество от использования дистрибутива `unstable' в том, что вы всегда используете самое последнее ПО из проекта Debian --- оно является и самым нестабильным. Текущее состояние ошибок в дистрибутиве `unstable' отображается на странице Unstable Problems (http://ftp-master.debian.org/testing/unstable_probs.html). 2.1.6. Дистрибутив `frozen' --------------------------- Когда дистрибутив `testing' достаточно созреет, он замораживается, означая тем самым, что новый код более не принимается, а только исправления ошибок, если таковые необходимы. Также, создается новое тестируемое дерево в каталоге `dists' c новым кодовым названием. Замороженный дистрибутив проходит в течение нескольких месяцев фазу тестирования с нерегулярными обновлениями и глубокими заморозками, называемыми тест-циклами. Мы ведем запись ошибок в замороженном дистрибутиве, которые могут задержать какой-либо пакет от прохождения его в релиз или ошибок, которые могут задержать весь релиз от выхода. В момент, когда количество ошибок понизится до максимально приемлемого значения, `frozen' становится стабильным, он выпускается, а предыдущий стабильный дистрибутив становится `obsolete' (устаревшим)( и переносится в архив). 2.1.7. Кодовые имена дистрибутивов Debian ----------------------------------------- Реальные имена каталогов в каталоге `dists', такие как `sarge/' и `etch/' являются просто кодовыми именами. Когда дистрибутив Debian находится в стадии разработки, он не имеет номера версии, зато имеет кодовое имя. Такое назначение кодовых имен упрощает зеркалирование дистрибутива Debian(если реальное имя каталога `unstable' менялось бы на `stable/' (дистрибутив стал стабильным - прим. переводчика), то пришлось бы скачивать повторно большое количество файлов). В настоящее время `stable/' - это символическая ссылка на каталог `sarge/', а `testing/' - ссылка на `etch/'. Это означает, что `Sarge' является текущим стабильным дистрибутивом, а `Etch' находится в стадии тестирования. `unstable/' - это постоянная символическая ссылка на каталог `sid/', так как Sid является всегда нестабильным дистрибутивом. 2.1.8. Кодовые имена прошлого ----------------------------- Вот кодовые имена, которые уже использовались: "Buzz" для релиза 1.1,"Rex" для релиза 1.2, "Bo" для релизов 1.3.x, "Hamm" для релиза 2.0, "Slink" для релиза 2.1 и "Potato" для релиза 2.2. 2.1.9. Источник кодовых имен ---------------------------- Имена дистрибутивов до сих пор были именами персонажей из фильма _Toy Story_ от студии Pixar. * _Buzz_ (Buzz Lightyear) был космонавтом * _Rex_ был тиранозавром, * _Bo_ (Bo Peep) была девочкой, ухаживающей за овечкой, * _Hamm_ был piggy bank * _Slink_ (Slinky Dog) был игрушечной собакой, * _Sarge_ был предводителем армии людей Зеленого Пластика, * _Potato_ был, конечно, мистером Картошечья Голова, * _Woody_ был ковбоем, * _Sid_ был парнем по-соседству, который сломал игрушки. 2.1.10. Каталог `pool' ---------------------- Исторически пакеты хранились в каталоге дистрибутива, для которого они были созданы. Сам каталог дистрибутива находился в каталоге `dists'. Это вызывало различного рода проблемы, в том числе и большой расход пропускной способности канала на зеркалирующих серверах, когда производились большие изменения. Теперь пакеты хранятся в большом "пуле", структурированном в соответствии с именем исходного пакета. Чтобы сделать пул управляемым, он поделен на секции (`main', `contrib', и `non-free') и далее по первым буквам имени исходного пакета. Эти каталоги содержат несколько файлов: бинарные пакеты для каждой архитектуры и пакеты с исходными текстами, на основе которых эти бинарные пакеты были собраны. Вы можете выяснить, где размещается каждый пакет, выполнив команду типа `apt-cache showsrc <имя_моего_пакета>' и посмотрев на строку "Directory:". Например, пакеты `apache' хранятся в `pool/main/a/apache/'. Так как существует очень большое количество пакетов библиотек `lib*', то они обрабатываются несколько иначе. Например, пакеты `libpaper' хранятся в `pool/main/libp/libpaper/'. Каталоги `dists' все еще используются индексными файлами для программ типа `apt'. Также, на момент написания этого документа, старые дистрибутивы еще не сконвертированы использовать пулы, и поэтому в поле Directory заголовка пакета Вы увидите пути, содержащие имена дистрибутивов типа `potato' или `woody'. Обычно Вам не нужно беспокоиться об этом, так как новая программа `apt' и, вероятно, старые `dpkg-ftp' (смотрите раздел 2.3.1, `Способы обновления системы Debian') обработают это без проблем. Если Вам нужно больше информации, смотрите RFC: Реализация пула пакетов (http://lists.debian.org/debian-devel-announce/2000/debian-devel-announce-200010/msg00007.html). 2.1.11. Историческая справка относительно Sid --------------------------------------------- Когда не существовало современного Sid, организация сайта с архивом Debian имела одни большой недостаток: существовало предположение, что когда создавалась архитектура в текущем `unstable/', она могла быть также выпущена, когда сам дистрибутив переходил в фазу релиза или `stable'. Для множество архитектур это было неверным, что приводило к необходимости переноса соответствующих каталогов в момент релиза (в `unstable' - прим. пер.). Такие перемещения были непрактичными из-за повышенного расхода пропускной способности канала. Администраторы архива решали эту проблему в течение нескольких лет путем помещения бинарных файлов для архитектур, которая не готова к выпуску, в специальный каталог, называемый `sid'. Когда такая архитектура входила в фазу релиза, то в первое время существовала ссылка из текущего `stable/' на `sid/', and from then on they were created inside the `unstable/'tree as usual. Это расположение вводило в заблуждение пользователей. С приходом пула пакетов (смотрите раздел 2.1.10, `Каталог `pool'') в процессе разработки дистрибутива Woody, бинарные пакеты начали хранить в каноническом месте пула вне зависимости от дистрибутива, и таким образом выпуск дистрибутива больше не вызывает повышенного расхода пропускной способности канала на зеркалах (существует, однако,_a lot of gradual bandwidth consumption throughout the development process_). 2.1.12. Пакеты, закаченные в `incoming/' ---------------------------------------- Закаченные пакеты, находящиеся в http://incoming.debian.org/ проходят проверку для гарантии того, что они в действительности отправлены разработчиком Debian (в противном случае, т.е. случае закачки пакета лицом, не являющимся мейнтейнером - закачка NMU, пакет помещается в под-каталог `DELAYED'). Один раз в день пакеты из `incoming/' перемещаются в `unstable/'. В крайних случаях Вы можете пожелать установить пакеты из `incoming/' до того, как они достигнут `unstable/'. 2.1.13. Доступ к старым пакетам ------------------------------- В то время, как самые последние дистрибутивы Debain хранятся в каталоге `debian' на каждом зеркале Debian (http://www.debian.org/mirror/), архивы старых дистрибутивов типа Slink хранятся по адресу http://archive.debian.org/ или в каталоге `debian-archive' на каждом зеркале Debian. Пакеты старых `testing' и `unstable' дистрибутивов могут быть найдены по адресу http://snapshot.debian.net/. 2.1.14. Секции архитектрур -------------------------- Внутри каждого основного дерева каталогов (`dists/stable/main', `dists/stable/contrib', `dists/stable/non-free', `dists/unstable/main/', и пр.), бинарные пакеты размещаются в под-каталогах, чьи имена обозначают архитектуру процессора, под которую эти пакеты были собраны. * `binary-all/' - для архитектурно-независимых пакетов. Сюда относятся, например, скрипты на языке Perl, документация. * `binary-/' - для пакетов, которые могут исполняться на определенной аппаратной платформе. Обратите внимание, что бинарные пакеты дистрибутивов `testing' и `unstable' теперь размещаются не в описанных каталогах, а каталоге верхнего уровня `pool'. Индексные файлы типа (`Packages' и `Packages.gz') тем не менее хранятся для обратной совместимости. В каждом дистрибутиве для поддерживаемых аппаратных архитектур существуют Release Notes. Их можно найти на странице Release Notes соответствующего дистрибутива: stable (http://www.debian.org/releases/stable/releasenotes) и testing (http://www.debian.org/releases/testing/releasenotes). 2.1.15. Исходный код -------------------- Для всех компонентов системы Debian имеется исходный код. Более того, условия лицензий большинства программ в системе _требуют_, чтобы исходный код распространялся вместе с программой, либо был бы способ его получить. Обычно исходный код располагается в каталогах `source', находящиеся по-соседству с каталогами архитектур, или, с недавнего времени, в каталоге `pool' (смотрите раздел 2.1.10, `Каталог `pool''). Чтобы получить исходный код пакета, не вникая в структуру архива Debian, используйте команду `apt-get source '. Некоторые пакеты, например `pine', доступны только в виде исходных текстов из-за ограничений лицензии. (Недавно был представлен пакет `pine-tracker' для облегчения установки Pine.) Процедуры, описанные в раздел 6.4.10, `Портирование пакета в систему на базе `stable'' и раздел 13.9, `Packaging' описывают способы ручной сборки пакетов. Исходный код для пакетов из каталогов `contrib' и `non-free', может отсутствовать, так как пакеты из этих каталогов формально не являются часть системы Debian. 2.2. Система управления пакетами в Debian ----------------------------------------- 2.2.1. Обзор пакетов Debian --------------------------- Пакеты, как правило, содержат все необходимые файлы для реализации какого-либо набора команд или возможностей. Существует два типа пакетов Debian: * _Бинарные пакеты_, которые содержат исполняемые и конфигурационные файлы, страницы руководств в формате man/info, информацию о копирайтах и другую документацию. Эти пакеты распространяются в специальном архивном формате Debian (смотрите раздел 2.2.2, `Формат Debian пакета') и обычно выделяются наличием `.deb' расширения файлов. Бинарные пакеты могут быть распакованы при помощи утилиты Debian `dpkg'; подробности приведены в ее man-странице. * _Пакеты с исходным текстом_, которые состоят из `.dsc' файла, описывающего пакет (включая имена далее идущих файлов), файла `.orig.tar.gz', который содержит немодифицированный исходный код в формате tar и упакованный программой gzip, и обычно файл `.diff.gz', который содержит изменения исходного текста, специфичные для Debian. Утилита `dpkg-source' упаковывает и распаковывает пакеты Debian с исходными текстами; подробности смотрите в ее man-странице. Установка программного обеспечения при помощи пакетной системы использует так называемые "зависимости", которые тщательно спроектированы мейнтейнерами пакета. Эти зависимости задокументированы в файле `control', связанным с каждым пакетом. Например, пакет, содержащий компилятор GNU C (`gcc') "зависит" от пакета `binutils', который включает в себя компоновщик и транслятор. Если пользователь попытается установить `gcc' без предварительной установки `binutils', система управления пакетами (dpkg) выведет сообщение об ошибке, что также необходима установка `binutils', и прервет установку `gcc'. (Однако, это поведение может быть изменено по требованию пользователя; смотрите dpkg(8).) Дополнительные подробности смотрите раздел 2.2.8, `Зависимости пакетов' ниже. Инструменты для работы с пакетами Debian можно использовать для того, чтобы: * манипулировать и управлять пакетами или их частями, * помочь пользователю разбить пакеты, которые нужно передать на носителях ограниченного размера (флоппи-диски), * помочь разработчикам в создании архивов пакетов, * помочь пользователям в установке пакетов, размещающихся на удаленном сайте архива Debian. 2.2.2. Формат Debian пакета --------------------------- "Пакет" Debian или архивный файл Debian содержит исполняемые файлы, библиотеки и документацию, ассоциированные с некоторым программмным комплектом или набором связанных программ. Обычно архивный файл Debian имеет имя файла с расширением `.deb'. [1] Внутренние подробности этого формата бинарного пакета Debian описывются на deb(5) man-странице. Так как внутренний формат может изменяться (от релиза к релизу Debian), всегда используйте страницу dpkg-deb(1) для манипулирования `.deb' файлами. До дистрибутива Sarge включительно со всеми архивными файлами Debian можно работать стандартными командами Unix типа `ar' и `tar', даже когда не доступны команды `dpkg'. [1] Проект `debian-installer' ввел имена файлов пакетов, которые заканчиваются на `.udeb'. Коротко, это микро-`.deb' формат, который точно не следует политике Debian, не содержит документации и должен использоваться только `debian-installer', который является новым установщиком Debian, разработанным для Sarge. Формат файла `.udeb' идентичен формату `.deb'. Программа `udpkg', используемая для работы с `.udeb' пакетами имеет ограниченные возможности по сравнению с `dpkg' и меньше поддерживает связи пакетов. Разница в имени существует из-за того, что мейнтейнерам архива Debian не нравилось присутствие в архиве пакетов `.deb', которые не отвечали политике, поэтому для них было выбрано другое имя, чтобы подчеркнуть это и не допустить их непреднамеренную установку на рабочую систему. Пакеты `.udeb' используются на _initial_ ram-диске при установке базовой системы, только чтобы создать очень ограниченную систему Debian. 2.2.3. Соглашение об именах файлов Debian-пакетов ------------------------------------------------- Имена файлов пакетов Debian подчиняются следующему соглашению: _<НомерВерсии>-<номерDebianРевизии>.deb где является именем пакета. Для проверки можно определить имя пакета, связанное с некоторым архивным файлом (`.deb' file) одним из следующих способов: * Изучить файл "Packages" в каталоге дистрибутива на архивном сайте Debian. Этот файл содержит записи, описывающие каждый пакет; первое поле в них - это формальное имя пакета. * Использовать команду `dpkg --info .deb' (где и - номера версии и ревизии запрашиваемого пакета, соответственно). Команда отображает, помимо других данных, имя пакета, соответствующее изучаемому архивному файлу. Компонент - это номер версии, указанный разработчиком программы (upstream developer). Не существует стандарта о нумерации версий, поэтому они могут иметь различные форматы типа "19990513" или "1.3.8pre1". Компонент - это ревизионный номер Debian, который указывается разработчиком Debian (или частным пользователем, если он пожелал собрать пакет самостоятельно). Этот номер соответствует уровню ревизии пакета Debian, поэтому новый ревизионный номер обычно означает изменения в Debian makefile (`debian/rules'), файле Debian control (`debian/control'), скриптах установки или удаления (`debian/p*'), или конфигурационных файлах, используемых в пакете. 2.2.4. Сохранение текущей конфигурации -------------------------------------- Сохранение файлов настройки реализуется через механизм "conffiles" системы Debian. Файлы настройки (обычно размещаемые в `/etc/') указываются в файле `conffiles' системы пакетов Debian. Cистема управления пакетами гарантирует, что при обновлении пакета эти файлы не будут перезаписаны. When it is possible to configure the system without modifying files that belong to various Debian packages, it is usually a good idea not to modify them even if they are "conffiles". This ensures faster and smoother upgrade operations. Чтобы точно определить, какие файлы будут сохранены при обновлении пакета, выполните: dpkg --status и смотрите под строкой "Conffiles:". Подробности, связанные с содержимым Debian-файла `conffiles', представлены в руководстве по политике Debian, секция 11.7 (смотрите раздел 15.1, `References'). 2.2.5. Скрипты сопровождения Debian ----------------------------------- Скрипты сопровождения Debian это исполняемые скрипты, автоматически выполняемые перед или после установки пакета. Вместе с файлом `control', эти файлы являются частью секции "control" архивного файла Debian. В частности, такими файлами являются: preinst Этот скрипт выполняется до распаковки пакета, к которому он принадлежит, из архивного файла Debian (`.deb'). Многие "preinst" скрипты останвливают сервисы обновляемых пакетов до окончания установки или обновления (с последующим успешным выполнением скрипта "postinst"). postinst Этот скрипт обычно завершает конфигурирование пакета после его распаковки из архивного файла Debian (`.deb'). Часто скрипт "postinst" запрашивает у пользователя некоторую информацию и/или предупреждает пользователя что, если он принимает значения по умолчанию, то нужно будет не забыть переконфигурировать пакет, как это требуется. Многие скрипты "postinst" затем выполняют команды, необходимые для запуска или перезапуска сервиса после установки или обновления пакета. prerm Этот скрипт обычно останавливает какие-либо демоны (сервисы - прим. переводчика), связанные с пакетом. Он выполняется перед удалением файлов пакета. postrm Этот скрипт обычно модифицирует ссылки или другие файлы, связанные с пакетом, и/или удаляет файлы, созданные им. (Смотрите также раздел 2.2.7, `Виртуальные пакеты'.) В настоящее время все control-файлы могут быть найдены в каталоге `/var/lib/dpkg/info'. Файлы, относящиеся к пакету `foo' начинаются с имени "foo" и, соответственно, имеют расширение файла типа "preinst", "postinst", и так далее. Файл `foo.list' в этом каталоге описывет все файлы, установленные с пакетом `foo'. (Заметьте, что месторасположение этих файлов является внутренней особенностью программы `dpkg', и поэтому может меняться.) 2.2.6. Приоритеты пакетов ------------------------- В помощь системе управления пакетами каждому пакету Debian мейнтейнерами дистрибутива назначается приоритет _priority_. Приоритеты бывают: * _Required_ (требующиеся) пакеты, которые необходимы для правильного функционирования системы. Сюда относятся все инструменты, которые необходимы для исправления повреждений системы. Вы не должны удалять эти пакеты, иначе Ваша система может стать неработоспособной, и Вы даже не сможете использовать программу `dpkg', чтобы вернуть все назад. Системы с установленными только пакетами Required могут не соответствовать для решения большинства задач, но они имеет достаточно функций для того, чтобы позволить системному администратору загрузить и установить дополнительное программное обеспечение. * _Important_ (важные) пакеты должны быть найдены на любой Unix-подобной системе. Пакеты с таким приоритетом - это остальные пакеты, без которых система не будет нормально работать или не будет удобной. Сюда _не_ относятся пакеты типа Emacs, X11, TeX или любые другие крупные приложения. Эти пакеты составляют минимальную инфраструктуру. * _Standard_ (стандартные) пакеты являются стандратными на любой Linux системе, включая разумно небольшую, но не ограниченную систему текстового режима. Это то, что устанавливается по умолчанию, если пользователь ничего не выбрал. "Standard" не включает многих крупных приложений, но уже включает Emacs (Это больше часть инфрастурктуры, чем приложение.) и разумное подмножество систем Tex и LaTeX (разумное настолько, чтобы не требовать X11). * _Optional_ (опциональные) пакеты включает все те, которые вы можете захотеть установить, даже если с ними не знакомы, и если не имеете специальных требований. Это включает X11, полностью TeX и множество приложений. * _Extra_ пакеты, которые или конфликтуют с другими более высокими приоритетами, несут малую пользу для пользователей, с ними незнакомыми, или имеют специальные требования, делающие их неподходящими к "Optional". Пожалуйста, заметьте разницу между "Priority: required", "Section: base" и "Essential: yes" в описании пакета. "Section: base" означает, что пакет устанавливается перед чем бы то нибыло на новой системе. Большинство пакетов с "Section: base" имеют приоритет "Priority: required" или "Priority: important", и многие из них помечены как "Essential: yes". "Essential: yes" означает, что при удалении этого пакета из системы необходимо указать дополнительную форсирующую опцию системе управления пакетами `dpkg'. Например, пакеты `libc6', `mawk' и `makedev' являются пакетами с приоритетом "Priority: required" из секции "Section: base", но не являются "Essential: yes". 2.2.7. Виртуальные пакеты ------------------------- Виртуальный пакет - это общее имя, употребляемое к любому из пакетов некой группы, все пакеты из которой обеспечивают подобную базовую функциональность. Например, пакеты `tin' и `trn' являются программами для чтения news-конференций, и любая из них должна, следовательно, удовлетворять зависимость программы, требующей для нормального своего функционирования установленной программы чтения news-конференций. Эти пакеты, таким образом, обеcпечивают "виртуальный пакет", называемый `news-reader'. Подобным образом, оба пакета `exim' и `sendmail' обеспечивают функциональность почтового транспортного агента. Следовательно, они предоставляют виртуальный пакет `mail-transport-agent'. Если один из них установлен, то любая программа, зависящая от наличия установленного почтового транспортного агента будет удовлетворена существованием этого виртуального пакета. Debian имеет такой механизм, что если в системе установлено более одного пакета, предоставляющего виртуальный пакет, то системный администратор может установить один из них, как предпочитаемый. Для этого используется команда `update-alternatives', описываемая далее раздел 6.5.3, `Alternative commands'. 2.2.8. Зависимости пакетов -------------------------- Система пакетов в Debian имеет ряд "зависимостей" пакетов, которые предназначены для того, чтобы показать (одним признаком) уровень, на котором программа A может работать независимо от существования программы B в данной системе: * Пакет A _зависит_ (depends) от пакета B, если пакет B безусловно должен быть установлен для выполнения пакета A. В некоторых случаях, пакет A зависит не только от пакета B, а еще и от конкретной версии пакета B. В этом случае зависимость от версии пакета означает нижний предел, в том смысле, что пакет А зависит от любой версии пакета B, не старее указанной версии. * Пакет A _рекомендует_ (recommends) пакет B, если мейнтейнер пакета решил, что большинство пользователей не захотят иметь пакет А без функциональности, предоставляемой пакетом B. * Пакет A _предлагает_ (suggests) пакет B, если пакет B содержит файлы, относящиеся к (или обычно улучшающие) функциональности пакета A. * Пакет А _конфликтует_ (conflicts) с пакетом B, когда пакет A не будет работать, если пакет B установлен в системе. Более частый случай конфликта, когда пакет A содержит файлы, которые являются улучшением тех, что находятся в пакете B. Статус "конфликтует" часто комбинируется с "заменяет". * Пакет A _заменяет_ (replaces) пакет B, когда установленные файлы пакета B удаляются и, в некоторых случаях перезаписываются файлами пакета A. * Пакет A _обеспечивает_ (provides) пакет B, когда все файлы и функциональность пакета B включается в состав пакета A. Этот механизм предоставляет для пользователей с ограниченным дисковым пространством способ получить только реально нужную им часть пакета A. Более подробную информацию об использовании каждого из этих терминов можно найти в _Руководстве по созданию пакетов_ и в _Руководстве по политике_. Заметьте, что программа `dselect' имеет более тонко настроенный контроль над пакетами, указываемыми зависимостями вида _рекомендует_ и _предлагает_, нежели программа `apt-get', которая просто вытаскивает все пакеты, указанные в зависимости _зависит_ и не трогает все пакеты, указанные в зависимостях пакета _рекомендует_ и _предлагает_. Обе программы в современном виде используют за основу систему APT. 2.2.9. Значение "pre-depends" ----------------------------- "Pre-depends" - специальный вид зависимости. В случае обычного пакета программа `dpkg' распаковывает архивный файл пакета (т.е., файл `.deb') вне зависимости от существования в системе файлов, от которых зависит данный пакет. Распаковка же, по существу, означает, что программа `dpkg' извлечет из архива `.deb' файлы, подлежащие установке на Вашу файловую систему и разместит их на своих местах. Если данный пакет _зависит_ (depends) от наличия неких других пакетов на Вашей системе, то программа `dpkg' откажется завершить установку (выполняя действие "configure") до тех пор, пока требуемые пакеты не будут установлены. Однако, существуют некоторые пакеты, даже распаковка которых при помощи программы `dpkg' будет отменена, пока не будут разрешены определенные зависимости. Считается, что такие пакеты критично зависят ("pre-depend") (а как еще перевести "pre-depends? - прим. переводчика) от присутствия некоторых других пакета(ов). Проект Debian предоставил этот механизм, чтобы поддержать безопасное обновление систем с формата `a.out' на ELF формат, когда был критичен _порядок_, в котором пакеты распаковываются. Бывают еще другие ситуации крупных обновлений, где этот метод полезен, например, в случае пакетов с приоритетом "Required" и их зависимостями от libc. Замечу, что более детальная информация об этом может быть найдена в _Руководстве по созданию пакетов_. 2.2.10. Статус пакета --------------------- Статус пакета может быть "unknown" (неизвестный), "install" (установить), "remove" (удалить), "purge" (очистить) или "hold" (удержать). Эти предписывающие флаги показывают то, что пользователь желает сделать с пакетом (делая свой выбор в секции "Select" программы `dselect', или прямо вызывая программу `dpkg'). Смысл эти значений: * _unknown_ (неизвестный) - пользователь никогда не показывал свою потребность в пакете. * _install_ (установить) - пользователь желает, чтобы пакет был установлен или обновлен. * _remove_ (удалить) - пользователь желает, чтобы пакет был удален, но не желает удалять никакие конфигурационные файлы. * _purge_ (очистить) - пользователь желает, чтобы пакет был полностью удален, включая его конфигурационные файлы. * _hold_ (удержать) - пользователь желает, чтобы этот пакет не обрабатывался, т.е. он хочет сохранить его текущую версию с его текущим состоянием, каким бы оно не было. 2.2.11. Удержание пакетов от обновления --------------------------------------- Существует два механизма для удержания пакета от обновления: через программу `dpkg' или, начиная с Woody, через систему APT. В случае с `dpkg', сначала экспортируем список выбора пакетов: dpkg --get-selections \* > Затем отредактируем получившийся файл `', изменив строку, содержащую пакет, который хотим удержать, например `libc6', следующим образом: libc6 install заменяем на: libc6 hold Сохраням файл и перезагружаем его в базу данных `dpkg' таким способом: dpkg --set-selections < Или, если вы знаете имя пакета для удержания, просто выполните: echo libc6 hold | dpkg --set-selections Эта процедура удерживает пакеты в процессе установки каждого пакета. Тот же самый эффект можно получить, используя программу `dselect'. Просто войдите на экран [S]elect, найдите пакет, который желаете удержать в его настоящем состоянии и нажмите клавишу `=' (или `H'). Изменения войдут в силу сразу после выхода из экрана [S]elect. Система APT в дистрибутиве Woody имеет новый альтернативный механизм для удержания пакетов во время процесcа выборки архива, используя `Pin-Priority'. Смотрите man-страницу apt_preferences(5), а также http://www.debian.org/doc/manuals/apt-howto/ или пакет `apt-howto'; глава раздел 6.2.8, `Обзор файла `/etc/apt/preferences'' тоже содержит краткое объяснение. 2.2.12. Пакеты с исходным текстом --------------------------------- Пакеты с исходным текстом располагаются в каталоге `source', либо Вы можете скачать их вручную или использовать APT apt-get source чтобы их получить (смотрите man-страницу apt-get(8), чтобы настроить APT для этого). 2.2.13. Сборка бинарного пакета из пакета с исходным текстом ------------------------------------------------------------ Чтобы скомпилировать исходный текст пакета `', Вам нужны будут все следующие файлы - `.dsc', `.tar.gz' и `.gz' (заметьте, что не существует файла `.diff.gz' для самого пакета Debian). Как только Вы их получите, и если у Вас установлен пакет `dpkg-dev', команда $ dpkg-source -x .dsc распакует пакет с исходным текстом в каталог под именем `'. Вызовите следущую команду, чтобы собрать бинарный пакет: $ cd foo-версия $ su -c "apt-get update ; apt-get install fakeroot" $ dpkg-buildpackage -rfakeroot -us -uc Далее, # su -c "dpkg -i ../.deb" чтобы установить только что собранный бинарный пакет. Смотрите раздел 6.4.10, `Портирование пакета в систему на базе `stable''. 2.2.14. Создание новых пакетов Debian ------------------------------------- За детальной информацией по созданию новых пакетов читайте _Руководство новым мейнтейнерам (New Maintainers' Guide)_, имеющееся в пакете `maint-guide' или по адресу http://www.debian.org/doc/manuals/maint-guide/. 2.3. Обновление системы Debian ------------------------------ Одной из задач Debian является обеспечение совместимого пути обновления и надежного процесса обновления, и мы всегда делали все от нас зависящее по созданию таких новых релизов, которые способны гладко обновить предыдущие. Пакеты предупредят пользователя о важных моментах в процессе обновления и, зачастую, предоставят решение возможных проблем. Вам также нужно изучить документ Release Notes, который описывает подробности конкретных обновлений, размещающийся на всех компакт-дисках с Debian, или по адресам http://www.debian.org/releases/stable/releasenotes и http://www.debian.org/releases/testing/releasenotes. Практическое руководство по обновлению представлено в Глава 6, `Управление пакетами в Debian'. Эта секция лишь описывает основные принципы. 2.3.1. Способы обновления системы Debian ---------------------------------------- Всегда можно просто, используя анонимный доступ по FTP или через программу `wget' зайти в архив Debian, внимательно изучить каталоги, найти желаемый файл, скачать его, и, наконец, установить его при помощи программы `dpkg'. (Заметьте, что программа `dpkg' установит файлы обновления на свое место даже на работающей системе.) Иногда, однако, обновленный пакет потребует установки новой обновленной версии еще одного пакета, и пока он не будет установлен, установка не будет завершена. Много людей сочли, что этот ручной способ расходует массу времени, так как Debian развивается очень быстро --- обычно каждую неделю закачивается множество новых пакетов. И их число увеличивается перед новым главным релизом. Чтобы иметь дело с таким потоком, пользователи предпочитают использовать автоматизированную программу для обновления. Для этого существует несколько специальных инструментов управления пакетами. 2.3.2. Обзор инструментов управления пакетами --------------------------------------------- Система управления пакетами в Debian имеет две цели: манипулирование собственно файлами пакетов и выборка файлов пакетов из архива Debian. Программа `dpkg' выполняет первую задачу, система APT and программа `dselect' последнюю. 2.3.3. Программа `dpkg' ----------------------- Это основная программа для манипулирования файлами пакетов; за полным описанием обращайтесь к man-странице dpkg(8). Программа `dpkg' идет вместе с несколькими простыми дополнительными программами: * `dpkg-deb': Манипулирует файлами `.deb'. dpkg-deb(1) * `dpkg-ftp': Старая команда для выборки файлов пакетов. dpkg-ftp(1) * `dpkg-mountable': Старая команда для выборки файлов пакетов. dpkg-mountable(1) * `dpkg-split': Разбивает большой пакет на более мелкие файлы. dpkg-split(1) Программы `dpkg-ftp' и `dpkg-mountable' были замещены введением системы APT. 2.3.4. Система APT ------------------ Система APT (Улучшенный инструмент для работы с пакетами) представляет собой улучшенный интерфейс к системе управления пакетами в Debian, и состоит из нескольких программ, обычно начинающихся со префикса "apt-". Программы `apt-get', `apt-cache' и `apt-cdrom' - это инструменты командой строки для манипулирования пакетами. Они также функционируют как пользовательские программы-платформы (back end) для других инструментов, таких как `dselect' и `aptitude'. Для дополнительной информации установите пакет `apt' и прочтите соответствующие man-страницы: apt-get(8), apt-cache(8), apt-cdrom(8), apt.conf(5), sources.list(5), apt_preferences(5) (Woody), а также `/usr/share/doc/apt/guide.html/index.html'. Альтернативным источником информации является страница APT HOWTO (http://www.debian.org/doc/manuals/apt-howto/). Она может быть установлена из пакета `apt-howto', файл `/usr/share/doc/Debian/apt-howto/'. Команды `apt-get upgrade' и `apt-get dist-upgrade' обновляют только пакеты, описываемые как "Depends:" и просматривают все пакеты с зависимостями "Recommends:" и "Suggests:". Чтобы избежать этого, используйте программу `dselect'. 2.3.5. Программа `dselect' -------------------------- Это программа представляет собой управляемый с помощью меню интерфейс к системе управления пакетами в Debian. Она особенно полезна в первых установках или крупномасштабных обновлениях. Смотрите раздел 6.2.3, `Программа `dselect''. Для дополнительной информации установите пакет `install-doc' и изучите файл `/usr/share/doc/install-doc/dselect-beginner.en.html' или страницу по адресу dselect Documentation for Beginners (http://www.debian.org/releases/woody/i386/dselect-beginner). 2.3.6. Обновление работающей системы ------------------------------------ Ядро (файловая система) в Debian системах поддерживает замену файлов даже во время их использования. Мы также предоставляем программу, называемую `start-stop-daemon', которая используется для запуска демонов на этапе загрузки или для их останова, когда изменяется уровень исполнения ядра (например, при переходе из многопользовательского в однопользовательский режим или в состояние "останов" /halt/). Та же программа используется установочными скриптами, когда новый пакет содержит устанавливаемый демон, для остановки работающих демонов и их рестарта, если это необходимо. Заметьте, что система Debian не требует использования однопользовательского режима для обновления работающей системы. 2.3.7. Скаченные и кэшированные архивные файлы `.deb' ----------------------------------------------------- Если Вы вручную скачали файлы пакетов на Ваш жесткий диск (что, кстати, совершенно не нужно; смотрите описание программ `dpkg-ftp' или APT выше), то после установки пакетов Вы можете удалить файлы `.deb' из системы. Если же используется система APT, то эти файлы кэшируются в каталоге `/var/cache/apt/archives'. Вы можете стереть их после установки (командой `apt-get clean') или скопировать их в каталог `/var/cache/apt/archives' другой машины с целью экономии входящего трафика при последующих установках. 2.3.8. Журналирование (record-keeping) процесса обновления ---------------------------------------------------------- Программа `dpkg' хранит записи о пакетах, которые были распакованы, сконфигурированы, удалены, и/или очищены, но не хранит (в настоящее время) журнал действий пользователя на терминале во время работы с пакетами. Самый простой путь исправить это - это запускать сессию программы `dpkg', `dselect', `apt-get', и пр. c программой script(1). 2.4. Процесс загрузки Debian ---------------------------- 2.4.1. Программа `init' ----------------------- Как и все Unix-подобные операционные системы, Debian загружается, выполняя программу `init'. Конфигурационный файл для `init' (`/etc/inittab') указывает, что первый скрипт, который должен быть выполнен, - это скрипт `/etc/init.d/rcS'. Данный скрипт запускает все скрипты из каталога `/etc/rcS.d/' по порядку (как перевести by sourcing ? - прим. перев.) или порождая подчиненные процессы (в зависимости от расширения имени файла) с целью инициализации системы, как то проверка и монтирование файловых систем, загрузка модулей, запуск сетевых сервисов, установка системных часов и пр. Далее (для совместимости) этот скрипт выполняет файлы из каталога `/etc/rc.boot/' (кроме тех, что имеют `.' в имени файла). Любые скрипты из последнего каталога обычно предназначаются для использования системным администратором, и применение их в пакетах не допускается. За дополнительной информацией обращайтесь к раздел 9.1, `System initialization' или странице System run levels and init.d scripts (http://www.debian.org/doc/debian-policy/ch-opersys#s-sysvinit) Руководства по политике Debian. 2.4.2. Уровни выполнения ------------------------ По окончании процесса загрузки программа `init' выполняет все стартовые скрипты в каталоге, определяемым уровнем выполенения по умолчанию (это уровень выполнения задается элементом `id' в файле `/etc/inittab'). Как и большинство System V - совместимых Unix-систем, Линукс имеет 7 уровней выполнения: * 0 (останов системы), * 1 (однопользовательский режим), * 2 - 5 (различные многопользовательские режимы), и * 6 (перезагрузка системы). Системы Debian идут с `id=2', который показывает, что при входе в многопользовательский режим уровень выполнения по умолчанию - второй, и поэтому требуется выполнить скрипты из каталога `/etc/rc2.d/'. Скрипты в любом из каталогов `/etc/rc.d/', по сути, являются символическими ссылками на скрипты из каталога `/etc/init.d/'. Однако, сами _имена_ файлов в каждом `/etc/rc.d/' каталоге определяют _способ_, которым будут запущены скрипты из `/etc/init.d/'. Конкретнее, перед входом в любой уровень исполнения сначала запускаются все скрипты, начинающиеся с буквы `K'; данные скрипты останавливают сервисы. Далее выполняются все скрипты, начинающиеся в буквы `S'; эти скрипты запускают сервисы. Двузначное число после буквы `K' или `S' показывает порядок, в котором выполняются скрипты. Скрипты с меньшим номером выполняются первыми. Это способ работает, так как все скрипты из каталога `/etc/init.d/' принимают аргумент с одним из возможных значений "start", "stop", "reload", "restart" или "force-reload", и выполняют задачу, соответствующую значению данного аргумента. Эти скрипты могут также использоваться после загрузки системы для управления различными процессами. Например, следующая команда с аргументом "reload" # /etc/init.d/sendmail reload посылает демону sendmail сигнал, побуждающий его перечитать конфигурационный файл. 2.4.3. Настройка процесса загрузки ---------------------------------- Debian не использует свойственный BSD каталог `rc.local' для настройки процесса загрузки; вместо этого он предоставляет следующий механизм. Предположим, системе нужно на этапе загрузки или при входе в определенный (System V) уровень выполнения исполнить скрипт `foo'. Тогда системный администратор должен сделать: 1. Разместить скрипт `foo' в каталоге `/etc/init.d/'. 2. Выполнить Debian-команду `update-rc.d' с соответствующими аргументами, чтобы создать символические ссылки между каталогами `rc.d' (задаваемый в командой строке) и файлом `/etc/init.d/foo'. Здесь - это номер от 0 до 6, который соответствует одному из System V уровней выполнения. 3. Перезагрузить систему. Команда `update-rc.d' установит ссылки между файлами в каталоге `rc.d' и скриптом из `/etc/init.d/'. Каждая ссылка будет начинаться с `S' или `K' с последующим номером и именем скрипта. Когда система входит в уровень выполнения , из каталога `/etc/rc.d/' скрипты, начинающиеся с `K', запускаются с аргументом `stop', а потом оттуда же скрипты, начинающиеся с `S', запускаются с аргументом `start'. Например, можно настроить, чтобы скрипт `foo' выполнялся при загрузке, разместив его в каталог `/etc/init.d/' и установив ссылки при помощи команды `update-rc.d foo defaults 19'. Аргумент `defaults' ссылается на уровни выполнения по умолчанию, которые могут быть от 2 до 5. Аргумент `19' обеспечивает, что скрипт `foo' вызывается до любых других с номером 20 или больше. 2.5. Поддержание многообразия программного обеспечения ------------------------------------------------------ Debian предлагает несколько путей удовлетворения любых потребностей системного администратора без нарушений в системе: * `dpkg-divert', смотрите раздел 6.5.1, `The `dpkg-divert' command'. * `equivs', смотрите раздел 6.5.2, `The `equivs' package'. * `update-alternative', смотрите раздел 6.5.3, `Alternative commands'. * `make-kpkg' поддерживает множество системных загрузчиков. Смотрите страницы make-kpkg(1) и раздел 7.1.1, `Debian standard method'. Любые файлы в каталоге `/usr/local/' принадлежат системному администратору и Debian их не трогает. Большинство (или все) файлы в каталоге `/etc' являются `конфигурационными' файлами и Debian их не будет перезаписывать при обновлениях, пока системный администратор явным образом этого не запросит. 2.6. Интернационализация ------------------------ Система Debian интернациональна и обеспечивает отображение и ввод символов на многих языках как в консоли, так в системе X Window. Множество документов, man-страницы и системные сообщения переведены на многие языки, и их (языков) число растет. В процессе установки Debian просит пользователя выбрать язык инсталляции ( и даже иногда его местную вариацию). Если Ваша установленная система не поддерживает все нужные Вам языковые особенности, или Вам нужно изменить язык или установить другую раскладку клавиатуры для Вашего языка, смотрите раздел 9.7, `Localization'. 2.7. Debian и ядро ------------------ Смотрите Глава 7, `The Linux kernel under Debian'. 2.7.1. Компиляция ядра, полученного не из Debian ------------------------------------------------ Необходимо понимать политку Debian в отношении заголовочных файлов (headers). Библиотеки языка C в Debian собраны с самым свежим _стабильным_ релизом заголовков _ядра_. Например, релиз Debian 1.2 использовал версию заголовков 5.4.13. Эта практика отличается от той, что в пакетах исходных текстов ядра Linux, распространяемых на всех FTP-архивах Linux, где используются самые свежие версии заголовочных файлов. Заголовочные файлы ядра распространяются вместе с ядром и находятся в каталоге `/usr/include/linux/include/'. Если Вам нужно скомпилировать программу с более новыми заголовочными файлами, чем те, что предоставляются пакетом `libc6-dev', то Вы должны добавить опцию `-I/usr/src/linux/include/' к Вашей командной строке при компиляции. Например, это важно при сборке пакета демона автомонтирования (пакет `amd'). Когда новые ядра изменяют некоторые внутренние особенности работы с NFS, программе `amd' нужно знать об этом. Это и требует включения самых последних заголовочных файлов. 2.7.2. Инструменты для построения ядер, настроенных пользователем ----------------------------------------------------------------- Пользователям, желающим собрать настроенное ими ядро, предлагается скачать пакет `kernel-package'. Данный пакет содержит скрипт для построения пакета с ядром и обеспечивает такую возможность посредством запуска команды: # make-kpkg kernel_image в каталоге верхнего уровня исходных текстов ядра. При помощи следующей команды можно получить справку: # make-kpkg --help также доступную на man-странице make-kpkg(1) и Глава 7, `The Linux kernel under Debian'. Пользователи должны кроме этого скачать исходный код наиболее свежего ядра (или же ядра, которое им требуется) с любого предпочитаемого ими архивного сайта Linux в случае недоступности пакета kernel-source-<версия> (где <версия> обозначает версию ядра). Загрузочный скипт `initrd' в Debian требует специального патча к ядру, называющийся `initrd'; смотрите http://bugs.debian.org/149236. Подробные инструкции по использованию пакета `kernel-package' даны в файле `/usr/share/doc/kernel-package/README.gz'. 2.7.3. Специальное положение о том, как работать с модулями ----------------------------------------------------------- Пакет `modconf' в Debian предоставляет скрипт командного интерпретатора (`/usr/sbin/modconf'), который можно использовать для настройки конфигурации модулей. Этот скрипт имеет меню-интерфейс, через который пользователь опрашивается об особенностях загружаемых драйверов устройств в системе. Указанная пользователем информация используется для настройки файла `/etc/modules.conf' (который содержит список алиасов и другие аргументы, используемые в сочетании с различными модулями), при этом анализируются файлы из каталога `/etc/modutils/' и файл `/etc/modules' (содержащий список модулей, требуемых своей загрузки при старте системы). Подобно файлам `Configure.help', призванным помочь в создании пользовательских ядер, пакет `modconf' поставляется с набором файлов справки (в каталоге `/usr/lib/modules_help/'), которые предоставляют подробную информацию о соответствующих аргументах каждого модуля. Примеры смотрите в раздел 7.2, `The modularized 2.4 kernel'. 2.7.4. Удаление из системы старого пакета с ядром ------------------------------------------------- Скрипт `kernel-image-.prerm' (запускаемый перед удалением пакета с ядром - прим. переводчика) проверяет на совпадение ядро, которое сейчас работает, с ядром, которое Вы пытаетесь удалить из системы. Таким образом, Вы можете безопасно удалять ненужные пакеты с ядром, используя данную команду: dpkg --purge --force-remove-essential kernel-image- (Конечно же, замените на номер версии и ревизии Вашего ядра.) ------------------------------------------------------------------------------- 3. Советы по установке системы Debian ------------------------------------- Официальная документация по установке Debian располагается по адресу http://www.debian.org/releases/stable/, и http://www.debian.org/releases/stable/installmanual. Версии документов, находящихся в разработке, располагаются по адресу http://www.debian.org/releases/testing/, и http://www.debian.org/releases/testing/installmanual (поскольку работа еще продолжается, иногда документ может быть не доступен). Хотя эта глава была изначально написана во время существования программы установки Potato, большая часть текста была обновлена для использования установщика Woody (кроме этого, они очень похожи). А так как Sarge будет использовать совершенно новую программу установки, используйте этот документ лишь как отправную точку для установщика Sarge. 3.1. Общие советы по установке системы Linux -------------------------------------------- Если Вы ищете компактный CD-образ установщика Debian, не забудьте изучить содержимое страницы http://www.debian.org/CD/netinst/. Использование `testing' или `unstable' дистрибутивов Debian увеличивает риск столкнуться с серьезными ошибками. Этого можно избежать путем развертывания бутового загрузчика с возможностью выбора более стабильного дистрибутива Debian, или использования программы `chroot' для более стабильного дистрибутива (описано в раздел 8.6.34, ``chroot''). Это позволит выполнить одновременно разные виды Debian на разных консолях. 3.1.1. Основы совместимости аппаратного обеспечения --------------------------------------------------- Linux совместим с множеством аппартного обеспечения персональных компьютеров и может быть установлен почти на любую систему. Для меня это также легко, как установить Windows 95/98/Me. Список совместимого аппаратного обеспечения постоянно растет. Если Вы имеете ноутбук, изучите информацию Linux on Laptops (http://www.linux-laptop.net/) на предмет ссылок по установке системы на определенную модель выбранного производителя. Моя рекомендация по выбору аппартного обеспечения для персонального компьютера - "Просто будь консервативным": * Жесткие диски - на работе SCSI, для частного использования можно IDE/ATAPI. * IDE/ATAPI CD-ROM (или CD-RW). * платы PCI, а не ISA, особенно для сетевых плат (NIC). * Используйте дешевые сетевые карты. Хороши Tulip для PCI, NE2000 для ISA. * На ноутбуках в случае первой установки избегайте PCMCIA. * Никаких USB клавиатур, мышей, ... если не хотите трудностей. Если у Вас медленная машина, хорошей идеей будет снять жесткий диск и поключить его к другой более быстрой машине на момент установки. 3.1.2. Определение аппаратного обеспечения ПК и набора микросхем ---------------------------------------------------------------- В процессе установки задаются вопросы об оборудовании или наборе микросхем ПК. Иногда данную информацию не так просто найти. Вот один из методов: 1. Раскройте корпус Вашего ПК и загляните внутрь. 2. Запишите идентификационные коды продуктов на больших микросхемах видеокарты, сетевого адаптера, микросхемах около последовательных и IDE портов. 3. Запишите названия карт, напечатанных сзади на PCI и ISA картах. 3.1.3. Определение состава оборудования ПК при помощи Debian ------------------------------------------------------------ Следующие команды на Linux-системе должны дать некоторую информацию об имеющемся оборудовании и его конфигурации. $ lspci -v |pager $ pager /proc/pci $ pager /proc/interrupts $ pager /proc/ioports $ pager /proc/bus/usb/devices Эти команды могут быть выполнены в процессе установки системы из экрана консоли, перейти на который можно нажатием Alt-F2. Типовое использование прерываний: * IRQ0: прерывание от таймера (8254) * IRQ1: прерывание от контроллера клавиатуры * IRQ2: применяется для каскадирования контроллера прерываний IRQ8--IRQ15 на PC-AT * IRQ3: второй последовательный порт (io-port=0x2F8) (`/dev/ttyS1') * IRQ4: первый последовательный порт (io-port=0x3F8) (`/dev/ttyS0') * IRQ5: свободно (ранее использовалось для прерываний от жесткого диска на PC/XT) * IRQ6: прерывание от контроллера гибких дисков (io-port=0x3F0) (`/dev/fd0', `/dev/fd1') * IRQ7: паралелльный порт (io-port=0x378) (`/dev/lp0') * IRQ8: часы реального времени * IRQ9: программное прерывание (int 0x0A), направленное на IRQ2 * IRQ10: свободно * IRQ11: свободно * IRQ12: мышь PS/2 * IRQ13: свободно (ранее использовалось 80287 математическим сопроцессором) * IRQ14: первый IDE контроллер (`/dev/hda', `/dev/hdb') * IRQ15: второй IDE контроллер (`/dev/hdc', `/dev/hdd') Для устройств USB классы устройств описаны в `/proc/bus/usb/devices' в виде `Cls=': * Cls=00 : Не используется * Cls=01 : Аудио (динамики и пр.) * Cls=02 : Устройства связи (модем, сетевая плата, ...) * Cls=03 : HID (Human Interface Device: клавиатуры, мыши, джойстики) * Cls=07 : Принтер * Cls=08 : Устройство хранения данных (дисководы, устройства CD/DVD, жесткие диски, флеш-карты, ...) * Cls=09 : Концентратор (USB концентраторы) * Cls=255 : тип определяется изготовителем Если класс устройства не равен 255, Linux поддерживает это устройство. 3.1.4. Определение состава оборудования ПК при помощи других операционных систем ---------------------------------------------------------------------------- Информация об оборудовании может быть так получена от других ОС: Установите другой коммерческий дистрибутив Linux. Пока определение оборудования на них лучше, чем в Debian. (Это положение должно быть улучшено при введении новой программы-установки `debian-installer' дистрибутива Sarge.) Установите Windows. Конфигурация оборудования может быть получена нажатием правой кнопки мыши на иконку "Мой компьютер"с последующим входом в "Менеджер устройств". Запишите всю информацию об используемых ресурсах IRQ, адресах портов ввода/вывода и каналах DMA. Некоторые старые карты могут потребовать своей конфигурации в среде DOS и соответвствующего использования. 3.1.5. Миф о LILO ----------------- "Lilo ограничен 1024 цилиндрами." Неверно! Новая версия `lilo', используемая после выхода Debian Potato имеет поддержку lba32. Если BIOS Вашей материнской платы поддерживает lba32, `lilo' сможет работать на цилиндрах выше 1024. Для этого добавьте строку "lba32" где-нибудь в начале Вашего файла `lilo.conf', если у Вас используется конфигурационный файл от старого `lilo'. Смотрите `/usr/share/doc/lilo/Manual.txt.gz'. 3.1.6. GRUB ----------- Новый системный загрузчик `grub' из проекта GNU Hurd может быть установлен в систему Debian Woody следующим образом: # apt-get update # apt-get install grub-doc # mc /usr/share/doc/grub-doc/html/ ... изучите содержимое # apt-get install grub # pager /usr/share/doc/grub/README.Debian.gz ... прочтите это:) Для редактирования меню GRUB, правьте файл `/boot/grub/menu.lst'. Смотрите раздел 8.1.6, `Setting GRUB boot parameters' чтобы узнать, как установить загрузочные параметры при загрузке системы, так как конфигурирование GRUB немного отличается от конфигурирования `lilo'. 3.1.7. Выбор набора загрузочных дискет -------------------------------------- В Potato мне нравился набор дисков IDEPCI для нормальной установки на рабочую станцию. Для Woody мне нравится загрузочный набор bf2.4. Они оба используют пакет `boot-floppies' для создания загрузочных дискет. Если у Вас есть сетевая карта PCMCIA, Вам нужно использовать стандартный загрузочный набор дискет (самое большое количество дисков, зато доступны все модули драйверов) и настроить сетевую карту через настройку PCMCIA; не пытайтесь устанавливать сетевую карту через стандартный диалог настройки сети. Для специфичных систем Вам возможно понадобится создать собственный спасательный диск. Это может быть сделано путем замены образа ядра под именем "linux" на спасательном диске Debian сжатым образом другого ядра, скомилированного где-либо для этой машины. Подробности описаны в файле `readme.txt' на таком диске. Спасательная дискета использует файловую систему MS-DOS, поэтому Вы можете использовать любую операционную систему, чтобы изучить и отредактировать ее содержимое. Это делает жизнь проще людям, у которых, например, нестандартная сетевая карта. В Sarge для создания загрузочных дискет будет использоваться программа `debian-installer' и/или пакет `pgi'. 3.1.8. Установка ---------------- Следуйте официальным инструкциям, которые можно найти по адресу http://www.debian.org/releases/stable/installmanual или http://www.debian.org/releases/testing/installmanual (документ в разработке, иногда может быть не доступен). Если Вы устанавливаете систему, используя программу `boot-floppies' из дистрибутива `testing', то Вам, возможно, понадобится настроить источники системы APT. Для этого переключитесь на вторую виртуальную консоль нажатием Alt-F2 и вручную отредактируйте строки файла `/etc/apt/sources.list', заменив "stable" на "testing" Я придерживаюсь устанавливать `lilo' в места типа `/dev/hda3', в то время как `mbr' устанавливаю в `/dev/hda'. Это минимизирует риск перезаписи загрузочной информации. Вот что я выбираю в процессе установки системы: * MD5 пароли "yes" * Теневые пароли "yes" * Установка "advanced" (через dselect **) и выбираю * Исключаю emacs (если он выбран), nvi, tex, telnet, talk(d); * Включаю mc, vim, один из редакторов nano-tiny или elvis-tiny. Изучите раздел 6.2.3, `Программа `dselect''. Даже если Вы поклонник Emacs, избегайте устанавливать его сейчас и довольствуйтесь nano при установке. Также избегайте устанавливать другие большие пакеты, как то TeX (актуально для Potato) на этой стадии. Смотрите раздел 11.2, `Rescue editors' относительно причин установки nano-tiny или elvis-tiny в этом месте. * На все конфигурационные вопросы отвечаю "y" (замена текущего) во время диалога установки каждого пакета. * `exim': Выбираю "2" для своей машины, так как я отправляю почту через SMTP-сервер моего провайдера Интернет. За дополнительной информацией по dselect обращайтесь к раздел 6.2.3, `Программа `dselect''. 3.1.9. Хосты и IP-адреса для использования в локальных сетях ------------------------------------------------------------ Перед Вами пример конфигурации ЛВС (сеть класса C: 192.168.1.0/24): Интернет | +--- Внешний провайдер интернет предоставляет POP-сервис (доступ по fetchmail) | Точка доступа провайдера предоставляет сервис DHCP и SMTP-сервис (с возможностью отправки почты перез него) | : Кабельный модем (Dialup) | : Внешний интерфейс шлюза: eth0 (IP, выданный провайдером по DHCP) на базе старенького ноутбука (IBM Thinkpad, 486 DX2 50MHz, 20MB RAM) работает на ядре Linux 2.4 с файловой системой ext3. выполняет пакет "ipmasq" (с stronger-патчами, NAT и firewall) выполняет пакет "dhcp-client" настроенный на интерфейс eth0 (не принимает во внимание установку DNS) выполняет пакет "dhcp" настроенный на интерфейс eth1 выполняет пакет "exim" в режиме смартхоста (режим 2) выполняет пакет "fetchmail" с большим интервалом (fallback) выполняет пакет "bind" в качестве кэширующего сервера имен Интернет для запросов из ЛВС и в качестве авторитетного сервера имен домена ЛВС для запросов из ЛВС выполняет пакет "ssh" на порту 22 и 8080 (подключение с любого хоста) выполняет пакет "squid" в качестве кэширующего сервера архива Debian (для APT) Внутренний интерфейс шлюза : eth1 (IP = 192.168.1.1, фиксированный) | +--- Коммутатор (100base T) ---+ | | Несколько клиентов с Несколько DHCP-клиентов в ЛВС фиксированными IP-адресами (IP = 192.168.1.128-200, динамические) (IP = 192.168.1.2-127, фиксированные) Смотрите Глава 10, `Network configuration' относительно деталей по настройке сети. Также смотрите раздел 10.14, `Building a gateway router' относительно конфигурирования сервер-шлюза. 3.1.10. Учетные записи пользователей ------------------------------------ Чтобы свободно перемещаться между машинами, несколько первых учетных записей всегда одинаковы на моих системах. Я всегда создаю первую пользовательскую учетную запись под именем "admin" (uid=1000). Почта root перенаправляется в почтовый ящик admin. Эта учетная запись помещается в группу `adm' (смотрите раздел 9.2.2, `"Why GNU `su' does not support the `wheel' group"'), которая получает неплохую долю привилегий root через команду `su', используя PAM или через команду `sudo'. Подробности смотрите в раздел 4.1.3, `Добавление пользовательской учетной записи'. 3.1.11. Создание файловых систем -------------------------------- 3.1.11.1. Разбиение жесткого диска ---------------------------------- Я предпочитаю использовать различные разделы для разных деревьев каталогов с целью уменьшения объема разрушений при системном сбое. Например: / == (/ + /boot + /bin + /sbin) == 50MB+ /tmp == 100MB+ /var == 100MB+ /home == 100MB+ /usr == 700MB+ с системой X Window /usr/local == 100MB Размер каталога `/usr' сильно зависит от присутствия в системе приложений X Window и документации к ним. `/usr/' может быть около 300MB, если используются только терминальное ПО, или 2GB--3GB, если установлено много приложений Gnome. Когда `/usr/' сильно разростается, то перенос каталога `/usr/share/' на другой раздел будет наиболее эффективным средством. С новыми большими ядрами Linux 2.4, поставляемыми в виде пакетов, размер корневого каталога `/' может быть более 200MB. Для примера приведу текущее состояние моего Интернет-шлюза (вывод команды `df -h'): 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 (Большая область зарезервирована для `/var/spool/squid/' - кэша прокси-сервера для кэширования скачиваемых пакетов.) Далее идет вывод команды `fdisk -l', предоставляющий структуру разделов диска: # fdisk -l /dev/hda /dev/hda1 1 41 309928+ 6 FAT16 # DOS /dev/hda2 42 84 325080 83 Linux # (не используется) /dev/hda3 * 85 126 317520 83 Linux # основной /dev/hda4 127 629 3802680 5 расширенный раздел /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 Существует несколько неиспользующихся разделов. Они предназначены для установки второго дистрибутива Linux или для пространства расширения растущих деревьев каталогов. 3.1.11.2. Монтирование файловых систем -------------------------------------- Монтирование ранее созданных файловых систем выполняется согласно файла `/etc/fstab': # /etc/fstab: статическая информация о файловых системах. # # файловая_система точка_монтирования тип опции_монтирования дамп проход /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 повышает скорость чтения файлов /dev/hda9 /usr ext2 defaults,noatime 0 2 /dev/hda10 /var/cache/apt/archives ext2 defaults 0 2 # очень большой раздел для кэша прокси-сервера /dev/hda11 /var/spool/squid ext2 rw 0 2 # резервный загрузочный раздел DOS /dev/hda1 /mnt/dos vfat rw,noauto 0 0 # резервный загрузочный раздел с системой Linux (не готова) /dev/hda2 /mnt/linux ext2 rw,noauto 0 0 # # монтирование nfs 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 Для NFS я использую опции `noauto,intr', сочетаемые с опцией `hard', которая стоит по умолчанию. Благодаря этому становится возможным восстановиться из повысшего процесса по причине умершего соединения посредством нажатия Ctrl-C. Для соединений к Windows-машинам, подключенным через Samba (smbfs), разумно использовать опции `rw,auto,soft,intr'. Смотрите раздел 3.5, `Настройка Samba'. Для флоппи-дисководов использование набора опций `noauto,rw,sync,user,exec' предотвратит повреждение файлов в результате случайного извлечения дискеты до ее размонтирования, но замедлит запись на дискету. 3.1.11.3. Автоматическое монтирование ------------------------------------- Ключевые моменты для автомонтирования: * Загрузите модуль `vfat', чтобы можно было в файле `/etc/auto.misc' указать `-fstype=auto': # modprobe vfat # выполняется перед доступом к флоппи-диску ...либо, чтобы это было автоматически: # cat >>/etc/modules vfat ^D ... и перезагрузите систему. * Отредактируйте файл `/etc/auto.misc' следующим образом: floppy -fstype=auto,sync,nodev,nosuid,gid=100,umask=000 :/dev/fd0 ... где gid=100 соответствует группе "users". * Создайте ссылки `cdrom' и `floppy' в каталоге `/home/', указывающие соответственно на `/var/autofs/misc/cdrom' и `/var/autofs/misc/floppy'. * Добавьте к группе "users". 3.1.11.4. Монтирование NFS -------------------------- Внешний Linux NFS сервер (goofy) размещается за файерволом (шлюзом). У меня достаточно слабая политика безопасности в моей ЛВС, так как я единственный пользователь. Чтобы разрешить доступ по NFS, на стороне NFS сервера нужно добавить в файл `/etc/exports' следующее: # /etc/exports: список управления доступом для файловых систем, которые # можно экспортировать клиентам по NFS. Смотрите exports(5). / (rw,no_root_squash) Это нужно для активации NFS сервера помимо установки пакетов NFS-сервера и клиентов. Для простоты я обычно создаю один раздел 2 GB для экспериментов или для второй инсталляции Linux. По желанию можно сделать так, что обе установки будут разделять один раздел подкачки и раздел `/tmp'. A multipartition scheme is too involved for these usages. Если требуется только консольная система, 500MB будет вполне достаточно. 3.1.12. Рекомендации по оперативной памяти ------------------------------------------ Требования системы в оперативной памяти: 4MB: Минимум для работы ядра Linux. 16MB: Минимум для приемлемой консольной системы. 32MB: Минимум для простой системы X Window. 64MB: Минимум для системы X Window с GNOME/KDE. 128MB: Для комфортной работы с системой X Window c GNOME/KDE. 256MB (и больше): А почему бы и нет, если Вы можете себе столько позволить? DRAM не такая дорогая. Использование загрузочной опции `mem=4m' (или lilo `append="mem=4m"') покажет, как система будет работать на 4MB оперативной памяти. Данный загрузочный параметр необходим для систем с объемом оперативной памяти более 64MB со старым BIOS. 3.1.13. Пространство для подкачки --------------------------------- Я придерживаюсь следующим рекомендациям по распределению пространства для подкачки: * Каждый раздел подкачки < 128MB (для старых ядер 2.0 ), < 2GB (для более свежих ядер) * Общий размер пространства для подкачки = либо (1-2 величины объема установленной оперативной памяти) либо (128MB- 2GB) в качестве общей рекомендации * Распределите этот объем по разным физическим дискам и монтируйте их все с опцией `sw,pri=1' в файле `/etc/fstab'. Это гарантирует, что ядро выполнит RAID-чередование swap-разделов для максимальной производительности подкачки. * По возможности используйте середину жесткого диска. Даже если Вам не требуется подкачка, некоторый раздел подкачки все же желателен, например, чтобы оттянуть сбой системы с работающей программой, которая грешит утечками памяти. 3.2. Конфигурация командного интерпретатора Bash ------------------------------------------------ Я изменяю стартовые скрипты по всей системе по своему вкусу таким образом: /etc/bash.bashrc заменяю на свой /etc/profile Оставляю копию из дистрибутива ( \w -> \W) /etc/skel/.bashrc заменяю на свой /etc/skel/.profile заменяю на свой /etc/skel/.bash_profile заменяю на свой ~/.bashrc заменяю на свой для всех учетных записей ~/.profile заменяю на свой для всех учетных записей ~/.bash_profile заменяю на свой для всех учетных записей Смотрите подробности в моих примерных скриптах (http://www.debian.org/doc/manuals/debian-reference/examples//). Так как мне нравиться прозрачная система, я устанавливаю значение `umask' равное 002 или 022. Переменная `PATH' устанавливается через следующие конфигурационные файлы в таком порядке: /etc/login.defs - перед тем, как оболочка устанавливает PATH /etc/profile (может вызывать /etc/bash.bashrc) ~/.bash_profile (может вызывать ~/.bashrc) 3.3. Настройка мыши ------------------- 3.3.1. Мышь PS/2 ---------------- В случае мыши на PS/2 на материнской плате ATX сделайте, чтобы сигналы от мыши проходили такой путь: mouse -> /dev/psaux -> gpm -> /dev/gpmdata = /dev/mouse -> X Здесь создается символическая ссылка `/dev/mouse', указывающая на файл `/dev/gpmdata', для того, чтобы нормально работали некоторые утилиты конфигурирования и чтобы было легче выполнять перенастройку. (Например, если Вы потом решите отказаться использовать демон `gpm', то после этого просто настройте символическую ссылку `/dev/mouse' таким образом, чтобы она указывала на файл `/dev/psaux'.) Такой путь сигналов от мыши/клавиатуры позволяет отсоединять и инициализировать их, повторно перезапуская `gpm' после подключения устройств. При этом система X Window будет нормально работать! Протокол взаимодействия между `gpm' и X input может быть реализован одним из двух способов: либо как "ms3" (т.е. использовать протокол трехкнопочной мыши Microsoft последовательного порта), либо как сырой "raw"(использовать такой же протокол, как у подключенной мыши), причем данный выбор предопределяет выбор протокола, использующийся в X Window. Продемонстрируем пример настройки трехкнопочной PS/2 мыши фирмы Logitech (традиционная мышь в Unix). Если Вам не повезло, и Ваша видеокарта не поддерживается четвертой версией XFree, и Вы вынуждены использовать третью версию XFree (некоторые карты ATI 64), то для настройки в следующих примерах используйте файл `/etc/X11/X86Config' вместо `/etc/X11/X86Config-4'. 3.3.1.1. Подход с использованием протокола ms3 ---------------------------------------------- /etc/gpm.conf | /etc/X11/X86Config-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 В данном случае тип мыши настраивается только в файле `gpm.conf', а конфигурация X Window остается неизменной. Смотрите Примерные скрипты (http://www.debian.org/doc/manuals/debian-reference/examples//). 3.3.1.2. Подход с использованием сырого "raw" протокола ------------------------------------------------------- /etc/gpm.conf | /etc/X11/X86Config-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 В данном случае тип мыши устанавливается как через файл `gpm.conf', так и через файл конфигурации X. 3.3.1.3. Как настроить другую мышь ---------------------------------- У программы `gpm' тип устройства `autops2' предполагает автоопределение большинства типов мышей PS/2, существующих сейчас на рынке. К несчастью, это не только работает не всегда, но не было доступно в релизах до Woody. В таких случаях попробуйте в файле `gpm.conf' установить тип `ps2' или `imps2' вместо `autops2'. Чтобы выяснить, о каких мышках знает программа `gpm', выполните: `gpm -t help'. Также смотрите gpm(8). Если используется двухкнопочная PS/2 мышь, разрешите в X-протоколе эмуляцию третьей кнопки через `Emulate3Buttons'. Разница в протоколах между двухкнопочной и трехкнопочной мышкой определяется и настраивается автоматически программой `gpm' после однократного нажатия средней кнопки мыши. Для X-протокола с раздел 3.3.1.2, `Подход с использованием сырого "raw" протокола' или без использования программы `gpm' используйте: * `IntelliMouse': мышь последовательного порта (`gpm'-повторитель протокола "ms3") * `PS/2': мышь порта PS/2 (сначала всегда используйте это) * `IMPS/2': любая мышь порта PS/2 (2, 3, мышь с прокруткой, получше) * `MouseManPlusPS/2': Мышь Logitech для порта PS/2 * `...' Дополнительно смотрите информацию на странице Поддержка мыши в XFree86 (http://www.xfree86.org/current/mouse.html). Типовая мышь Microsoft с прокруткой работает лучше с такой настройкой: /etc/gpm.conf | /etc/X11/X86Config-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 На некоторых ноутбуках Toshiba активирование программы `gpm' перед PCMCIA в скриптах начальной загрузки (System-V) помогает предотвратить зависания системы. Странно, но факт. 3.3.2. Мышь USB --------------- Сначала убедитесь, что следующие функции ядра подключены либо в самом ядре, либо реализованы в виде модулей: * В секции "Input core support": * "Input core support" (CONFIG_INPUT, `input.o'), * "Mouse support" (CONFIG_INPUT_MOUSEDEV, `mousedev.o'), * В секции "USB support": * "Support for USB" (CONFIG_USB, `usbcore.o'), * "Preliminary USB device filesystem" (CONFIG_USB_DEVICEFS), * "UHCI" или "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'), и * "HID input layer support" (CONFIG_USB_HIDINPUT) Здесь имена, приведенные в нижнем регистре, являются именами модулей. Если вы не используете devfs, то следующим образом создайте файл устройства `/dev/input/mice' с major 13 и minor 63: # cd /dev # mkdir input # mknod input/mice c 13 63 Для типовой _USB_ мыши с прокруткой должна использоваться следующая комбинация конфигурационных файлов: /etc/gpm.conf | /etc/X11/X86Config-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 За дополнительной информацией смотрите страницу Проект Linux USB (http://www.linux-usb.org/). 3.3.3. Сенсорный коврик ноутбука -------------------------------- Хотя сенсорный коврик на ноутбуке по умолчанию эмулирует поведение двухкнопочной мышки PS/2, пакет `tpconfig' позволяет полностью контроллировать устройством. Например, установка опции `OPTIONS="--tapmode=0"' в файле `/etc/default/tpconfig' запретит надоедливое поведение "щелчок легким нажатием". Измените файл `/etc/gpm.conf' следующим образом, чтобы использовать как сенсорный коврик, так и внешнюю мышь USB для работы в консоли: device=/dev/psaux responsiveness= repeat_type=ms3 type=autops2 append="-M -m /dev/input/mice -t autops2" sample_rate= 3.4. Конфигурация NFS --------------------- Настройка NFS выполняется через файл `/etc/exports'. # apt-get install nfs-kernel-server # echo "/ *.domainname-for-lan-hosts(rw,no_root_squash,nohide)" \ >> /etc/exports Подробности смотрите в моих примерных скриптах (http://www.debian.org/doc/manuals/debian-reference/examples//). 3.5. Настройка Samba -------------------- Ссылки: * http://www.samba.org/ * `samba-doc' пакет Гораздо проще настраивать Samba для режима "share", когда создаются Windows for Workgroup- подобные расшаренные ресурсы. Однако, установка Samba в режим "user" является предпочтительной. Конфигурация Samba выполняется или через `debconf' или в редакторе `vi': # dpkg-reconfigure --priority= samba # в Woody # vi /etc/samba/smb.conf Подробности смотрите в моих примерных скриптах (http://www.debian.org/doc/manuals/debian-reference/examples//). Добавление нового пользователя в файл `smbpasswd' может быть выполнена командой `smbpasswd': $ su -c "smbpasswd -a username" Убедитесь, что Вы используете шифрованные пароли для максимальной совместимости. Установите `os level' согласно следующей таблице эквивалентности систем (чем больше число, тем выше приоритет системы при выборах обозревателя сети): 0: Samba с проигрышным атрибутом (никогда не станет главным обозревателем) 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 c максимальным приоритетом Убедитесь, что пользователи являются членами группы, владеющей каталогом, предназначенным для совместного доступа , и что права на каталог включают право выполнения. 3.6. Настройка принтера ----------------------- Традиционный подход использования принтера заключается в установке программ `lpr'/`lpd'. Существует также новая система печати - CUPS(TM) (Common UNIX Printing System). Еще существует PDQ. За дополнительной информацией обращайтесь к Linux Printing HOWTO (http://www.tldp.org/HOWTO/Printing-HOWTO.html). 3.6.1. `lpr'/`lpd' ------------------ Чтобы использовать систему печати `lpr'/`lpd' (пакеты `lpr', `lprng' и `gnulpr'), отредактируйте файл (базовая настройка) `/etc/printcap' следующим образом (в случае использования принтера PostScript или чисто текстового): |:\ :sd=/var/spool/lpd/:\ :mx#0:\ :sh:\ :lp=/dev/lp0: Эти строки обозначают следующее: * Заглавная строка: -- имя спула, = алиас * mx#0 -- размер файла неограничен * sh -- не печатать заголовки разорванных страниц * lp=/dev/lp0 -- устройство локального принтера, или port@host для удаленного принтера Это хорошая конфигурация, если у Вас подключен PostScript-принтер. Это также будет хорошо работать в случае печати с Windows-машины через Samba, на любом принтере, поддерживающимся Windows (правда, двунаправленная связь с принтером не поддерживается). Вам нужно только выбрать соответствующую конфигурацию принтера на Windows-машине. Если же у Вас принтер не поддерживает PostScript, Вам нужно установить фильтрующую систему на базе программы `gs'. Существует масса инструментов для автоматической настройки печати с установкой файла `/etc/printcap'. Возможна любая из этих комбинаций: * `gnulpr', (`lpr-ppd') и `printtool'--- я использую эту. * `lpr' и `apsfilter' * `lpr' и `magicfilter' * `lprng' и `lprngtool' * `lprng' и `apsfilter' * `lprng' и `magicfilter' Чтобы запустить GUI-инструменты по настройке, такие как `printtool', смотрите раздел 9.4.12, `Getting root in X' для получения привелегий root. Принтерные пулы, созданные программой `printtool', используют `gs' и работают как PostScript-принтеры. Поэтому при доступе к ним, необходимо использовать драйверы принтера Postscript. В Windows таким стандартным принтером является "Apple LaserWriter". 3.6.2. CUPS(TM) --------------- Установите систему печати Common UNIX Printing System (сокращенно CUPS(TM)): # apt-get install cupsys foomatic-bin foomatic-db # apt-get install cupsys-bsd cupsys-driver-gimpprint Затем настройте систему через web-браузер: $ <мой_браузер> http://localhost:631 Например, чтобы добавить Ваш принтер на некоторый порт в список доступных принтеров, сделайте: * нажмите "Printers" на главной странице, а там "Add Printer", * Введите "root" в качестве имени пользователя и потом его пароль, * перейдите к добавлению принтера, следуя подсказкам, * вернитесь к странице "Printers", нажмите "Configure Printer", и * перейдите к настройке размера бумаги, разрешения и других параметров. За дополнительной информацией обращайтесь по адресу http://localhost:631/documentation.html и http://www.cups.org/cups-help.html. 3.7. Прочие советы по инсталляции системы ----------------------------------------- 3.7.1. Установка дополнительных пакетов после первоначальной инсталляции ------------------------------------------------------------------------ После первоначальной инсталляции системы Вы получаете небольшую, но уже функционирующую систему Debian. И это самый подходящий момент установить большее количество пакетов. * Запустите программу `tasksel'. Изучите раздел 6.2.1, `Установка _задачи_ при помощи программ `tasksel' или `aptitude''. В случае необходимости Вы можете выбрать следующее: * Для конечного пользователя -- X Window System * Для разработки -- C and C++ * Для разработки -- Python * Для разработки -- Tcl/Tk * Прочее -- TeX/LaTeX environment * Для всего остального я предпочитаю использовать программу `tasksel' как руководство, изучая состав компонентов, описанных в , для реализации некой задачи, и устанавливаю пакеты по отдельности через `dselect'. * Запуск `dselect'. Первое, что Вы захотите слелать, это выбрать Ваш любымый редактор и программы, которые Вам нужны. Вы можете установить множество вариаций Emacs одновременно. Смотрите раздел 6.2.3, `Программа `dselect'' и раздел 11.1, `Popular editors'. Также Вы можете заменить некоторые пакеты по умолчанию на пакеты с большими возможностями. * ... * ... Я обычно правлю файл `/etc/inittab' для простоты завершения работы системы следующим образом: ... # Выполнить при нажатии CTRL-ALT-DEL. ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -h now ... 3.7.2. Модули ------------- Модули для драйверов устройств конфигурируются в процессе первоначальной инсталляции. Программа `modconf' предоставляет меню-подобный инферфейс для настройки модулей после инсталляции. Эта программа полезна, если некоторые модули отсутствовали в ходе первоначальной инсталляции или после установки нового ядра. Все модули, которые необходимо загружать при старте системы, должны быть перечислены в файле `/etc/modules'. Я также использую программы `lsmod' и `depmod' для работы с модулями. Также для ядер 2.4 добавьте несколько строк в файл `/etc/modules' для работы IP-маскарадинга (FTP и прочие). Смотрите раздел 7.2, `The modularized 2.4 kernel', в частности раздел 7.2.3, `Network function'. 3.7.3. Базовая установка CD-RW ------------------------------ Отредактируйте следующие файлы: /etc/lilo.conf (добавьте append="hdc=ide-scsi ignore=hdc", (CDRW стоит мастером на втором канале - прим. переводчика) запустите lilo для вступления в силу изменений) /dev/cdrom (создайте символическую ссылку следующим образом # cd /dev; ln -sf scd0 cdrom ) /etc/modules (добавьте "ide-scsi" и "sg". И если нужно "sr" после них.) Подробности смотрите в раздел 9.3, `CD writers'. 3.7.4. Большой размер оперативной памяти и автовыключение питания ----------------------------------------------------------------- Отредактируйте файл `/etc/lilo.conf' следующим образом для установки загрузочных параметров большого объема ОЗУ (для ядер 2.2) и автовыключения питания (для систем с улучшенным управлением питанием APM) append="mem=128M apm=on apm=power-off noapic" Выполните `lilo' для установки этих значений. Параметр `apm=power-off' необходим для SMP-ядра, а `noapic' - чтобы избежать проблем с аппаратурой SMP, содержащей ошибки. Тоже самое может быть сделано путем прямого ввода опций перед загрузкой ядра. Смотрите раздел 8.1.5, `Other boot tricks with the boot prompt'. Если поддержка APM скомпилировна как модуль, что в Debian является по умолчанию для ядер 2.4, то после загрузки запустите команду `insmod apm power_off=1' или для правки файла `/etc/modules' выполните: # echo "apm power_off=1" >>/etc/modules Кроме этого, на новых ядрах включение в ядре поддержки ACPI достигает той же цели и, кажется, является более дружественной к SMP (это требует более новых материнских плат). Также ядро 2.4. на новых материнских платах должно правильно определять большие объемы ОЗУ. CONFIG_PM=y CONFIG_ACPI=y ... CONFIG_ACPI_BUSMGR=m CONFIG_ACPI_SYS=m и добавьте следующие строки в файл `/etc/modules' в следующем порядке: ospm_busmgr ospm_system Либо перекомпилируйте ядро со всеми этими опциями, установленными на значение "y". В любом случае для ACPI никакие загрузочные параметры не нужны. 3.7.5. Странные проблемы доступа на некоторые web-сайты ------------------------------------------------------- Недавние ядра Linux по умолчанию разрешают ECN, что может привести к проблемам доступа к некоторым web-сайтам, находящимся за неправильными маршрузаторами. Чтобы проверить статус ECN: # cat /proc/sys/net/ipv4/tcp_ecn ... или # sysctl net.ipv4.tcp_ecn Для выключения ECN используйте: # echo "0" > /proc/sys/net/ipv4/tcp_ecn ... или # sysctl -w net.ipv4.tcp_ecn=0 Чтобы запретить TCP ECN при каждой загрузке системы добавьте в файл `/etc/sysctl.conf' следующее: net.ipv4.tcp_ecn = 0 3.7.6. Конфигурация Dialup PPP ------------------------------ Установите пакет `pppconfig', чтобы настроить dialup PPP. # apt-get install pppconfig # pppconfig ... следуйте инструкциям для конфигурирования dialup PPP # adduser dip ... разрешает пользователю