Л 26 ОС

лекция
Лекция
Тема: «Способы установки программного обеспечения в Linux»

Тема: «Способы установки программного обеспечения в Linux»

Установка программного обеспечения в Linux осуществляется двумя основными способами:

  • с помощью пакетов;
  • из исходных кодов.

Пакет представляет собой набор файлов, содержащий все необходимое для установки программы. Существуют два основных типа пакетов:

  • RPM-пакеты — применяются во всех Red Hat-совместимых дистрибутивах: Red Hat, Fedora, CentOS, ALT Linux и др.;
  • DEB-пакеты — применяются в дистрибутиве Debian и в дистрибутивах, на нем основанных: Ubuntu, Kubuntu, Edubuntu, Denix и др.

Название RPM-пакетов связано с предложенной компанией Red Hat технологией, основанной на использовании менеджера пакетов rpm (Red Hat Package Manager). С DEB-пакетами все проще — они так названы, потому что последние три символа имени у файлов пакетов deb (сокращение от Debian).

Не найдя в своем дистрибутиве нужной вам программы, попробуйте поискать ее пакет на следующих сайтах:

  • RPM-пакеты: http://rpmfind.net и http://rpm.pbone.net;
  • DEB-пакеты: http://www.debian.org/distrib/packages

и http://packages.ubuntu.com/.

Если вы не можете найти в Интернете комплектный пакет программы, тогда придется компилировать программу самому, — при условии, что вы нашли архив с ее исходным кодом. Да, в Linux некоторые программы распространяются только в исходных кодах. Для установки такой программы нужно распаковать архив с ее исходными кодами (желательно, в каталог /usr/src), затем перейти в каталог, содержащий файлы распакованного архива исходных кодов, и поочередно выполнить следующие команды:

./configure

make

make install

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

Вторая команда (make) на основании созданного файла Makefile компилирует программу. А последняя команда (make install) устанавливает программу и дополнительные файлы в дерево файловой системы: программы — обычно в каталог /usr/bin, документацию — в /usr/share/doc, конфигурационные файлы — в /etc и т. д.

Пакет установки программы, как правило, состоит из набора файлов — например, исполнимого и конфигурационного, а также файла справки. В зависимости от организации программы установки все эти файлы могут быть:

  • заархивированы каждый отдельно — в этом случае мы получаем набор из архивов файлов программы плюс программа установки;
  • заархивированы в один общий архив, содержащий комплект файлов программы и программу установки;
  • укомплектованы в саму программу установки — самый удобный случай, когда у нас всего один файл, — программа установки.

Кроме файлов собственно программы, в пакете хранится также и служебная информация, описывающая процесс установки программы:

  • пути — ведь один файл нужно скопировать, например, в каталог /usr/bin, а другой — в /usr/share/doc;
  • дополнительные действия — например, создание каталога, установка тех или иных прав доступа к файлам и каталогам программы;
  • зависимости— программе для работы может требоваться какая-либо библиотека, без которой она не может запускаться, поскольку использует ее функции. Тогда в пакете указывается, что он зависит от другого пакета, содержащего эту библиотеку. При установке менеджер пакетов проверяет зависимости: если установлены не все пакеты, от которых зависит устанавливаемый пакет, установка будет прервана — пока вы не установите все необходимое. Впрочем, имеется возможность установки программы и без удовлетворения зависимостей (тогда информация о зависимостях будет просто проигнорирована), но в большинстве случаев установленная таким образом программа работать не станет;
  • конфликты — та или иная программа может в системе конфликтовать с другой программой. Например, программы sendmail и postfix являются серверами электронной почты — МТА-агентами (МТА, Mail Transfer Agent). Поскольку в системе может быть только один МТА-агент, установить можно или sendmail, или postfix, т. е. пакет sendmail конфликтует с пакетом postfix и наоборот.

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

program-1.5-14.i586.rpm

Здесь program — название программы, 1.5 — ее версия, 14 — выпуск пакета, i586 — архитектура процессора, на которую рассчитана программа. Если программа независима от архитектуры, то указывается параметр noarch, — обычно так делают для документации, примеров конфигурационных файлов, т. е. для пакетов, содержащих информацию, которая не зависит от архитектуры.

Репозитории пакетов

Репозиторий — это хранилище пакетов. Репозиторий может быть локальным, например, каталогом на жестком диске или на DVD, или же сетевым — сервером в Интернете или в локальной сети, содержащем RPM- или DEB-пакеты. Для чего создаются репозитории? Для централизованного управления обновлением пакетов.

Представьте, что у нас нет репозиториев. Тогда, чтобы узнать, вышла ли новая версия нужной вам программы, вам пришлось бы посещать сайт ее разработчика или, по крайней мере, сайт разработчика дистрибутива Linux. А это не очень удобно.

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

Так раньше и было. Вот вышла программа, ее включили в состав дистрибутива, но полностью не протестировали (да и невозможно предварительно протестировать все варианты использования любой новой программы). И в процессе эксплуатации программы выяснилось, что она работает неправильно, но только при некоторых условиях, — например, с определенным форматом файла. Или же на платформе Linux был организован, например, Web-сервер. А через некоторое время оказалось, что в этой версии Web-сервера имеется «дыра», поэтому разработчики вскоре выпустили новую ее версию, эту «дыру» закрывающую. Пользователь же, установивший программу Web-сервера, ничего не подозревая о том, что вышла новая ее версия, находился бы под угрозой взлома минимум полгода или даже год — до выхода следующей версии дистрибутива. А его сервер могли бы взломать уже на следующий день после обнаружения «дыры».

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

Программы для управления пакетами

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

Программа rpm

(все Red Hat-совместимые дистрибутивы)

Если вы хотите установить пакет, который не входит в состав дистрибутива (на-

пример, загруженный из Интернета), вам следует использовать программу rpm.

Графический менеджер пакетов rpm drake

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

Программа rpm — полноценный текстовый менеджер пакетов, позволяющий устанавливать, удалять пакеты, просматривать информацию об уже установленных и новых пакетах, обновлять пакеты.

Чтобы установить пакет с помощью rpm, выполните команду:

# rpm -ihv <имя_пакета>

Удалить пакет так же просто:

# rpm -е <имя_пакета>

Для обновления пакета служит команда:

# rpm -U <имя_пакета>

Просмотреть, установлен ли тот или иной пакет, можно с помощью команды:

# rpm -qa | grep <имя_пакета>

Если вы хотите просмотреть информацию о пакете, то введите команду:

# rpm -qi <имя_пакета>

Просмотреть список файлов, входящих в состав пакета, можно командой:

# rpm -ql <имя_пакета>

Наконец, вывести все пакеты можно командой:

$ rpm -qa | grep more