Редактирование: Linux book/Install and configure
Материал из eSyr's wiki.
Внимание: Вы не представились системе. Ваш IP-адрес будет записан в историю изменений этой страницы.
ПРЕДУПРЕЖДЕНИЕ: Длина этой страницы составляет 57 килобайт. Страницы, размер которых приближается к 32 КБ или превышает это значение, могут неверно отображаться в некоторых браузерах. Пожалуйста, рассмотрите вариант разбиения страницы на меньшие части.
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия | Ваш текст | ||
Строка 17: | Строка 17: | ||
Обычно пользуются первым, реже вторым. Но правильный — третий. Сначала необходимо определить круг решаемых задач. После определения круга задач возникает вопрос, где искать инструменты(то есть, программы) для их решения. | Обычно пользуются первым, реже вторым. Но правильный — третий. Сначала необходимо определить круг решаемых задач. После определения круга задач возникает вопрос, где искать инструменты(то есть, программы) для их решения. | ||
- | Откуда вообще берутся программы под Linux? Надо дать достаточно точный и полный ответ, ибо обычно ответ звучит как «лежат на диске» или «скачиваются из сети» | + | Откуда вообще берутся программы под Linux? Надо дать достаточно точный и полный ответ, ибо обычно ответ звучит как «лежат на диске» или «скачиваются из сети». Рассмотрим то, где на самом деле берут ПО для Linux. |
=== Дистрибутив и репозиторий === | === Дистрибутив и репозиторий === | ||
Строка 100: | Строка 100: | ||
Иногда при установке очередного пакета может возникнуть так называемый конфликт. | Иногда при установке очередного пакета может возникнуть так называемый конфликт. | ||
- | '''Конфликт''' — ситуация, при которой файлы из разных пакетов должны иметь одинаковые абсолютные | + | '''Конфликт''' — ситуация, при которой файлы из разных пакетов должны иметь одинаковые абсолютные имена/*абсолютное имя – откуда термин?не лучше ли «полностью одинаковые имена и пути»*/. |
Пример конфликта: пакеты с различными вариантами vi: vi, vim-minimal, mvi пытаются установить бинарный файл /usr/bin/vi. | Пример конфликта: пакеты с различными вариантами vi: vi, vim-minimal, mvi пытаются установить бинарный файл /usr/bin/vi. | ||
Строка 112: | Строка 112: | ||
'''Установщик''' — утилита, которая позволяет управлять отдельным пакетом. Сюда входят установка и удаление, проверка пакета на различные свойства, просмотр различий в версиях пакета, проверка зависимостей, и так далее. | '''Установщик''' — утилита, которая позволяет управлять отдельным пакетом. Сюда входят установка и удаление, проверка пакета на различные свойства, просмотр различий в версиях пакета, проверка зависимостей, и так далее. | ||
- | По историческим причинам, в список | + | По историческим причинам, в список обязаннстей установщика пакетов входит также их сборка пакетов из их исходных версий. В исходную версию пакета (src package) входит вся инфрмация, необходимая для его сборки. |
Важно отметить, что установщик пакетов работает только с отдельными файлами, а не с репозиторием. Этот факт подробнее будет рассмотрен далее. | Важно отметить, что установщик пакетов работает только с отдельными файлами, а не с репозиторием. Этот факт подробнее будет рассмотрен далее. | ||
На данный момент существует определённое количество форматов пакетов и утилит по работе с ними. Наиболее популярными являются два следующих формата: | На данный момент существует определённое количество форматов пакетов и утилит по работе с ними. Наиболее популярными являются два следующих формата: | ||
- | * [http://rpm5.org/ RPM], RPM (ранее RedHat) Package Manager. Изначально появился в дистрибутиве Red Hat Linux. На данный момент используется в большом количестве RedHat-based (и не только) дистрибутивов, в число которых (косвенно, посредством Mandrake Linux) входит и ALT Linux. Установщиком для данного формата пакетов является одноимённая утилита rpm | + | * [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. Формат, | + | * DEB, Debian software package. Формат, разрабтанный в рамках дистрибутива Debian и использующийся большей частью в Debian-based дистрибутивах. Отличается гибкостью процесса установки пакетов. Установщиком для данного формата пакетов является утилита dpkg. |
- | Помимо упомянутых двух форматов, существует и много других, например, свой формат пакетов используется в дистрибутиве Gentoo | + | Помимо упомянутых двух форматов, существует и много других, например, свой формат пакетов используется в дистрибутиве Gentoo, свой формат пакетов в самом старом дистрибутиве Slackware. |
Рассмотрим, как выполняются основные операции по рабте с пакетами: | Рассмотрим, как выполняются основные операции по рабте с пакетами: | ||
Строка 132: | Строка 132: | ||
Покажем, что пакет является архивом. | Покажем, что пакет является архивом. | ||
* Пакет в формате RPM состоит из заголовочной части и архива в формате cpio (иногда сжатого архиватором gzip или bzip2). Для извлечения архива из пакета существует утилита rpm2cpio, которая выводит файл в формате [http://www.gnu.org/software/cpio/cpio.html cpio]. Далее можно, например, посмотреть листинг находящихся в архиве файлов, выполнив rpm2cpio | cpio -itv. | * Пакет в формате RPM состоит из заголовочной части и архива в формате cpio (иногда сжатого архиватором gzip или bzip2). Для извлечения архива из пакета существует утилита rpm2cpio, которая выводит файл в формате [http://www.gnu.org/software/cpio/cpio.html cpio]. Далее можно, например, посмотреть листинг находящихся в архиве файлов, выполнив rpm2cpio | cpio -itv. | ||
- | [user@demo ~]$ rpm2cpio zip-2.32-alt2.S40.1.i586.rpm | cpio -itv | ||
- | -rwxr-xr-x 1 root root 66808 Jun 25 17:16 ./usr/bin/zip | ||
- | -rwxr-xr-x 1 root root 26616 Jun 25 17:16 ./usr/bin/zipcloak | ||
- | -rwxr-xr-x 1 root root 22548 Jun 25 17:16 ./usr/bin/zipnote | ||
- | -rwxr-xr-x 1 root root 26580 Jun 25 17:16 ./usr/bin/zipsplit | ||
- | drwxr-xr-x 2 root root 0 Jun 25 17:16 ./usr/share/doc/zip-2.32 | ||
- | -rw-r--r-- 1 root root 401 May 18 2006 ./usr/share/doc/zip-2.32/BUGS | ||
- | -rw-r--r-- 1 root root 77392 Jun 20 2006 ./usr/share/doc/zip-2.32/CHANGES | ||
- | -rw-r--r-- 1 root root 2692 Apr 10 2000 ./usr/share/doc/zip-2.32/LICENSE | ||
- | -rw-r--r-- 1 root root 42404 Jun 20 2006 ./usr/share/doc/zip-2.32/MANUAL | ||
- | -rw-r--r-- 1 root root 8674 Apr 14 2006 ./usr/share/doc/zip-2.32/README | ||
- | -rw-r--r-- 1 root root 3149 Feb 21 2005 ./usr/share/doc/zip-2.32/TODO | ||
- | -rw-r--r-- 1 root root 3382 Jun 20 2006 ./usr/share/doc/zip-2.32/WHATSNEW | ||
- | -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 | ||
- | 614 blocks | ||
- | * Пакет в формате DEB представляет собой архив в формате [http://www.opengroup.org/onlinepubs/009695399/utilities/ar.html ar] (Один из старейших форматов архивов в UNIX; он же используется для сборки нескольких объектных файлов .o в библиотеку .a), состоящий из двух архивов в формате gzip или bzip2: с конторльной информацией и с данными. | ||
- | [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 716 Feb 28 01:22 2008 control.tar.gz | ||
- | rw-r--r-- 0/0 1056018 Feb 28 01:22 2008 data.tar.gz | ||
- | [user@demo ~]$ ar vx libwxsmithlib0_8.02-0ubuntu1_i386.deb # Распковка | ||
- | x - debian-binary | ||
- | x - control.tar.gz | ||
- | x - data.tar.gz | ||
- | [user@demo ~]$ ls | ||
- | control.tar.gz data.tar.gz debian-binary libwxsmithlib0_8.02-0ubuntu1_i386.deb | ||
- | [user@demo ~]$ tar -ztvf control.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 | ||
- | -rwxr-xr-x root/root 132 2008-02-28 01:21 ./postrm | ||
- | -rwxr-xr-x root/root 135 2008-02-28 01:21 ./postinst | ||
- | -rw-r--r-- root/root 221 2008-02-28 01:22 ./md5sums | ||
- | -rw-r--r-- root/root 31 2008-02-28 01:21 ./shlibs | ||
- | [user@demo ~]$ tar -ztvf 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/ | ||
- | drwxr-xr-x root/root 0 2008-02-28 01:21 ./usr/lib/ | ||
- | -rw-r--r-- root/root 3291092 2008-02-28 01:21 ./usr/lib/libwxsmithlib.so.0.0.1 | ||
- | drwxr-xr-x root/root 0 2008-02-28 01:21 ./usr/share/ | ||
- | drwxr-xr-x root/root 0 2008-02-28 01:21 ./usr/share/doc/ | ||
- | drwxr-xr-x root/root 0 2008-02-28 01:21 ./usr/share/doc/libwxsmithlib0/ | ||
- | -rw-r--r-- root/root 406 2008-02-28 00:30 ./usr/share/doc/libwxsmithlib0/copyright | ||
- | -rw-r--r-- root/root 4979 2008-02-28 00:51 ./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 | ||
- | Все перечисленные | + | Все перечисленные свойства RPM поддерживает. |
- | + | С помощью rpm можно собрать пакет. Идея состоит в следующем: что нужно, чтобы собрать пакет? Для начала нужно иметь в виду одну особенность: авторы программ знать-не знают, ведать-не ведают о существовании дистрибутива ALT Linux, и правилах структуры пакетов. | |
+ | Например, есть утилита eaglomode, которая устанавливается а-ля солярис: /opt/eaglemode/{bin|lib|res|etc}. ... | ||
- | + | Это значит, что нужно модифицировать исходный код продукта, в помощь чему есть набор утилит patch, поскольку ментейнер не делает изменения с 0 для каждой версии, он оформляет эти изменения в виде патча, который потом накладывается. | |
- | + | Нужно соблюсти три условия: | |
- | + | ||
- | + | ||
* Оформить отличия в виде патчей | * Оформить отличия в виде патчей | ||
* Написать команды по сборке | * Написать команды по сборке | ||
- | * | + | * Нужно организовать предустановочный и послеудалятельный суенарий |
* Заполнить паспорт пакета | * Заполнить паспорт пакета | ||
- | + | Для всего это есть один файл, спекфайл, в которым всё это лежит, за исключением больших файлов, которые лежат отдельно. Иговорится, что пакеет состоит из скачанного исходника, спекфайла и дополнительных фйайлов. Это составляет src.rpm. Из этого собирается rpm. | |
- | + | Появляется второе понятие зависимости: зависимости, необходимые для сборки пакета. | |
- | + | Из этого можно сделать вывод, что 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, котрый работает с кэшем. | ||
Соответственно, диспетчер делает то, что не может установщик: строит дерево зависимостей, получает необходимые и запускает их установку. | Соответственно, диспетчер делает то, что не может установщик: строит дерево зависимостей, получает необходимые и запускает их установку. |