Таблица 14.7. Команды обновления пакетов
Дистрибутив
Команды
Debian
apt-get update; apt-get upgrade
Red Hat
yum update
Пример: следующая команда применит все обновления, доступные для пакетов, установленных в системе на основе Debian:
apt-get update; apt-get upgrade
Обновление пакета из файла пакета
Если обновленная версия пакета была загружена из источника, не являющегося репозиторием, ее можно установить, заменив предыдущую версию (табл. 14.8).
Таблица 14.8. Низкоуровневые команды обновления пакетов
Дистрибутив
Команды
Debian
dpkg --install файл_пакета
Red Hat
rpm -U файл_пакета
Пример: обновить установленную программу emacs до версии, содержащей в файле пакета emacs-22.1-7.fc7-i386.rpm, в системе Red Hat можно командой:
rpm -U emacs-22.1-7.fc7-i386.rpm
ПРИМЕЧАНИЕ
dpkg не имеет параметра, отвечающего за обновление пакета вместо установки, как в программе rpm.
Список установленных пакетов
Команды в табл. 14.9 можно использовать для вывода списка всех пакетов, установленных в системе.
Таблица 14.9. Команды вывода списка пакетов
Дистрибутив
Команды
Debian
dpkg –list
Red Hat
rpm –qa
Определение, установлен ли пакет
С помощью низкоуровневых инструментов из табл. 14.10 можно определить, был ли установлен определенный пакет.
Таблица 14.10. Команды определения состояния пакетов
Дистрибутив
Команды
Debian
dpkg --status имя_пакета
Red Hat
rpm –q имя_пакета
Пример: определить, был ли установлен пакет emacs в системе Debian, можно командой:
dpkg --status emacs
Вывод информации об установленном пакете
Если известно имя установленного пакета, с помощью команд из табл. 14.11 можно получить описание пакета.
Таблица 14.11. Команды получения информации о пакетах
Дистрибутив
Команды
Debian
apt-cache show имя_пакета
Red Hat
yum info имя_пакета
Пример: получить описание пакета emacs в системе Debian можно командой:
apt-cache show emacs
Поиск пакета по установленному файлу
Определить, в составе какого пакета был установлен некий файл, можно с помощью команд из табл. 14.12.
Таблица 14.12. Команды идентификации принадлежности файлов
Дистрибутив
Команды
Debian
dpkg --search имя_файла
Red Hat
rpm –qf имя_файла
Пример: узнать, в составе какого пакета был установлен файл /usr/bin/vim в системе Red Hat, можно командой:
rpm -qf /usr/bin/vim
Заключительное замечание
В последующих главах мы исследуем множество программ, решающих широкий спектр прикладных задач. Хотя большинство этих программ обычно устанавливается по умолчанию, иногда возникает необходимость установить дополнительные пакеты. С вновь обретенными знаниями (и пониманием) особенностей управления пакетами вы без труда сможете установить дополнительные программы и управлять ими.
миф об установке программного обеспечения в Linux
Те, кто прежде использовал другие платформы, иногда становятся жертвами мифов о сложности установки программного обеспечения в Linux и верят, что многообразие систем управления пакетами, используемых разными дистрибутивами, является серьезной помехой. Вообще-то и правда — помехой, только не для пользователей, а для производителей патентованного программного обеспечения, желающих распространять свои программы только в виде двоичных файлов.
Программная экосистема Linux основана на идеологии открытости исходного кода. Если разработчик программного обеспечения выпустит исходный код своего продукта, почти наверняка человек, связанный с дистрибутивом, упакует этот продукт и включит его в репозиторий. Этот подход гарантирует хорошую интеграцию продукта с дистрибутивом, и пользователь сможет получить все необходимое ему программное обеспечение в одном месте, вместо того чтобы искать отдельные программы по разным веб-сайтам.
Драйверы устройств распространяются почти так же, только они не выделяются в отдельные пакеты в репозитории дистрибутива, а включаются в ядро Linux. Можно сказать, что в Linux нет такого понятия, как «диск с драйверами». Либо ядро поддерживает данное устройство, либо нет, а ядро Linux поддерживает огромное число устройств. В действительности намного больше, чем Windows. Конечно, едва ли вас утешит информация, что нужное вам устройство не поддерживается ядром. Однако если такое случится, ищите причину. Отсутствие драйвера поддержки обычно обусловлено одной из следующих причин:
• Устройство слишком новое. Так как многие производители аппаратного обеспечения не очень активно поддерживают Linux, задача написать драйвер для включения в ядро ложится на членов сообщества Linux. А это требует времени.
• Устройство слишком экзотическое. Не все дистрибутивы включают все возможные драйверы устройств. Для каждого дистрибутива настраивается свое ядро, и так как ядра настраиваются до мелочей (благодаря чему открывается возможность использовать Linux в самых разных устройствах, от наручных часов до больших ЭВМ), создатели дистрибутива могли пропустить ваше устройство. Найдя и загрузив исходный код драйвера, вы (да, да — вы) сможете скомпилировать и установить драйвер самостоятельно. Это не очень сложно, скорее утомительно. О компиляции программного обеспечения мы поговорим в главе 23.
• Производители аппаратного обеспечения что-то скрывают. Производитель не выпустил либо исходный код драйвера для Linux, либо документацию, на основе которой можно было бы написать драйвер. Это означает, что производитель аппаратного обеспечения пытается сохранить программные интерфейсы устройства в секрете. Так как мы предпочитаем не использовать засекреченные устройства в своих компьютерах, я предлагаю удалить это нетолерантное устройство и отправить его в кучу из других бесполезных гаджетов.
15. Устройства хранения
В предыдущих главах мы познакомились с приемами работы с данными на уровне файлов. В этой главе мы будем рассматривать данные на уровне устройств. Linux обладает удивительными возможностями работы с устройствами хранения, такими как жесткие диски, сетевые хранилища или виртуальные устройства хранения, например RAID (redundant array of independent disks — избыточный массив из независимых дисков) и LVM (logical volume manager — диспетчер логических томов).
Однако поскольку эта книга не о системном администрировании, мы не будем пытаться охватить эту тему во всех подробностях, а всего лишь познакомимся с некоторыми понятиями и ключевыми командами, которые используются для управления устройствами хранения данных.
Для выполнения упражнений к этой главе нам понадобится флеш-диск (флешка), подключаемый к порту USB компьютера, диск CD-RW (для систем, оборудованных пишущим приводом CD-ROM) и такой раритет, как гибкий диск (опять же, если система оборудована этим устройством).
Мы познакомимся со следующими командами:
• mount — монтирует файловые системы.
• umount — размонтирует файловые системы.
• fdisk — инструмент для работы с таблицей разделов.
• fsck — проверяет и восстанавливает файловые системы.
• fdformat — форматирует гибкий диск.
• mkfs — создает файловые системы.
• dd — выполняет запись данных блоками непосредственно в устройство.
• genisoimage (mkisofs) — создает файл образа ISO 9660.
• wodim (cdrecord) — записывает данные на оптический носитель.
• md5sum — вычисляет контрольную сумму MD5.
Монтирование и размонтирование устройств хранения
Последние достижения Linux на настольных компьютерах сделали управление устройствами хранения чрезвычайно простым для обычных пользователей. Достаточно подключить устройство к компьютеру, и оно тут же готово к работе. Раньше (года этак до 2004-го) все необходимые операции требовалось выполнять вручную. В серверных системах эти операции по большей части все еще выполняются вручную, потому что серверы часто предъявляют особые требования к устройствам хранения и настройкам.
Первый шаг в управлении устройствами хранения — подключение самого устройства к дереву файловой системы. Этот процесс называется монтированием и позволяет устройству участвовать в работе операционной системы. Как рассказывалось в главе 2, Unix-подобные операционные системы, такие как Linux, поддерживают единое дерево файловой системы, к разным точкам которого подключаются дополнительные устройства. Этот подход отличается от используемого в MS-DOS и Windows, где каждому устройству соответствует отдельное дерево файлов и каталогов (например, C:, D: и т.д.).