Глава 3. Установка программ
3.1.1. Основные понятие о пакетах
Давайте сначала рассмотрим процесс установки программ в Windows. Как правило, дистрибутив Windows-программы состоит та установочного файла (обычно называется setup.exe или install.exe) и нескольких вспомогательных файлов (например, архива, содержащего саму программу) или только из одного установочного файла (если последний выполнен по принципу самораспаковывающегося архива).
Установочный файл (далее инсталлятор) просит пользователя точнить параметры установки, например, выбрать каталог для установки, указать программную группу и т.д. Затем начинается установка программы: инсталлятор копирует файлы из дистрибутива программы в выбранный пользователем каталог. После этого инсталлятор вносит необходимые изменения в системный реестр. Все, программа установлена.
В Linux же все происходит несколько иначе. Дистрибутив программы (сама программа и вспомогательные файлы, напри-тер, файлы справки, конфигурационные файлы) поставляется в виде пакета. В мире Linux существуют два основных типа пакета: RPM-пакеты и DEB-пакеты. Первые пакеты используются во всех дистрибутивах, которые были основаны на Red Hat Linux или на производных этого дистрибутива: Fedora, ASP Linux, ALT Linux, Mandriva и т.д. DEB-пакеты используются дистрибутивом Debian и его производными (Ubuntu, Kubuntu и др.).
По сути, пакет (как RPM, так и DEB) — это архив, содержащий программу. Но кроме самой программы в этом архиве есть указания для менеджера пакетов о том, как нужно устанавливать программу. А именно: куда нужно установить тот или иной файл программы, какие команды нужно выполнить до и после установки и т.д.
Обратите внимание: пользователя никто не спрашивает, куда нужно установить программу, да и установкой программы занимается не инсталлятор, входящий в дистрибутив программы, а менеджер пакетов. Это избавляет разработчиков программ от написания собственных инсталляторов, да и программы всегда устанавливаются единственным верным способом.
В Windows к идее пакетов (файлы с расширением .msi) пришли позже, но она не получила широкого распространения. Фактически в MSI-пакетах распространяются только программы от Microsoft, а сам процесс установки пакета напоминает работу обычного инсталлятора.
Но вернемся к RPM-пакетам. Как уже говорилось, в пакете содержать служебные инструкции для менеджера пакетов о том, куда установить тот или иной файл, а также о командах, которые нужно выполнить в процессе установки пакета. Кроме этил сведений, в пакете содержатся также сведения о зависимости, т.е. список пакетов, от которых зависит данный пакет, и список пакетов, с которыми устанавливаемый пакет конфликтует,
Тут псе просто. Предположим, что у нас есть библиотека, с использованием функций. которой написана программа, например, Qt. Если библиотека не установлена на компьютере, то и программа работать не будет. Но библиотека занимает много места, поэтому вместе с программой ее распространять не будешь (тем более, что библиотека-то стандартная и входит в состав многих дистрибутивов). Разработчику программы намного проще при сборке пакета указать, что пакет требует наличия библиотеки Qt. Менеджер пакетов видит эту зависимость, и если она не удовлетворена, пытается ее разрешить, другими словами, скачать пакет с Интернета (или другого хранилища макетов). В ранних версиях Linux менеджеры пакетов не умели разрешать такого рода зависимости: вы просто получали сообщение о том, что пакет установить невозможно по причине отсутствия такого-то пакета.
Теперь договорим о конфликтах. Предположим, что вы написали свой собственный WWW-сервер, ваш коллега тоже написал программу WWW-сервер. Как мы знаем, WWW-сервер использует для своей работы порт 80. Пользователь установил на свой компьютер ваш WWW-сервер, который сразу же после своего запуска узурпировал 80-й порт. При попытке установить на этот же компьютер второй WWW-сервер пользователь получит сообщение о том, что устанавливаемый пакет конфликтует с уже установленным (причина конфликта ясна: в системе может быть только одна программа, использующая 80-й порт). Конечно, такое сообщение пользователь увидит лишь в той случае, если разработчик второго сервера (или вы – для своего пакета – разницы нет) не поленится составить список конфликтов. Если же он поленился это сделать, то последствия такой установки ни к чему хорошему не приведут – скорее всего, оба WWW-сервера работать не будут,
Менеджер пакетов не разрешает конфликты. Он просто сообщает, что такой-то пакет конфликтует с таким-то пакетом. Окончательное решение за вами: вы можете удалить уже установленный пакет или отказаться от установки нового пакета.
3.1.2. Репозитории: хранилища пакетов
Раньше, когда быстрый Интернет могли себе позволить далеко не все, на дистрибутивные диски помещались все пакеты, входящие в состав дистрибутива. Не секрет, что большую часть этих пакетов пользователь не использовал. Многие пользователи при установке Linux не очень хотели разбираться, что нужно, а что — нет, и устанавливали все пакеты, которые были на дистрибутивных дисках. Можете себе сами представить, сколько Linux занимал места на жестком диске.
Сейчас все немного иначе. На дистрибутивный DVD (обычно Linux распространяется именно на DVD, хотя можно ещё встретить дистрибутивы на нескольких CD-дисках> помешаются только самые необходимые пакеты, т.е. только те, которые необходимы большинству пользователей. Также в обязательном порядке помещаются пакеты, которые занимают много места на диске. Например, в состав Fedora входят две графические среды: GNOME и KDE. По умолчанию пользователю предлагается установить GNOME, но если он при установке системы выберет KDE, не загружать же ему сотни мегабайтов из Интернета? Поэтому »большие» программные продукты также помещаются на DVD. Все остальные пакеты хранится, в хранилищах пакетов, которые называются репозиториями.
Репозиторий — это обычный каталог, содержащий RPM-файлы и специальные служебные файлы, описывающие пакеты репозитория. Любой желающий может поместить в каталог диска любые RPM-пакеты и с помощью утилиты createrepo создать свой репозиторий. Но обычно под xpанилищем пакетов подразумевается сервер в Интернете, содержащий набор пакетов и служебные файлы, описывающие репозиторий.
При попытке установки пакета менеджер пакетов подключается к удаленному хранилищу пакетов, загружает пакет на компьютер пользователя и устанавливает его.
Преимущества такой организации очевидны, как, впрочем, и недостатки. К преимуществам можно отнести то, что вы устанавливаете только те программы, которые нужны лично вам, а не все программы, которые есть в составе дистрибутива. Да и с помощью репозиториев легко обновлять систему: у вас будут всегда установлены самые последние версии пакетов.
Но недостатки тоже на лицо. Если у вас нет Интернета, та и программу вы установить не можете! К тому же для установки программ нужно стабильное и быстрое соединение. Если у вас модемное или GPRS-соединение, то можете забыть об установи больших программ по следующим причинам:
• постоянные обрывы соединения (в случае модема);
• медленная скорость закачки пакета;
• дороговизна (в случае GPRS).
В любом случае за установку программ теперь нужно платить. Нет, не за доступ к репозиториям, а за Интернет, но в конечном итоге это ничего не меняет. Не все ли равно, кому платить деньги — Интернет-провайдеру или еще кому-то. А ведь раньше можно было установить все необходимое с одного DVD!
Конечно, если у вас ADSL-соединение, то долго ждать не придется: никаких обрывов, да и скорость соединения позволяет производить установку пакетов в режиме он-лайн. А если у вас безлимитное соединение (т.е. вы платите только абонплату, и не оплачиваете трафик), тогда вам вообще хорошо!
Но что делать пользователям, у которых медленное соединение или вообще в данный момент нет возможности подключиться к Интернету? Ведь дополнительные программы — это не главное. Дело в том, что после установки системы вам придется скачать кодеки идя прослушивания музыки и просмотра фильмов, проприетарные драйверы для видеокарты (для запуска трехмерного рабочего стола) и т.д. В этом случае, при всем моем уважении к Fedora и Red Hat, рекомендую выбрать другой дистрибутив, например Mandriva. Там и менеджер пакетов настроен на установку пакетов с дистрибутивного DVD, да и на самом DVD намного больше пакетов, включая кодеки и другие полезные пакеты, которые в случае с Fedora вам придется загружать из Интернета.
3.1.3. Использование yum
Управлением пакетами в Fedora занимается программа yum (Yellow dog Updater Modified) — это и есть менеджер пакетов. С его помощью вы можете устанавливать и удалять пакеты, а также обновлять уже установленные пакеты.
Программа yum не обладает графическим интерфейсом, поэтому запускать ее придется или в консоли, или в терминале (команда меню Приложения→Системные→Терминал). Поскольку в большинстве случаев установка пакетов будет осуществляться из Интернет-репозитория, перед установкой пакетов нужно подключиться к Интернету.
Для управления пакетами нужны полномочия пользователя root, поэтому вам нужно ввести команду:
Предположим, что вы хотите установить программу. Для этого вы вводите команду:
yum install имя_пакета
Yum просматривает свой файл конфигурации /etc/yum.conf, в котором описаны репозитории. Затем он подключается к репозиторию, содержащему нужный вам пакет, скачивает и устанавливает его. Если менеджер пакетов обнаружит, что устанавливаемый пакет зависит от дополнительных пакетов, которые еще не установлены, он скачает, а затем установит и их.
Общий синтаксис вызова yum выглядит так:
Список наиболее полезных команд yum приведен в табл. З.1.
Для получения информации об остальных командах yum откройте терминал и введите команду man yum. Откроется страница руководства (man от англ. manual) по утилите yum, содержащая полную информацию о ней.
Таблица 3.1. Самые полезные команды yum
Команда | Описание |
---|---|
install пакет | Используется для установки указанного пакета (указанных пакетов). Если будет обнаружено, что устанавливаемый пaкeт зависит от другого пакета, то тот пакет также будет установлен |
remove пакет | Удаляет указанный пакет |
update [пакет] | Обновляет указанный пакет или все пакеты, если ни один пакет не указан. Осторожнее с этой командой, если у вас не безлимитное соединение с Интернетом; обновление системы может занимать сотни мегабайтов |
check-update | Менеджер пакетов выполняет только проверну наличия обновлений, т.е. реально обновления не скачиваются и не загружаются. Вы можете использовать эту команду как для проверки наличия обновлений указанного пакета, так и для проверки обновлений для всех пакетов (просто не указывайте пакеты) |
info пакет | Используется для просмотра информации о пакета (рис. 3.1). |
list [маска] | Выводит список установленных пакетов. Вы можете задать маску вывода имен пакетов, например, для вывода всем установленных пакетов, начинающихся строкой gnome, введите команду yum list gnome* (рис. 3.2) |
grouplist | Выводит список групп пакетов (pиc. 3.3) |
groupinstall группа | Позволяет установить все пакеты из указанной группы |
search слово | Используется для поиска пакетов, которые в своем описании содержат указанное пользователем ключевое слово |
При выводе информации о пакете (команда yum info) выводится имя пакета (Name), архитектура компьютера (Arch), версия (Version) и релиз (Release) пакета, размер занимаемого дискового пространства (Size), источник пакета (Repo), общая информация о пакете (Summary), полное описание пакета (Description). Пример:
yum info gnоmesword
Name: gnomesword Arch: i386 Version: 2.3.1
Summary: GHQME-based Bible research tool
Gnomesword is a Bible Study application for GNOME, a graphical desktop environment which is available for several Unix and Linux flavors. It is based on SWORD by the CrossWire Bible Society, a framework providing the possibility to study the Bible and additional information like commentaries, dictionaries and other texts using your computer.
Pиc. 3.1. Вывод информации о пакете
Во время установки пакетов с помощью команды yum install далеко от компьютера не отходите. В отличие от команды rpm, когда в большинстве случаев пакет устанавливается автоматически, при использовании yum иногда необходимо вмешательство пользователя. Поскольку нужные пакеты частенько находятся в Интернете, yum выведет общий размер пакетов и спросит, хотите ли вы их установить. На рис. 3.4 показано, что общий размер загружаемых пакетов составляет 7,2 Мбайт. Теперь вам нужно решить: загружать их (нужно Нажать ‹Y›) или нет (нажать ‹N›).
Рис. З.2. Вывод пакетов по маске gnome*
Рис. 3.3. Вывод групп пакетов
Рис. 3.4. Процесс установки пакетов в yum
3.1.4. Конфигурационный файл /etc/yum.conf
Сейчас мы поговорим об основном конфигурационном файле /etc/yum.conf. Для его редактирования вам нужны права пользователя root, поэтому, чтобы открыть данный файл для редактирования, нам придется ввести в терминале следующую команду:
su -с «gedit /etc/yum.conf»
В листинге З.1. представлен типичный конфигурационный файл yum.conf.
Листинг 3.1. Пример конфигурационного файла yum.conf
# PUT YOUR REPOS HERE OR IN separate files named file.repo
В секции main задаются общие для всех репозиториев параметры. Как правило, их не нужно изменять. А вот сами репозитории можно описать или в каталоге /etc/yum.repos.d (при этом каждый репозиторий описывается в отдельном файле), или после секции main. Перейдите в каталог /etc/yum.repos.d и просмотрите любой файл репозитория, например fedora.repo (это основной репозиторий Fedora):
Содержимое этого файла представлено в листинге3.2.
Листинг 3.2. Файл /etc/yum.repos.d/fedora.repo
name=Fedora $releasever — $basearch
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora file:///etc/pki/rpm-gpg/RPM-GPG- KEY
name=Fedora $releasever — $basearch — Debug
name=Fedora $releasever — $basearch — Source
Как видно из листинга 3.2, в файле fedora.repo описано целых три репозитория. Параметр name задает имя репозитория, после него следует параметр baseurl, задающий расположение репозитория.
Параметр rnirrorlist задает список зеркал репозитория, к которым можно обращаться, если основной сервер, заданный в baseurl, недоступен.
Параметр enabled очень важный; если он равен 0, то репозиторий отключен, т.е. не используется. Это очень удобно. Вы можете описать дополнительные репозитории, но использовать их только при необходимости. Как уже было отмечено, в файле fedora.repo описано три репозитория, но два из них отключено. Репозиторий fedora-debuginfo содержит отладочную информацию, a fedora-source — исходные коды программ. Оба репозитория представляют ценность только для программистов, а обычным пользователям они не нужны.
Параметр gpgcheck задает, будет ли проверяться подпись пакета перед его установкой. Из соображений безопасности рекомендуется включить данный параметр. Следующий и последний параметр gpgkey задает файл GPG-ключа, который будет использоваться для проверки подписей пакетов.
3.1.5. Установка дополнительных репозиториев
В предыдущей главе мы рассматривали подключение репозитория livna. Напомню вам команды для подключения данного репозитория:
rpm -ihv http://rpm.livna.org/Livna-release-8.rpm (для Fedora 8)
rpm -ihv http://rpm.livna.org/livna-release-7.rpm (для Fedora 7)
rpm -ihv http://rpm.livna.org/livna-release-6.rpm (для Fedora Core 6)
С командой rpm мы познакомимся в следующем разделе этой главы, а пока вам нужно знать, что для ее выполнения нужны права пользователя root, поэтому, перед тем как ввести эту команду в терминале, нужно ввести команду su.
В результате устанjdки пакета livna-release не произойдет ничего нереального и фантастического: просто в каталог /etc/yum.repos.d будет добавлен файл, описывающий репозиторий Livna. Вот и все.
Но репозиторий livna — это не единственный полезный репозиторий. Кроме него я настоятельно рекомендую установить репозиторий freshrpms:
rpm -ivh http://ftp.freshrpms.net/pub/freshrpms/f edora/linux/8/freshrpms-release/freshrpms-release-1.1-1.fс.noarch.rpm
Первую команду нужно ввести, если у вас Fedora 7, а вторую — если у вас самая современная версия дистрибутива — восьмая.
Это еще не все! Сейчас мы вручную добавим два репозитория.
Откройте ваш файл /etс/yum.conf:
su # если вы уже получили права root, su вводить не нужно!
После секции main добавьте следующие строки:
Источник