Редактирование: Linux book/Install and configure

Материал из eSyr's wiki.

Перейти к: навигация, поиск

Внимание: Вы не представились системе. Ваш IP-адрес будет записан в историю изменений этой страницы.

ПРЕДУПРЕЖДЕНИЕ: Длина этой страницы составляет 60 килобайт. Страницы, размер которых приближается к 32 КБ или превышает это значение, могут неверно отображаться в некоторых браузерах. Пожалуйста, рассмотрите вариант разбиения страницы на меньшие части.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.

Текущая версия Ваш текст
Строка 100: Строка 100:
Иногда при установке очередного пакета может возникнуть так называемый конфликт.
Иногда при установке очередного пакета может возникнуть так называемый конфликт.
-
'''Конфликт''' — ситуация, при которой файлы из разных пакетов должны иметь одинаковые абсолютные пути.
+
'''Конфликт''' — ситуация, при которой файлы из разных пакетов должны иметь одинаковые абсолютные имена/*абсолютное имя – откуда термин?не лучше ли «полностью одинаковые имена и пути»*/.
Пример конфликта: пакеты с различными вариантами vi: vi, vim-minimal, mvi пытаются установить бинарный файл /usr/bin/vi.
Пример конфликта: пакеты с различными вариантами vi: vi, vim-minimal, mvi пытаются установить бинарный файл /usr/bin/vi.
Строка 112: Строка 112:
'''Установщик''' — утилита, которая позволяет управлять отдельным пакетом. Сюда входят установка и удаление, проверка пакета на различные свойства, просмотр различий в версиях пакета, проверка зависимостей, и так далее.
'''Установщик''' — утилита, которая позволяет управлять отдельным пакетом. Сюда входят установка и удаление, проверка пакета на различные свойства, просмотр различий в версиях пакета, проверка зависимостей, и так далее.
-
По историческим причинам, в список обязанностей установщика пакетов входит также их сборка пакетов из их исходных версий. В исходную версию пакета (src package) входит вся информация, необходимая для его сборки.
+
По историческим причинам, в список обязаннстей установщика пакетов входит также их сборка пакетов из их исходных версий. В исходную версию пакета (src package) входит вся инфрмация, необходимая для его сборки.
Важно отметить, что установщик пакетов работает только с отдельными файлами, а не с репозиторием. Этот факт подробнее будет рассмотрен далее.
Важно отметить, что установщик пакетов работает только с отдельными файлами, а не с репозиторием. Этот факт подробнее будет рассмотрен далее.
На данный момент существует определённое количество форматов пакетов и утилит по работе с ними. Наиболее популярными являются два следующих формата:
На данный момент существует определённое количество форматов пакетов и утилит по работе с ними. Наиболее популярными являются два следующих формата:
-
* [http://rpm5.org/ RPM], RPM (ранее RedHat) Package Manager. Изначально появился в дистрибутиве Red Hat Linux. На данный момент используется в большом количестве RedHat-based (и не только) дистрибутивов, в число которых (косвенно, посредством Mandrake Linux) входит и ALT Linux. Установщиком для данного формата пакетов является одноимённая утилита rpm (В ALT Linux также используется утилита rpm, но она сильно отличается от используемой в Fedora Core и других основанных на RedHat дистрибутивах).
+
* [http://rpm5.org/ RPM], RPM (ранее RedHat) Package Manager. Изначально появился в дистрибутиве Red Hat Linux. На данный момент используется в большом количестве RedHat-based (и не только) дистрибутивов, в число которых (косвенно, посредством Mandrake Linux) входит и ALT Linux. Установщиком для данного формата пакетов является одноимённая утилита rpm<ref>В ALT Linux также используется утилита rpm, но она сильно отличается от используемой в Fedora Core и других основанных на RedHat дистрибутивах</ref>.
-
* DEB, Debian software package. Формат, разработанный в рамках дистрибутива Debian и использующийся большей частью в Debian-based дистрибутивах. Отличается гибкостью процесса установки пакетов. Установщиком для данного формата пакетов является утилита dpkg.
+
* DEB, Debian software package. Формат, разрабтанный в рамках дистрибутива Debian и использующийся большей частью в Debian-based дистрибутивах. Отличается гибкостью процесса установки пакетов. Установщиком для данного формата пакетов является утилита dpkg.
-
Помимо упомянутых двух форматов, существует и много других, например, свой формат пакетов используется в дистрибутиве Gentoo (Portage), свой формат пакетов в самом старом дистрибутиве Slackware.
+
Помимо упомянутых двух форматов, существует и много других, например, свой формат пакетов используется в дистрибутиве Gentoo, свой формат пакетов в самом старом дистрибутиве Slackware.
Рассмотрим, как выполняются основные операции по рабте с пакетами:
Рассмотрим, как выполняются основные операции по рабте с пакетами:
Строка 147: Строка 147:
-rw-r--r-- 1 root root 19032 Apr 19 2000 ./usr/share/doc/zip-2.32/WHERE
-rw-r--r-- 1 root root 19032 Apr 19 2000 ./usr/share/doc/zip-2.32/WHERE
-rw-r--r-- 1 root root 12398 Jun 20 2006 ./usr/share/man/man1/zip.1.bz2
-rw-r--r-- 1 root root 12398 Jun 20 2006 ./usr/share/man/man1/zip.1.bz2
-
614 blocks
+
614 blocks
-
* Пакет в формате DEB представляет собой архив в формате [http://www.opengroup.org/onlinepubs/009695399/utilities/ar.html ar] (Один из старейших форматов архивов в UNIX; он же используется для сборки нескольких объектных файлов .o в библиотеку .a), состоящий из двух архивов в формате gzip или bzip2: с конторльной информацией и с данными.
+
* Пакет в формате DEB представляет собой архив в формате [http://www.opengroup.org/onlinepubs/009695399/utilities/ar.html ar]<ref>Один из старейших фрматов арзивов в UNIX; он же испльзуется для сборки нескольких объеткных файлов .o в библиотеку .a</ref>, состоящий из двух архивов в формте gzip или bzip2: с контрльной информацией и с данными.
[user@demo ~]$ ar vt libwxsmithlib0_8.02-0ubuntu1_i386.deb # Выводит список файлов в архиве ar с дополнительной информацией
[user@demo ~]$ ar vt libwxsmithlib0_8.02-0ubuntu1_i386.deb # Выводит список файлов в архиве ar с дополнительной информацией
rw-r--r-- 0/0 4 Feb 28 01:22 2008 debian-binary
rw-r--r-- 0/0 4 Feb 28 01:22 2008 debian-binary
Строка 159: Строка 159:
[user@demo ~]$ ls
[user@demo ~]$ ls
control.tar.gz data.tar.gz debian-binary libwxsmithlib0_8.02-0ubuntu1_i386.deb
control.tar.gz data.tar.gz debian-binary libwxsmithlib0_8.02-0ubuntu1_i386.deb
-
[user@demo ~]$ tar -ztvf control.tar.gz # Просмотр списка имеющихся в архиве файлов
+
[user@demo ~]$ tar -ztf control.tar.gz # Просмотр файлов в рхиве .tar.gz
-
drwxr-xr-x root/root 0 2008-02-28 01:22 ./
+
./
-
-rw-r--r-- root/root 405 2008-02-28 01:22 ./control
+
./control
-
-rwxr-xr-x root/root 132 2008-02-28 01:21 ./postrm
+
./postrm
-
-rwxr-xr-x root/root 135 2008-02-28 01:21 ./postinst
+
./postinst
-
-rw-r--r-- root/root 221 2008-02-28 01:22 ./md5sums
+
./md5sums
-
-rw-r--r-- root/root 31 2008-02-28 01:21 ./shlibs
+
./shlibs
-
[user@demo ~]$ tar -ztvf data.tar.gz
+
[user@demo ~]$ tar -ztf data.tar.gz
-
drwxr-xr-x root/root 0 2008-02-28 01:21 ./
+
./
-
drwxr-xr-x root/root 0 2008-02-28 01:21 ./usr/
+
./usr/
-
drwxr-xr-x root/root 0 2008-02-28 01:21 ./usr/lib/
+
./usr/lib/
-
-rw-r--r-- root/root 3291092 2008-02-28 01:21 ./usr/lib/libwxsmithlib.so.0.0.1
+
./usr/lib/libwxsmithlib.so.0.0.1
-
drwxr-xr-x root/root 0 2008-02-28 01:21 ./usr/share/
+
./usr/share/
-
drwxr-xr-x root/root 0 2008-02-28 01:21 ./usr/share/doc/
+
./usr/share/doc/
-
drwxr-xr-x root/root 0 2008-02-28 01:21 ./usr/share/doc/libwxsmithlib0/
+
./usr/share/doc/libwxsmithlib0/
-
-rw-r--r-- root/root 406 2008-02-28 00:30 ./usr/share/doc/libwxsmithlib0/copyright
+
./usr/share/doc/libwxsmithlib0/copyright
-
-rw-r--r-- root/root 4979 2008-02-28 00:51 ./usr/share/doc/libwxsmithlib0/changelog.Debian.gz
+
./usr/share/doc/libwxsmithlib0/changelog.Debian.gz
-
lrwxrwxrwx root/root 0 2008-02-28 01:21 ./usr/lib/libwxsmithlib.so.0 -> libwxsmithlib.so.0.0.1
+
./usr/lib/libwxsmithlib.so.0
Все перечисленные выше свойства пакетов (способ установки, регистрация в системе, установочные скрипты, зависимости, разрешение конфликтов) и формат RPM, и формат DEB поддерживают.
Все перечисленные выше свойства пакетов (способ установки, регистрация в системе, установочные скрипты, зависимости, разрешение конфликтов) и формат RPM, и формат DEB поддерживают.
-
==== Сборка пакетов ====
+
С помощью rpm можно собрать пакет. Идея состоит в следующем: что нужно, чтобы собрать пакет? Для начала нужно иметь в виду одну особенность: авторы программ знать-не знают, ведать-не ведают о существовании дистрибутива ALT Linux, и правилах структуры пакетов.
 +
Например, есть утилита eaglomode, которая устанавливается а-ля солярис: /opt/eaglemode/{bin|lib|res|etc}. ...
-
Процесс сборки в пакет специфицирован, во всех крупных дистрибутива существует сглашения по тому, что должно входить в пакет, каков процесс сборки и установки.
+
Это значит, что нужно модифицировать исходный код продукта, в помощь чему есть набор утилит patch, поскольку ментейнер не делает изменения с 0 для каждой версии, он оформляет эти изменения в виде патча, который потом накладывается.
-
При этом первое, что надо учитывать, это то, что разработчики ПО имеют свои собственные, отличные от политики дистрибутива, представления о том, где какие файлы должны находиться. Например, есть приложение [http://eaglemode.sourceforge.net/ eaglemode], которое устанавливается а-ля приложения для Solaris: /opt/eaglemode/{bin|lib|res|etc}. Это — одна из причин, по которой в процессе подготовки к сборке пакета необходимо модифицировать исходный код продукта. Для облегчения процесса подготовки ПО в соответствии с полиси дистрибутива есть набор утилит patch. Это позволяет ментейнеру не делать изменения с 0 для каждой новой версии, он оформляет сделанные изменения в виде патча, который потом накладывается на оригинальный вариант ПО.
+
Нужно соблюсти три условия:
-
 
+
-
В результате, в процессе подготовки ПО к сборке в пакет нужно выполнить следующие действия:
+
* Оформить отличия в виде патчей
* Оформить отличия в виде патчей
* Написать команды по сборке
* Написать команды по сборке
-
* Организовать предустановочный и послеудалятельный сценарий
+
* Нужно организовать предустановочный и послеудалятельный суенарий
* Заполнить паспорт пакета
* Заполнить паспорт пакета
-
В RPM для этих целей служит spec-файл, в которым всё это лежит, за исключением больших файлов, которые лежат отдельно. Скачанный исходник, spec-файла и дополнительные файлы составляют src.rpm. Из него и собирается rpm.
+
Для всего это есть один файл, спекфайл, в которым всё это лежит, за исключением больших файлов, которые лежат отдельно. Иговорится, что пакеет состоит из скачанного исходника, спекфайла и дополнительных фйайлов. Это составляет src.rpm. Из этого собирается rpm.
-
В DEB имеется несколько различных файлов, каждый служит своим целям. В файле control указывается различная метаинформация: название пакета, описание, зависимости (паспорт пакета). В rules находятся команды по сборке пакета (makefile для утилиты dh_make). Скрипты, которые должны выполняться в процессе установки и удаления пакета, размещаются в файлах postinst, preinst, postrm, prerm. Существует ещё ряд служебных файлов (changelog, dirs, README, ...) служащих различным целям. Команда debuild собирает DEB-пакет с использванием этих файлов.
+
Появляется второе понятие зависимости: зависимости, необходимые для сборки пакета.
-
В процессе сборки могут потребоваться дополнительные программы (например для компиляции и пребразования исходных файлов), которые не нужны для работы собираемого ПО. Появляется второй род зависимостей: зависимости, необходимые для сборки пакета (build requirements).
+
Из этого можно сделать вывод, что rpm для обычного пользователя программа не очень удобная. Поскольку при попытке установить покет может оказаться, что не удовлетворены изх зависимости, для них не удовлетворены их и так дале. Причём rpm не может отследить их все, они в пакете не написаны, там только непосредственные зависимости. Но со своей задачей rpm справляется.
-
==== Особенности установщика при работе с пакетами ====
 
- 
-
Как уже отмечалось ранее, установщик пакетов работает с файлами, не с хранилищами. Поэтому, для установки исключительно с использованием установщика пакета необходимо предварительно откуда-то скачать его вместе со всеми зависимостями, которые ещё не установлены (иначе установщик не сможет установить пакет — он не знает, где брать те или иные неустановленные пакеты)
 
- 
-
Из этого можно сделать вывод, что rpm для обычного пользователя программа не очень удобная. Поскольку при попытке установить пакет может оказаться, что не удовлетворены зависимости, для них не удовлетворены их и так дале. Причём rpm не может отследить все необходимые зависимости, они в пакете не написаны, там только непосредственные зависимости. Но со своей задачей rpm справляется.
 
=== Менеджер пакетов ===
=== Менеджер пакетов ===
По традиции, установщик также используется для сборки пакета. Но это не столь важно, сколь другая особенность установщика: он работает с одним файлом, а для управления всеми доступными пакетами необходим диспетчер (менеджер) пакетов, который работает сразу с хранилищами пакетов. В итоге, задача диспетчера состоит в построении графа зависимостей, разрешения вопроса о получении недостающих пакетов (скачивания их из доступных источников) и их установке.
По традиции, установщик также используется для сборки пакета. Но это не столь важно, сколь другая особенность установщика: он работает с одним файлом, а для управления всеми доступными пакетами необходим диспетчер (менеджер) пакетов, который работает сразу с хранилищами пакетов. В итоге, задача диспетчера состоит в построении графа зависимостей, разрешения вопроса о получении недостающих пакетов (скачивания их из доступных источников) и их установке.
 +
Поэтому для решения этих задач используется диспетчер пакетов. В альте используется apt? Advanced Package Tool. Он взят из дебиавна, в котором ещё и свой формат пакетов --- dpkg. Он был достаточно универсален, чтобы после нескольких ударов кувалдой он начинал использовать rpm. Причём его писали такие хакеры, что можно и кувалду сломать.
Поэтому для решения этих задач используется диспетчер пакетов. В альте используется apt? Advanced Package Tool. Он взят из дебиавна, в котором ещё и свой формат пакетов --- dpkg. Он был достаточно универсален, чтобы после нескольких ударов кувалдой он начинал использовать rpm. Причём его писали такие хакеры, что можно и кувалду сломать.
-
Мы уже описали ситуацию, при которой установщик пасует. Что же ... .
+
Мы уже описали ситуацию, пр и которой установщик пасует. Что же ... .
* Пользователь совершенно не обязан указывать версию пакета. Откула apt узает версию пакета? В отличие от установщикА, диспетчер пакета работает с хранилищами пакетов. Он знает, где лежат все пакеты, которые я могу захотеть установить. Хранилищ может быть несколько. Диспетчер кеширует индексы. Соответственно, есть две утилиты --- apt-get , который работает с хранилищами непосредственно, и apt-cache, котрый работает с кэшем.
* Пользователь совершенно не обязан указывать версию пакета. Откула apt узает версию пакета? В отличие от установщикА, диспетчер пакета работает с хранилищами пакетов. Он знает, где лежат все пакеты, которые я могу захотеть установить. Хранилищ может быть несколько. Диспетчер кеширует индексы. Соответственно, есть две утилиты --- apt-get , который работает с хранилищами непосредственно, и apt-cache, котрый работает с кэшем.
Соответственно, диспетчер делает то, что не может установщик: строит дерево зависимостей, получает необходимые и запускает их установку.
Соответственно, диспетчер делает то, что не может установщик: строит дерево зависимостей, получает необходимые и запускает их установку.

Пожалуйста, обратите внимание, что все ваши добавления могут быть отредактированы или удалены другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. eSyr's_wiki:Авторское право).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

Личные инструменты
Разделы