• 3.1. Менеджер пакетов yum
  • 3.1.1. Основные понятие о пакетах
  • 3.1.2. Репозитории: хранилища пакетов
  • 3.1.3. Использование yum
  • 3.1.4. Конфигурационный файл /etc/yum.conf
  • 3.1.5. Установка дополнительных репозиториев
  • 3.1.6. Yum и прокси-сервер
  • 3.2. Графический менеджер пакетов pirut
  • 3.2.1. Усовершенствование программы pirut в Fedora 8
  • 3.2.2. Проблема с system-config-packages в Fedora 6/7
  • 3.2.3. Дополнительные репозитории
  • 3.2.4. Создание собственного сервера пакетов
  • 3.2.5. Автоматическое обновление системы
  • 3.3. Программа rpm: локальная установка пакетов
  • 3.3.1. Немного истории
  • 3.3.2. Формат имени пакета
  • 3.3.3. Использование RPM
  • 3.3.3.1. Установка пакетов
  • 3.3.3.2. Удаление пакетов
  • 3.3.3.3. Просмотр установленных пакетов
  • 3.3.3.4. Вывод информации о пакете
  • 3.3.3.5. Обновление пакета
  • 3.4. Установка программ из исходного кода
  • 3.4.1. Идея открытого кода
  • 3.4.2. Компилятор gcc
  • 3.4.3. Компиляция
  • Глава 3. Установка программ

    3.1. Менеджер пакетов yum

    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, поэтому вам нужно ввести команду:

    su

    Предположим, что вы хотите установить программу. Для этого вы вводите команду:

    yum install имя_пакета

    Yum просматривает свой файл конфигурации /etc/yum.conf, в котором описаны репозитории. Затем он подключается к репозиторию, содержащему нужный вам пакет, скачивает и устанавливает его. Если менеджер пакетов обнаружит, что устанавливаемый пакет зависит от дополнительных пакетов, которые еще не установлены, он скачает, а затем установит и их.

    Общий синтаксис вызова yum выглядит так:

    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

    Available Packages

    Name: gnomesword Arch: i386 Version: 2.3.1

    Release: 1.fc8

    Size: 4.6 M

    Repo: updates

    Summary: GHQME-based Bible research tool

    Description:

    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

    [main]

    cachedir=/var/cache/yum

    keepcache=0

    debuglevel=2

    logfile=/var/log/yum.log

    exactarch=1

    obsoletes=1

    gpgcheck=1

    metadata_extpirе=1800

    # PUT YOUR REPOS HERE OR IN separate files named file.repo

    # in /etc/yum.repos.d

    В секции main задаются общие для всех репозиториев параметры. Как правило, их не нужно изменять. А вот сами репозитории можно описать или в каталоге /etc/yum.repos.d (при этом каждый репозиторий описывается в отдельном файле), или после секции main. Перейдите в каталог /etc/yum.repos.d и просмотрите любой файл репозитория, например fedora.repo (это основной репозиторий Fedora):

    cd /etc/yum.repos.d

    cat fedora.repo

    Содержимое этого файла представлено в листинге3.2.

     Листинг 3.2. Файл /etc/yum.repos.d/fedora.repo

    [fedora]

    name=Fedora $releasever - $basearch

    #baseurl=http://download.fedora.redhat.com/рub/fedora/linus/releases/$releasever/Everything/$basearch/os/

    mirrorlist=http://mirrors.fedoraproject.org/mirrotlist?repo-fedora-$releasever&arch-$basearch

    enabled=1

    gpgcheck=1

    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora file:///etc/pki/rpm-gpg/RPM-GPG- KEY

    [fedora-debuginfo]

    name=Fedora $releasever - $basearch - Debug

    #baseurl=http://download.fedora.redhat.com/pub/fedora/linus/releases/$releasever/Everything/$basearch/debug/

    mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-debug-$releasever&arch=$basearch

    enabled=0

    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KЕY-fedora file:///etc/pki/rpm-gpg/RPM-GPG-KEY

    [fedora-source]

    name=Fedora $releasever - $basearch - Source

    #baseurl=http://download.fedora.redhat.com/pub/fedora/linus/releases/$releasever/Everything/source/SRPMS/

    mirrorlist=http://mirrors. fеdoraproject.org/mirrorlist?repo=fedora-source-$releasever&arch=$basearch

    enabled=0

    gpgkey=file:///etc/pki/rpm-gpg/RPH-GPG-KEY-fedora file:///etc/pki/rpm-gpg/RPM-GPG-KEY

    Как видно из листинга 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/freshirpms/fedora/1inux/7/freshrpms-release/freshrpms-release-1.1-1.fc.noarch.rpm

    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 вводить не нужно!

    gedit /etc/yum.conf

    После секции main добавьте следующие строки:

    [macromedia]

    name=Масrоmediа for i386 Linux

    baseurl=http://macromedia.rediris.es/rpm/

    #baseurl=http://macromedia.mplug.org/rpm/

    #baseurl=http://sluglug.ucsc.edu/macromedia/rpm/

    enabled=1

    gpgcheck=1

    gpgkey=http://macromedia.rediris.es/FEDORA-GPG-KEY

    [newrpms.sunsite.dk]

    name=Fedora Core i386 NewRPMS.sunsite.dk

    baseurl=http://newrpms.sunsite.dk/apt/redhat/en/basearch/fс$releasever

    #http://newrpms.atrpms.net/apt/redhat/en/$basearch/fc$releasever

    failovermethod=priority

    enabled=0

    gpgcheck=1

    Вообще-то, вы можете данные секции скопировать в отдельный файл, а затем поместить этот файл в каталог /etc/ yum.repos.d, но, на мой взгляд, проще их поместитъ в yum.conf.

    Секция macromedia описывает репозиторий oт Macromedia для Linux, а вторая секция, newrpms.sunsite.dk, описывает альтернативный источник пакетов от SunSite. Позже мы будем устанавливать пакеты на этих репозиториев, поэтому не поленитесь добавить их.

    После редактирования файла yum.conf сохраните его и введите следующие две команды:

    rpm -import http://freshrpms.net/packages/RPM-GPG-KEY.txt

    rpm -import http://newrpms.sunsite.dk/gpg-pubkey-newrpms.txt

    Данные команды импортируют в вашу систему ключи от только что подключенных репозиториев.

    3.1.6. Yum и прокси-сервер

    Вы подключаетесь к Интернету через прокси-cервеp, а не напрямую? Тогда у вас могут возникнуть проблемы с yum - он откажется работать. Чтобы заставить его работать, нужно в конфигурационном файле /etc/yum.conf указать имя про-кси-cервера (или его IP-адрес), порт, имя пользователя и пароль (если нужно). Предположим, что ваш прокси-сервер называется proxy.firma.ru, работает через порт 3128, и нам администратор сети присвоил имя пользователя denis и пароль qwerty. Тогда в секцию main файла yum.сonf вам нужно добавить следующие строки:

    # имя сервера и его порт в формате: имя:порт

    proxy-http://proxy.firma.ru:3128

    # Параметры учетной записи (если: нужно)

    proxy_username-denis

    proxy_password=qwerty

    После этого yum должен работать с прокси-сервером нормально.

    3.2. Графический менеджер пакетов pirut

    3.2.1. Усовершенствование программы pirut в Fedora 8

    В предыдущих версиях дистрибутива Fedora (6 и 7) конфигуратор pirut (он же system-config-packages) был довольно проблемным приложением. Проблема была связана с неправильной настройкой репозиториев пакетов. В восьмой версии Fedora все проблемы с pirut устранены. Если же у вас до сия пор седьмая версия дистрибутива, тогда В последующих параграфах будет описано, как правильно настроить программу pirut.

    В восьмой версии Fedora вообще нет конфигуратора system-config-packages. При выборе команды меню Приложения→Установка→Удаление программ запускается программа pirut. Зато в восьмой версии есть программа system-instalI-packages, предназначенная для установки пакетов, переданных ей в качестве параметров, работающая в графическом режиме. С ней мы уже успели познакомиться при установке Flash-плагина дли браузера Firefox.

    Запустите программу pirut (команда меню Приложения→Установка/удаление программ). Появится сообщение о том, что не удается получить сведения о программах (рис. 3.5). Не волнуйтесь, все нормально. Щелкните на кнопке Repository Manager и в раскрывшемся окне Repository Manager отключите все репозитории кроме InstallMedia (рис. 3.6).

    Рис. 3.5. Ошибка: не удается получить сведения о программах


    Рис. 3.6. Окно Repository Manager


    После этого заново запустите программу pirut, предварительно установив дистрибутивный DVD системы в привод. Программа запустится без ошибок и вы сможете устанавливать пакеты, используя дистрибутивный DVD (рис. 3.7).

    Открыть снова окно менеджера источников можно, нажав ‹Ctrl+R› в окне менеджера пакетов.

    Рис. 3.7. Менеджер пакетов

    3.2.2. Проблема с system-config-packages в Fedora 6/7

    Наверное, вы уже пробовали запускать программу Установка/удаление приложений (меню Приложения) и заметили, что если запустить ее, когда компьютер не подключен к Интернету, программа отказывается работать. И это не удивительно, ведь программа pirut (она же system-config-packages), запускаемая командой меню Приложения→Установка/удаление приложений, всего лишь графический интерфейс для yum, а yum, как уже было отмечено, по умолчанию настроен на использование Интернет-репозитория.

    Но есть одна загвоздка. Рассмотрим реальную ситуацию. Вы установили Fedora, но при установке выбрали не все пакеты с DVD. Вообще-то, это разумное решение, Ведь вам все пакеты и не нужны, да и учитывая то, что Fedora при выборе пакетов не сообщает, сколько места они занимают на диске, очень легко превысить доступное дисковое пространство.

    После установки вы рассчитываете, что доустановите с дистрибутивного DVD необходимые дополнительные пакеты. Вы запускаете программу Установка/удаление приложений и получаете… сообщение об ошибке. Да, yum настроен только на Интернет-репозитории и ничего знать не желает о пакетах, которые имеются на дистрибутивном DVD.

    Получается своего рода замкнутый круг:

    • вы боитесь превысить доступное дисковое пространство, потому что именно инсталлятор Fedora не выводит сведения о размере выбранных пакетов;

    • но в то же время вы не можете установить пакеты с DVD, потому что yum отказывается это сделать.

    Тогда у вас один выход - закачать нужные пакеты с Интернета, используя программу Установка/удаление приложений, Но как это сделать, если у вас пока нет подключения к Интернету, или есть, но очень медленное (модем или GPRS), Иногда мне кажется, что Fedora создана для пользователей с огромным жестким диском и очень быстрым Интернетом. Да, для таких пользователей, которым не нужно беспокоиться о дисковом пространстве (поэтому при установке и не выводится размер выбранных пакетов) и трафике. Какая разница, сколько займет на диске дистрибутив: 2 или 6 Гбайт, если свободно еще 300 Гбайт? Какая разница, сколько занимают устанавливаемые макеты, если трафик безлимитный, да и скорость соединения в несколько мегабитов в секунду.

    Теперь вернемся к нашей ситуации и попытаемся ее решить. Первое, что приходит в голову - это установить имеющиеся на DVD пакета с помощью программы rpm. Идея хорошая, но если вам нужно установить какой-то программный комплект, например, тот же KDE, в состав которого входит множество пакетов и каждый пакет с огромным списком зависимостей, то у вас быстро пропадет желание использовать rpm.

    Выходит, что использование rpm для локальной установки пакета - это не панацея. Пару пакетов вы еще установите, а для установлен большого количества пакетов нужно автоматизировать этот процесс.

    Сейчас я расскажу, как решал проблему с yum на cвоем домашнем компьютере. Честно говоря, я мог бы этого и не делать, поскольку скорость используемого соединения (1 Мбит/с) позволяет мне загружать пакеты с Интернета. Просто не хочется платить за трафик, особенно учитывая то, что все необходимые пакеты есть на дистрибутивном DVD, а потраченный на загрузку пакетов трафик можно было бы использовать на что-то более лолезное.

    Первым делом я отключил все Интернет-репозитории, чтобы они не мешали, Если ваш компьютер не подключен к Интернету, то вам рекомендую сделать то же самое. Напомню, что для отключения репозитория нужно открыть файл этого репозитория (см. каталог /etc/yum.repos.d) и установить для опции enabled значение 0:

    enabled=0

    Если у вас описаны дополнительные репозитории в /etc/yum.conf, то их тоже нужно отключить. Когда появится доступ к Интернету, вы всегда сможете их включить.

    После этого откройте yum.conf и добавьте в него строки:

    [base]

    name=Fedora

    baseurl=file://mnt/cdrom

    enabled=1

    Как видите, я добавил репозиторий и в качестве адреса указал каталог /mnt/cdrom. Конечно, нужно предварительно "подмонтировать" мой DVD к этому каталогу:

    # mount /dev/cdrom /mnt/cdrom

    Поcле этого я запустил программу управления пакетами:

    # system-config-packages

    Напомню: если перед командой указан знак #, то это означает, что команда должна быть выполнена от имени пользователя root.

    Программа запустилась, отобразила группы пакетов и сами пакеты! Но чуда не произошло. При попытке установки пакета я увидел сообщение об ошибке:

    [Еrrno 4] IOError: ‹urlopen error unknown url type: media›

    Ради интереса введите данную фразу в любой поисковик: вы увидите очень много ссылок (один только Google нашел более 150 ссылок). Выходит, не один я столкнулся с такой проблемой.

    Чтобы решить данную проблему, вам нужно установить пакет createrepo. Он находится на DVD (каталог Fedora/RPMS/) и не требует дополнительных пакетов, поэтому проблем с его установкой у нас не будет:

    # rpm -ihv createrepo*

    Затем нужно создать каталог, который будет использоваться как репозиторий пакетов. Сразу вас успокою: мы не будем копировать все пакеты с дистрибутивного DVD на жесткий диск, поэтому можете не беспокоиться относительно используемого места.

    Для репозитория был создан каталог dvd-repo:

    # mkdir /dvd-repo

    Затем перейдите в каталог DVD, содержащий пакеты (Fedora/RpmS). Я предполагаю, что DVD "подмонтирован" к каталогу /mnt/cdrom:

     cd /mnt/cdrom/Fedora/RPMS

    После этого введите команду:

    # createrepo -o /dvd-repo ./

    Данная команда создаст в каталоге /dvd-repo репозиторий по файлам, которые находятся в каталоге /mnt/cdrom/Fedora/ RPMS. Теперь, реально, у нас есть репозиторий, но в нем нет пакетов. Понятно, что при попытке установки из такого "хранилища" мы получим сообщение ой ошибке. Поэтому нам нужно ввести следующую команду:

    ln -s /mnt/cdrom/Fedora/RPMS/* /dvd-repo

    Данная команда создаст в каталоге /dvd-repo символические ссылки на файлы, которые находятся на DVD. Вот и все. Осталось только настроить файл yum.conf. Для этого откройте /etc/yum.conf:

    # gedit /etc/yum.conf

    А затем добавьте в него следующие строки:

    [base]

    baseurl-file:///dvd-rеро

    enabled=1

    gpgcheck=0

    Проверь подписей пакетов для данного репозитория и отключил, поскольку пакеты записаны на DVD - проверять подпись пакета нет смысла. После этого вы можете запустить графический менеджер пакетов - все будет работать:

    # system-config-packages

    Полная версия файла конфигурации yum.conf для установки пакетов с дистрибутивного DVD представлена в листинге 3.3.

    Листинг 3.3. Конфигурационный файл /etc/yum.conf для установки пакетов с DVD

    [main]

    cachedir=/var/cache/yum

    logfile=/var/log/yum.log

    kеерсасhе=0

    pkgpolicy=newest

    distroverpkg=redhat-release

    tolerant=1

    exactaxch=1

    obsoletes=1

    gpgcheck=1

    plugins=1

    metadata_expire=1800

    [base]

    name=Fedora-DVD

    baseurl=file:///dvdl-repo

    gpgcheck=0

    Приведенный мною способ решения проблемы - далеко не единственный. Если вам интересно, как другие пользователи "побороли" данную проблему, посетите следующую Web-страницу:

    http://www.dkws.org.ua/phpbb2/viewtopic.php?t=1286

    3.2.3. Дополнительные репозитории

    Предположим, что у вac появился доступ к Интернету, но yum уже настроен на локальный источник - дистрибутивный DVD, На самом деле - это не проблема. Перейдите в каталог /etc/yum.repos.d, откройте файл нужного репозитория и установите для eго опции enabled значение 1:

    enabled=1

    Проблема решена.

    3.2.4. Создание собственного сервера пакетов

    Данный параграф больше рассчитан на администраторов сетей, которые понимают, что они делают. Обычным пользователям его можно прочитать разве что для "общего развития", хотя приведенный способ можно удачно использовать не только в сети масштаба предприятия, но и в небольшой домашней сети.

    Предположим, что у нас есть небольшая (или большая - разницы нет) сеть и на некоторых компьютерах сети установлен дистрибутив Fedora. Дистрибутивный писк, понятно, один. Если компьютеров несколько, то диск будет "мигрировать" от одного компьютеру к другому и в конце концов, как это часто бывает, потеряется. Поэтому целесообразно создать собственный сервер репозиториев.

    Идеи проста, как все гениальное: на одном из компьютеров, работающих под управлением Fedora, развернуть Web-сервер, в его корневой каталог поместить все пакеты с дистрибутивного DVD, создать репозиторий с помощью утилиты createrepo и настроить все остальные компьютеры в сети на использование "домашнего" репозитория.

    Итак, у нас есть план действия, осталось только воплотить его в реальность. Для начала нам нужен. Web-сервер. Для определенности будем считать, что мы установили Web-сервер на компьютере с именем comp1 и IP-адресом 192.168.1.1.

    Установить Web-сервер можно с помощью команды:

    yum install httpd

    После установки Web-сервера откройте его конфигурационный файл:

    # gedit /etc/httpd/conf/httpd.conf

    Найдите в нем директиву ServerName и укажите в ней доменное имя компьютера, на котором установлен Web-сеpвеp, например: ServerName comp1.firma.ru

    Сохраните файл httpd.conf. После этого нужно "подмонтировать" DVD с пакетами и скопировать все файлы в /var/www/html - это корневой каталог документов Web-сервера:

    # mount /dev/cdrom /mnt/cdrom

    Теперь перейдите в каталог /var/www/html и создайте репозиторий:

    # cd /var/www/html

    # rpm -ihv createrepo* (не нужно, если createrepo уже установлена)

    # createrepo ./

    Все готово. Осталось только запустить Web-сервер:

    # /etc/init.d/httpd start

    В дальнейшем Web-сервер будет запускаться автоматически по умолчанию, поэтому вам не придется вводить эту команду каждый день.

    Сервер настроен. Теперь перейдем к остальным компьютерам, которые будут использовать наш сервер пакетов. На каждом компьютере в каталоге /etc/yum.repos.d нужно создать файл internal.repo (название можно выбрать другое):

    # cd /etc/yum.repos.d

    # touch internal.repo

    # gedit internal.repo

    Содержимое файла internal.rеро представлено в листинге 3.4.

    Листинг 3.4. Содержимое файла /etc/yum.repos.d/internal.repo

    [internal]

    name=fedora-internal

    baseurl=http://comp1

    enabled=1

    gpgcheck=0

    Если DNS-сервер в вашей сети не настроен, вместо доменного имени можно указать IP-адрес сервера пакетов: baseurl=http://192.1б8.1.1

    Вот теперь никогда не возникнет "коллизий" между пользователями - теперь все они могут устанавливать пакеты одновременно.

    3.2.5. Автоматическое обновление системы

    Как только вы подключаетесь к Интернету, специальная программа, отслеживающая обновлении пакетов, связывается с сетевыми репозиториями и проверяет, есть ли новые версии установленных а вашей системе пакетов. Если новые версии пакетов найдены, вы увидите соответствующее сообщение (рис. 3.8.).

    Рис. 3.8. Доступны обновления

    При желании можно щелкнуть на кнопке Просмотр обновлений или просто закрыть окно уведомления. Просмотр обновлений позволяет выбрать пакеты для обновления, т.е. вы caми определяете, какие пакеты нужно обновлять, а какие - нет (рис. 3.9).

    Рис. 3.9. Просмотр обновлений

    Обновление системы помогает поддерживать вашу систему в актуальном состоянии, но постоянно обновлять систему накладно, если у вас не безлимитный Интернет. Если за каждый мегабайт трафика приходится платить свои кровные, тогда лучше вообще отключить уведомления об обновлениях. Для зтого выберите команду Система→Параметры→Персональные→Сеансы и в раскрывшемся окне Сеансы на вкладке Запускаемые при старте программы сбросьте флажок программы Уведомления об обновлениях ПО (рис. 3.10).

    Pиc. 3.10. Отключение напоминаний об обновлении

    3.3. Программа rpm: локальная установка пакетов

    3.3.1. Немного истории

    Раньше, когда не было Интернет-репозиториев, во всех RH-совместимых дистрибутивах для установки, удаления и обновления пакетов использовалась программа rpm. RPM (аббревиатура oт Red hat Package Manager) - это один из самых "древних" менеджеров пакетов. Правда, в первой бета-версии дистрибутива Red Hat, которая увидела свет 29 июня 1994 года, использовался другой менеджер пакетов - RPP, Этот менеджер имел ряд существенных недостатков, поэтому уже во второй версии дистрибутива (1995 год) он был заменен на более "продвинутый" менеджер пакетов - RPM.

    Сейчас программу RPM можно встретить во многих дистрибутивах Linux - Fedora, Mandriva, ALT Linux, ASP Linux и др. Но во вcex этим дистрибутивах данная программа остается только для обеспечения совместимости, а по умолчанию используются более совершенные системы управления пакетами, например yum и apt. Преимущества новых систем управления пакетами в том, что они поддерживают удаленные хранилища пакетов. Менеджер RPM, холь и поддерживает установку удаленного пакета (в смысле пакета» расположенного на удаленном сервере), но он не поддерживает концепцию репозиториев как таковую и не позволяет разрешать зависимости непосредственно на этапе установки. На страницах книги эта фраза звучит совсем не страшно, но на практике, поверьте, это очень неудобно. Представьте, что в вашей системе не установлена оболочка KDE, а вы очень хотите ее установить. В yum вам достаточно указать пакет kdebase, и KDE будет установлена. В случае с RPM вы увидите сообщение о том, что пакет kdebase зависит от нескольких пакетов, Когда же вы попытаетесь установить те пакеты, то обнаружите, что они, в свою очередь зависят от других пакетов. Нужно обладать действительно прочным запасом терпения, чтобы устанавливать большие программные комплексы с помощью RPM. Поэтому в большинстве случаев вы будете пользоваться программой yum, а о программе RPM вам нужно знать только потому, что это - традиция.

    Но, ради справедливости, нужно отметить, что RPM намного удобнее для локальной установки пакетов. Например, дома у вас нет Интернета, вы на работе скачали все необходимые пакеты, записали на CD и принесли домой. Дома вам нужно их установить. В yum тоже есть возможность установки локальных пакетов, но эта программа ориентирована на работу с Интернет-репозиториями, поэтому даже при установке локального пакета она попытается связаться с репозиториями, и если обнаружит, что они недоступны (Интернета-то нету!), то у вас не получится установить даже локальный пакет. В случае с RPM при установке локального пакета у вас не возникнет ни малейшей проблемы.

    3.3.2. Формат имени пакета

    Еще со времен второй версии дистрибутива Red Hat принято файлы пакетов называть так:

    <имя-программы>-<версия>-<релиз>.<архитектура>.rpm

    Например:

    program-0.94-2-i386.rpm

    3.3.3. Использование RPM

    Программа RPM не имеет графического интерфейса, поэтому запускать ее нужно в консоли или в терминале (команда меню Приложения→Системные→Терминал). Формат вызова программы rpm следующий:

    rpm [-опции] [пакеты]

    Напомню, что установка программ - это привилегия пользователя root, поэтому перед запуском программы нужно ввести команду su, чтобы "превратиться" в пользователя root.

    3.3.3.1. Установка пакетов

    Для установки пакета (или пакетов - в командной строке можно указать несколько пакетов) используется опция -i:

    rpm - i пакет

    Если вы хотите наблюдать за процессом установки (это очень полезно, если устанавливается большой пакет или же производится установка с удаленного сервера), то нужно указать опцию ihv: вы увидите индикатор установки пакета.

    rpm -ihv пакет

    Предположим, что нам нужно установить пакеты program-base-0.94-2.i386.rpm, program-gui-0.94-2.i386.rpm и program-docs-0.94-2.i386.rpm, которые находятся в каталоге /home/den. При вызове rpm нам нужно указывать полный путь к пакетам (ведь RPM не использует хранилища пакетов, поэтому не "знает", где искать пакеты).

    rpm -ihv /home/den/program-base-0.94-2.i386.rpm

    rpm -ihv /home/den/program-gui-0.94-2.i386.rpm

    rpm -ihv /home/den/program-docs-0.94-2.i346.rpm

    Понятно, что намного проще сначала перейти в каталог /home/den, а потом уже вводить команду rpm.

    rpm -ihv program-base-0.94-2.i386.rpm

    rpm -ihv program-gui-0.94-2.i386.rpm

    rpm -ihv program-docs-0.94-2.i386.rpm

    Можно все эти пакеты указать в одной команде:

    cd /home/den

    rpm -ihv program-docs-0.94-2.i386.rpm program-gui-0.94-2.i386.rpm рrogram-docs-0.94-2.i386.rpm

    Но еще проще использовать маски.

    cd /home/den

    rpm -ihv program*

    В этом случае будут установлены все пакеты, которые начинаются со строки program.

    Если пакет находится в Интернете, то вы можете указать URL пакета, например, так:

    rpm -ihv ftp://dkws.org.ua/files/program-base-0.94-2.i386.rpm

    Понятно, что перед вводом этой команды нужно предварительно подключиться к Интернету.

    Программа rpm поддерживает только протокол FTP (File Transfer Protocol). Протокол HTTP (Hyper Text Transfer Protocol) не поддерживается.

    Если при установке пакета будет выяснено, что он зависит от другого пакета, установка будет прервана до тех пор, пока вы не установите пакет, от которого зависит устанавливаемый вами пакет. Если такого пакета нет, то все равно вы можете установил нужный нам пакет. У программы RPM есть режим --nоdeps, позволяющий пропускать проверку зависимостей:

    rpm -i --nodeps пакет

    Правда, никто не может гарантировать, что установленный таким образом пакет, будет работать. Сами посудить, что толку от установленной программы, если не установлена библиотек функций, которую использует устанавливаемая программа? После запуска программа нам сообщит, что не может найти библиотечный файл и завершит работу…

    3.3.3.2. Удаление пакетов

    Для удаления пакета используется опция -е. При удалении не нужно задавать полное имя файла пакета, достаточно названия самой программы. Например, если изначально пакет назывался program-base-0.94-2.i386.rpm, то для его удаления достаточно ввести команду: rpm -e program-basе

    3.3.3.3. Просмотр установленных пакетов

    Вы хотите просмотреть список установленных программ? Тогда введите команду: rpm -qa

    Менеджер пакетов выведет тысячи различных пакетов. Читать такой вывод, понятно, неудобно, поэтому можно перенаправить вывод программы rpm на программу, организующую постраничный просмотр):

    rpm -qa | less

    Теперь вы сможете "листать" на экране список пакетов с помощью клавиш ‹PageUp› и ‹PageDown›.

    Если вы хотите просмотреть не весь список пакетов, а только пакеты, имена которых содержат определенyю строку, например program, тогда вам нужно использовать вот такую команду: rpm -qa | grep program

    Если таких пакетов много, имеет смысл организовать постраничный просмотр:

    rpm -qa | grep program | less

    Только не перепутайте последовательность программ: сначала нужно вывести список всех установленных пакетов на фильтр grep, который отыщет среди них нужные нам пакеты, а уже после этого передать greр-список программе less.

    3.3.3.4. Вывод информации о пакете

    Для вывода информации о пакете используется опция -qi:

    rpm -qi лакет

    Например:

    rpm -qi bdebase

    Результат работы этой команды показан на рис. 3.11.


    Рис. 3.11. Вывод команды rpm -qi kdebase

    Рассмотрим основные заголовки RPM-пакета.

    • Name - название пакета.

    • Version - версии пакета.

    • Release - релиз пакета (считайте это подверсией).

    • Vendor - производитель программы, находящейся в пакете,

    • Build Date - дата сборки пакета.

    • Install Date - дата установки пакета.

    • Build Host - узел, на котором производилась сборка пакета.

    • Group - название программной группы, к которой относится данный пакет,

    • Source RPM - название исходного RPM-файла, с которого было установлено программное обеспечение.

    • Size - размер в байтах.

    • License - лицензия, по которой распространяется пакет.

    • Signature - электронная подпись пакета.

    • Packages - наименования организации, которая собирала пакет (дословно - упаковщик). Обратите внимание: производитель не всегда является упаковщиком! Так везде: не только в программном обеспечении- Например, кто-то производит чай, а кто-то - занимается его упаковкой.

    • Url- адрес странички, связанный с программным обеспечением.

    • Summary - краткое описание пакета.

    • Description - полное описание пакета.

    Если вы хотите просмотреть список файлов, входящий в состав пакета, тогда вам нужно использовать опцию ql:

    rpm -ql пакет

    Например:

    rpm -ql kdebase

    3.3.3.5. Обновление пакета

    Пакет уже установлен, но вы скачали в Интернете его новую версию, поэтому вам его нужно обновить. Для обновления пакета используется опция -U. Данную опцию можно использовать вместе с опциями hv, если вы хотите видеть индикатор процесса обновления:

    rpm - Uhv пакет.

    3.4. Установка программ из исходного кода

    3.4.1. Идея открытого кода

    Знаете, почему Linux называется открытой операционной системой? Потому что любому желающему доступен исходный код ее ядра и большинства Linux-приложений. Вы можете загрузить исходный код любой программы и откомпилировать его.

    Раньше программы для Linux распространялись только в исходных кодах. Но, сами понимаете, для конечного пользователя компиляция пакета - занятие удручающее. Это в свое время и отпугивало пользователей от Linux. Использовать Linux было сложно: командная строка, отсутствие хорошего графического интерфейса, проблемы с локализацией, установка программ из исходного кода…

    Разработчики Linux всеми возможными способами старались сделать Linux проще, чтобы теперь она была такой, как мы ее видим: интуитивно понятный графический интерфейс пользователя, минимум использования командной строки, никаких проблем с русским языком и удобная установка пакетов!

    Для упрощения установки программ как раз и были придуманы пакеты. В пакетах программы находятся уже в откомпилированном виде. Разработчики программ компилируют программы сами, затем помещают их в пакеты, а пользователю остается лишь установить пакет.

    Но лаже сейчас иногда приходится устанавливать пакеты из исходного кода. Например, вы используете дистрибутив Fedora, а в Интернете нужная вам программа распространяется только в виде DEB-пакета или в виде исходного кода. Поскольку DEB-пакет в Fedora установить нельзя, то нам придется скачать исходный код и самостоятельно откомпилировать программу.

    Если вы просто хотите использовать самые новые версии программ, которые еще не собраны в пакеты, то вам тоже нужно загрузить "исходники" и откомпилировать их вручную.

    3.4.2. Компилятор gcc

    Не открою большого секрета, если скажу, что практически все программное обеспечение для Linux написано на языке С. Если вы хотите откомпилировать программу из исходного кода, то вам сначала нужно установить компилятор gcc.

    Для этого введите следующую команду:

    yum install gcc

    Кроме компилятора gcc будут также установлены дополнительные пpoграммы (automake, make и др.), необходимые для сборки программ.

    Конечно, ваша программа для сборки может требовать наличия какой-то библиотеки или какого-нибудь специального инструмента, но тут ничем не могу помочь- вам придется прочитать рекомендации из файла readme.txt, который поставляется вместе с исходным кодом, чтобы выяснить, что нужно для компиляции программы.

    3.4.3. Компиляция

    Как правило, исходные коды программ распространяются в виде архива с "двойным расширением" -.tar.gz. Исходный код принято распаковывать в каталог /usr/src. Поэтому для распаковки архива вам нужно выполнить следующие команды:

    su

    cd /usr/src

    gunzip архив.tar.gz

    tar xvf архив.tar

    Обратите внимание: после обработки архива программой gunzip расширение.gz указывать не нужно.

    Иногда архив запакован не программой gzip, а программой bz иди bz2. Тогда для распаковки такого архива нужно ввести команду:

    bunzip архив.tar.bz

    (если использовалась программа bz);

    bunzip2 архив.tar.bz2

    (если использовалась программа bz2).

    Архив будет распакован в каталог /usr/src/архив. Например, если вы распаковывали архив program.tar.gz, то у вас появится каталог /usr/src/program. Перейдите в него.

    Далее вы должны последовательно ввести три команды:

    ./сonfigure

    make

    make install

    Первая программа проверит вашу систему на предмет наличия всех необходимых для сборки программы инструментов и всех необходимых для работы программы библиотек. Если сценарий configure не выведет сообщений об ошибках, тогда будет создан файл Makefile, содержащий указания программе плаке по поводу компиляции вашей программы. Если же есть сообщения об ошибках, внимательно прочитайте их. После этого нужно устранить ошибки, например, установить недостающие пакеты.

    Команда make выполнит компиляцию вашей программы, а команда make install - установит программу, т.е. скопирует выполняемые файлы программы в каталог /usr/bin, добавит программу в меню GNOME (если это предусмотрел разработчик), создаст конфигурационные файлы программы и т.д.

    Если в результате сборки (компиляции) программы не произошло никаких ошибок, тогда можно приступить к использованию программы.








    Главная | В избранное | Наш E-MAIL | Прислать материал | Нашёл ошибку | Наверх