Ubuntu 10. Краткое руководство пользователя - Д. Колисниченко
Шрифт:
Интервал:
Закладка:
□ в архиве.
9.1.1. Пакеты и зависимости
Пакет, как правило, содержит программу и вспомогательные файлы. Но не всегда в пакете находится все необходимое для запуска программы. Пакет может не содержать библиотеку, которую использует программа, а также другие программы, которые нужны для работы устанавливаемой программы. Почему так происходит? Представим, что у нас есть графическая библиотека размером 10 Мбайт. Размер устанавливаемой программы — 500 Кбайт. Да, можно было бы включить библиотеку в состав пакета, но тогда размер пакета был бы не 500 Кбайт, а 10,5 Мбайт. При этом есть и другие программы, которые также используют данную библиотеку. Выходит, что каждый пакет с такой программой «весил» бы на 10 Мбайт больше только потому, что библиотека содержится в пакете. Это нерационально — логичнее вынести библиотеку в отдельный пакет.
Ясно, что пакет с библиотекой должен быть установлен до установки первой программы, которая использует эту библиотеку, иначе программа просто не будет работать. Чтобы пользователь случайно не установил пакет с программой раньше пакета с библиотекой (ведь пользователь может и не подозревать, что программа требует какую-то библиотеку, которая не установлена на его компьютере), в пакет помещается специальная инструкция, в которой системе говорится, что для правильной работы данной программы нужен определенный пакет. Это называется зависимостью пакетов. При установке пакета проверяются его зависимости — если они не удовлетворены (пакет с библиотекой не установлен), пакет установлен не будет.
Зависимости могут быть и обратного характера, т. е. требовать не установить, а удалить определенный пакет. Это случается, когда одна программа конфликтует с другой, и пользователю нужно выбрать, какую программу использовать. Например, в системе может быть установлен только один почтовый сервер. Но в Интернете можно найти несколько почтовых серверов, а вот установить только один — поскольку если установить оба, то они будут мешать друг другу работать.
Но пакет пакету рознь. Сейчас в мире Linux существуют два основных формата пакетов: RPM и DEB. RPM-пакеты устанавливаются в системах, совместимых с дистрибутивами типа Red Hat. Ubuntu к числу таких систем не относится. Поэтому нас интересует только второй формат пакетов. Впрочем, если вы не можете найти DEB-пакет с нужной вам программой, имеется возможность преобразовать RPM-пакет в DEB-пакет и попытаться его установить (см. разд. 9.6).
9.1.2. Архивы
В архиве программы распространяются редко, но иногда такое случается. Может быть, разработчикам программы было лень собирать пакет, может, была и какая-нибудь другая причина. Но в большинстве случаев в архивах распространяется исходный код программы, следовательно, после распаковки архива программу требуется откомпилировать. У вас, как у начинающего пользователя Ubuntu, такой необходимости не будет — практически все программное обеспечение для Ubuntu распространяется в виде DEB-пакетов, т. е. не нуждается в компиляции.
9.2. Программа dpkg: управление DEB-пакетами
Программа dpkg используется для установки, удаления и управления пакетами Debian/Ubuntu. Программа dpkg вызывается из командной строки. Формат вызова ее следующий:
dpkg [ключи] действие
ПримечаниеДля запуска dpkg нужно обладать полномочиями root, получить которые можно с помощью команды sudo.
Предположим, у нас есть пакет package.deb. Для его установки откройте терминал (Приложения | Стандартные | Терминал) и введите команду:
sudo dpkg — i /путь/package.deb
Как видите, ничего сложного тут нет. Интересующимся поясню, что процесс установки пакета состоит из следующих шагов:
1. Извлечение управляющих файлов из пакета.
2. Если уже была установлена старая версия этого пакета, тогда из старого пакета запускается сценарий prerm, который подготавливает систему к удалению старой версии пакета. Другими словами, если нужно, то обновление пакета выполняется автоматически.
3. Выполняется сценарий preinst, если он есть в данном пакете.
4. Распаковываются остальные файлы из пакета. При этом если был установлен старый пакет, то его файлы не удаляются, а сохраняются в другом месте, чтобы их можно было восстановить, если что-то пойдет не так.
5. Если была установлена старая версия пакета, то выполняется сценарий postrm (действия после удаления) из старого пакета. Данный сценарий запускается сразу после выполнения сценария preinst нового пакета, поскольку старые файлы удаляются во время записи новых файлов.
6. Выполняется настройка пакета:
• распаковываются новые конфигурационные файлы, а старые сохраняются, если нужно будет их восстановить в случае ошибки во время установки нового пакета;
• запускается сценарий postinst, если он есть в данном пакете.
Удалить пакет тоже просто:
sudo dpkg — r package
Обратите внимание — при удалении пакета не нужно указывать путь к пакету и расширение имени файла.
Установка и удаление пакетов — это далеко не все действия, которые можно выполнить с помощью программы dpkg. Другие действия программы dpkg, которые могут быть интересны каждому пользователю Ubuntu, представлены в табл. 9.1.
Если вы хотите получить более подробную информацию о программе dpkg, причем на русском языке, введите команду:
man dpkg
9.3. Программа apt-get
Предположим, у вас есть пакет package.deb. При его установке обнаружилось, что он требует наличия пакета lib.deb, который у вас не установлен. Что ж, вы находите в Интернете отсутствующий пакет, устанавливаете его способом, описанным в разд. 9.2 (то есть применяя команду dpkg), а затем тем же способом устанавливаете пакет package.deb. Не очень удобно, правда?
Намного проще выполнить команду:
sudo apt-get install package
Эта программа сначала просматривает файл /etc/apt/sources.list — в нем перечислены источники (репозитории) DEB-пакетов (в качестве источника обычно выступает сервер в Интернете). Программа находит там указанный пакет, читает служебную информацию о нем, затем разрешает зависимости (т. е. устанавливает все необходимые для работы программы пакеты) и, наконец, устанавливает нужный нам пакет.
9.3.1. Файл /etc/apt/sources.list и репозитории пакетов
Откройте файл /etc/apt/sources.list (рис. 9.2):
gksudo gedit /etc/apt/sources.list
Найдите и раскомментируйте следующую строку:
deb http://ru.archive.ubuntu.com/ubuntu/ lucid-backports main restricted universe multiverse
Эта строка подключает репозиторий backports, содержащий много полезных программ.
ПримечаниеНе все программы, содержащиеся в репозитории backports, бесплатны, и не все поддерживаются командой Ubuntu.
Также можно раскомментировать строку, подключающую репозиторий партнеров Canonical (компании-разработчика Ubuntu):
deb http://archive.canonical.com/ubuntu lucid partner
Разберемся теперь, какие программы содержатся в том или ином репозитории:
□ в репозитории main содержатся основные программы, они распространяются свободно и регулярно поддерживаются (обновляются);
□ в репозитории restricted содержатся программы, которые распространяются по несвободным лицензиям, а также имеют ограниченную поддержку;
□ репозиторий universe содержит программы с открытыми лицензиями, поддержка программ из этого репозитория не гарантируется, но вполне возможна — все зависит от разработчика программы;
□ в репозитории multiverse содержатся программы, которые распространяются несвободно и без всякой поддержки и гарантий;
□ репозиторий security содержит исправления пакетов из репозиториев main и restricted;
□ наконец, в репозитории backports содержатся неофициальные пакеты свежих версий программ, собранные из исходных текстов энтузиастами Ubuntu (а не разработчиками программ).
9.3.2. Графическая оболочка для редактирования файла /etc/apt/sources.list
Лично мне удобнее редактировать файл /etc/apt/sources.list вручную, но вам, возможно, будет удобнее пользоваться для этого графической оболочкой, так что было бы несправедливо, если бы я не рассказал вам о ней. Для запуска программы-оболочки выполните команду меню Параметры | Администрирование | Источники приложений (рис. 9.3).
Программа отобразит уже установленные источники пакетов. Для добавления нового источника нажмите кнопку Добавить и в открывшемся окне (рис. 9.4) введите строку, которую нужно внести в файл /etc/apt/sources.list. Где взять эту строку? Обычно на сайте источника пакетов имеется уже готовая строка, которую надо скопировать и вставить в поле Строка APT указанного окна.