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

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

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

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

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

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

Текущая версия Ваш текст
Строка 17: Строка 17:
Обычно пользуются первым, реже вторым. Но правильный — третий. Сначала необходимо определить круг решаемых задач. После определения круга задач возникает вопрос, где искать инструменты(то есть, программы) для их решения.
Обычно пользуются первым, реже вторым. Но правильный — третий. Сначала необходимо определить круг решаемых задач. После определения круга задач возникает вопрос, где искать инструменты(то есть, программы) для их решения.
-
Откуда вообще берутся программы под Linux? Надо дать достаточно точный и полный ответ, ибо обычно ответ звучит как «лежат на диске» или «скачиваются из сети», что не даёт никакого представления о культуре поиска и установки ПО под Linux. Рассмотрим то, где на самом деле берут ПО для Linux.
+
Откуда вообще берутся программы под Linux? Надо дать достаточно точный и полный ответ, ибо обычно ответ звучит как «лежат на диске» или «скачиваются из сети». Рассмотрим то, где на самом деле берут ПО для Linux.
=== Дистрибутив и репозиторий ===
=== Дистрибутив и репозиторий ===
Строка 34: Строка 34:
* Искать в репозитории
* Искать в репозитории
* Искать в чужом дистрибутиве.
* Искать в чужом дистрибутиве.
-
* Поиск по специализированным сайтам ([http://sourceforge.net/ sourceforge], savannah (http://savannah.gnu.org/, http://savannah.nongnu.org/), [http://freshmeat.net/ freshmeat])
+
* Поиск по специализированным сайтам (sourceforge, savanna, freshmeat)
-
* Поиск в [http://google.com google] на предмет сайта разработчика
+
* Поиск в google на предмет сайта разработчика
* Если всё это проделали, и результатов нет, то не значит, что приложения не существует. Очень хороший источник информации — сообщество.
* Если всё это проделали, и результатов нет, то не значит, что приложения не существует. Очень хороший источник информации — сообщество.
** Официальные информационные ресурсы (документация, сайт, wiki)
** Официальные информационные ресурсы (документация, сайт, wiki)
Строка 53: Строка 53:
=== FHS ===
=== FHS ===
-
В Linux существует строгая иерархия каталогов (File Hierachy System, FHS), которая описывает структуру каталогов и их семантику. Подробно FHS описан в учебнике Курячего Г. В. [http://uneex.ru/Books/LinuxIntro «Операционная система Linux»]. Так, в соответствии с FHS, существует 4 места для ПО, 2 каталога для разделяемых библиотек, 1 каталог для документации, и так далее. Каждая программа, состоящая из многих файлов, размещает их в соответствии с их предназначением в соответствующие каталоги в ФС.
+
В Linux существует строгая иерархия каталогов (File Hierachy System, FHS), которая описывает структуру каталогов и их семантику. Подробно FHS описан в учебнике Курячего Г. В. «Операционная система Linux». Так, в соответствии с FHS, существует 4 места для ПО, 2 каталога для разделяемых библиотек, 1 каталог для документации, и так далее. Каждая программа, состоящая из многих файлов, размещает их в соответствии с их предназначением в соответствующие каталоги в ФС.
Пример размещения некоторых типичных файлов абстрактной программы:
Пример размещения некоторых типичных файлов абстрактной программы:
Строка 61: Строка 61:
И всё это входит в один программный продукт.
И всё это входит в один программный продукт.
-
В Linux достаточно аккуратно проделано разделение прав доступа, и пользователь не имеет права доступа на запись к большей части файловой системы (за исключением своей домашней директории и /tmp/). Тем не менее, процессы, запущенные под суперпользователем игнорируют ограничения доступа. Поэтому установка ПО обычно делается под root'ом (поскольку при этом создаются файлы в каталогах, которые закрыты на запись для простых пользователей), и установку программ, кроме как в свой каталог, обычный пользователь, в отличие от root'а, осуществить не может.
+
/*В Linux достаточно аккуратно проделано разделение прав доступа, и без ведома пользователя другой пользователь не имеет доступа к его файлам. Тем не менее, процессы, запущенные под суперпользователем игнорируют ограничения доступа. В частности, установка ПО обычно делается под root'ом (поскольку при этом создаются файлы в каталогах, которые закрыты на запись для простых пользователей), и установку специфических программ, кроме как в свой каталог, обычный пользователь, в отличие от root'а, осуществить не может.
-
 
+
Мутно-путано.*/
=== Пакет ===
=== Пакет ===
Строка 77: Строка 77:
В связи с этим возникает ряд вопросов:
В связи с этим возникает ряд вопросов:
-
* Что делать, если одни пакеты зависят от других (например, один программный продукт и использует в своей работе другой)?
+
* Как разрешать зависимости одних пакетов от других?/*что такое зависимости нигде не сказано, а уже их разрешают. Тогда уж просто пункт обозвать «Зависимости тратата»*/
* Как разрешать конфликты, то есть, те случаи, когда при попытке установить файл из архива оказывается, что такой файл есть, и создан он не пользователем, а другим пакетом?
* Как разрешать конфликты, то есть, те случаи, когда при попытке установить файл из архива оказывается, что такой файл есть, и создан он не пользователем, а другим пакетом?
Строка 94: Строка 94:
Но, при всех достоинствах разделяемых библиотек, появляется проблема -- задача разрешения зависимостей. Разделяемые библиотеки не входят в пакет. Каждая группа библиотек находится в отдельном пакете. Перед установкой программного продукта необходимо установить все библиотеки, которые им используются, то есть, удовлетворить его зависимости. Получается палка о двух концах: с одной стороны, использование разделяемых библиотек упрощает и ускоряет разработку; с другой стороны, усложняется порядок установки программ — необходимо скачать и установить в правильном порядке всё дерево (точнее, ациклический орграф) зависимостей. В большинстве дистрибутивов Linux для автоматизации удовлетворения зависимостей существуют две программы — установщик и менеджер пакетов, которые подробно рассмотрены далее.
Но, при всех достоинствах разделяемых библиотек, появляется проблема -- задача разрешения зависимостей. Разделяемые библиотеки не входят в пакет. Каждая группа библиотек находится в отдельном пакете. Перед установкой программного продукта необходимо установить все библиотеки, которые им используются, то есть, удовлетворить его зависимости. Получается палка о двух концах: с одной стороны, использование разделяемых библиотек упрощает и ускоряет разработку; с другой стороны, усложняется порядок установки программ — необходимо скачать и установить в правильном порядке всё дерево (точнее, ациклический орграф) зависимостей. В большинстве дистрибутивов Linux для автоматизации удовлетворения зависимостей существуют две программы — установщик и менеджер пакетов, которые подробно рассмотрены далее.
-
Кроме этого существуют непрямые зависимости. Возможна ситуация, когда для работы вашего продукта другой программный продукт не является необходимым, но с ним связана некая некритичная функциональность. Например, для почтового веб-сервера не обязательно нужен почтовый сервер, поэтому установка почтового сервера не должна требоваться, но его можно оформить как рекомендованный пакет, поскольку первое без второго используется редко.
+
Кроме этого существуют непрямые зависимости. Возможна ситуация, когда для работы вашего продукта другой программный продукт не является необходимым, но с ним связана некая некритичная функциональность. Например, для почтового вебсервера не обязательно нужен почтовый сервер, поэтому установка почтового сервера не должна требоваться, но его можно оформить как рекомендованный пакет, поскольку первое без второго используется редко.
==== Конфликты ====
==== Конфликты ====
Строка 100: Строка 100:
Иногда при установке очередного пакета может возникнуть так называемый конфликт.
Иногда при установке очередного пакета может возникнуть так называемый конфликт.
-
'''Конфликт''' — ситуация, при которой файлы из разных пакетов должны иметь одинаковые абсолютные пути.
+
'''Конфликт''' — ситуация, при которой файлы из разных пакетов должны иметь одинаковые абсолютные имена/*абсолютное имя – откуда термин?не лучше ли «полностью одинаковые имена и пути»*/.
Пример конфликта: пакеты с различными вариантами vi: vi, vim-minimal, mvi пытаются установить бинарный файл /usr/bin/vi.
Пример конфликта: пакеты с различными вариантами vi: vi, vim-minimal, mvi пытаются установить бинарный файл /usr/bin/vi.
Существует метод, позволяющий разрешать конфликты — альтернатива. Для каждого пакета выбираются свои уникальные имена (в данном примере — /usr/bin/vi.original, /usr/bin/vim, /usr/bin/mvi). Кроме этого, создаётся файл с конфликтным именем (/usr/bin/vi), но он является символической ссылкой на один из файлов, боровшихся за данное имя. То, куда будет указывать символическая ссылка, решается при помощи отдельного механизма(например назначением пакетам некоторых весов и ссылкой на файлы пакета с наибольшим весом).
Существует метод, позволяющий разрешать конфликты — альтернатива. Для каждого пакета выбираются свои уникальные имена (в данном примере — /usr/bin/vi.original, /usr/bin/vim, /usr/bin/mvi). Кроме этого, создаётся файл с конфликтным именем (/usr/bin/vi), но он является символической ссылкой на один из файлов, боровшихся за данное имя. То, куда будет указывать символическая ссылка, решается при помощи отдельного механизма(например назначением пакетам некоторых весов и ссылкой на файлы пакета с наибольшим весом).
 +
 +
==== Конфликты версий ====
 +
о_О
=== Установщик пакетов ===
=== Установщик пакетов ===
-
Как сказано выше, единицей ПО считается пакет. Пакет обладает массой свойств — это не только распаковка, но и регистрация в системе, запуск некоторых сценариев при установке/удалении. Работой с отдельным пакетом занимается установщик.
+
Как сказано выше, единицей ПО считается пакет/*а бинарники?*/. Пакет обладает массой свойств — это не только распаковка, но и регистрация в системе, запуск некоторых сценариев при установке/удалении. Работой с отдельным пакетом занимается установщик.
'''Установщик''' — утилита, которая позволяет управлять отдельным пакетом. Сюда входят установка и удаление, проверка пакета на различные свойства, просмотр различий в версиях пакета, проверка зависимостей, и так далее.
'''Установщик''' — утилита, которая позволяет управлять отдельным пакетом. Сюда входят установка и удаление, проверка пакета на различные свойства, просмотр различий в версиях пакета, проверка зависимостей, и так далее.
- 
-
По историческим причинам, в список обязанностей установщика пакетов входит также их сборка пакетов из их исходных версий. В исходную версию пакета (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 дистрибутивах).
 
-
* DEB, Debian software package. Формат, разработанный в рамках дистрибутива Debian и использующийся большей частью в Debian-based дистрибутивах. Отличается гибкостью процесса установки пакетов. Установщиком для данного формата пакетов является утилита dpkg.
 
- 
-
Помимо упомянутых двух форматов, существует и много других, например, свой формат пакетов используется в дистрибутиве Gentoo (Portage), свой формат пакетов в самом старом дистрибутиве Slackware.
 
- 
-
Рассмотрим, как выполняются основные операции по рабте с пакетами:
 
-
* Установка
 
-
** rpm -i <file>.rpm
 
-
** dpkg -i <file>.deb
 
-
* Удаление
 
-
** rpm -e <file>.rpm
 
-
** dpkg -r <file>.deb
 
- 
-
Покажем, что пакет является архивом.
 
-
* Пакет в формате 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, и формат DEB поддерживают.
 
- 
-
==== Сборка пакетов ====
 
- 
-
Процесс сборки в пакет специфицирован, во всех крупных дистрибутива существует сглашения по тому, что должно входить в пакет, каков процесс сборки и установки.
 
- 
-
При этом первое, что надо учитывать, это то, что разработчики ПО имеют свои собственные, отличные от политики дистрибутива, представления о том, где какие файлы должны находиться. Например, есть приложение [http://eaglemode.sourceforge.net/ eaglemode], которое устанавливается а-ля приложения для Solaris: /opt/eaglemode/{bin|lib|res|etc}. Это — одна из причин, по которой в процессе подготовки к сборке пакета необходимо модифицировать исходный код продукта. Для облегчения процесса подготовки ПО в соответствии с полиси дистрибутива есть набор утилит patch. Это позволяет ментейнеру не делать изменения с 0 для каждой новой версии, он оформляет сделанные изменения в виде патча, который потом накладывается на оригинальный вариант ПО.
 
- 
-
В результате, в процессе подготовки ПО к сборке в пакет нужно выполнить следующие действия:
 
-
* Оформить отличия в виде патчей
 
-
* Написать команды по сборке
 
-
* Организовать предустановочный и послеудалятельный сценарий
 
-
* Заполнить паспорт пакета
 
- 
-
В RPM для этих целей служит spec-файл, в которым всё это лежит, за исключением больших файлов, которые лежат отдельно. Скачанный исходник, spec-файла и дополнительные файлы составляют src.rpm. Из него и собирается rpm.
 
- 
-
В DEB имеется несколько различных файлов, каждый служит своим целям. В файле control указывается различная метаинформация: название пакета, описание, зависимости (паспорт пакета). В rules находятся команды по сборке пакета (makefile для утилиты dh_make). Скрипты, которые должны выполняться в процессе установки и удаления пакета, размещаются в файлах postinst, preinst, postrm, prerm. Существует ещё ряд служебных файлов (changelog, dirs, README, ...) служащих различным целям. Команда debuild собирает DEB-пакет с использванием этих файлов.
 
- 
-
В процессе сборки могут потребоваться дополнительные программы (например для компиляции и пребразования исходных файлов), которые не нужны для работы собираемого ПО. Появляется второй род зависимостей: зависимости, необходимые для сборки пакета (build requirements).
 
- 
-
==== Особенности установщика при работе с пакетами ====
 
- 
-
Как уже отмечалось ранее, установщик пакетов работает с файлами, не с хранилищами. Поэтому, для установки исключительно с использованием установщика пакета необходимо предварительно откуда-то скачать его вместе со всеми зависимостями, которые ещё не установлены (иначе установщик не сможет установить пакет — он не знает, где брать те или иные неустановленные пакеты)
 
- 
-
Из этого можно сделать вывод, что rpm для обычного пользователя программа не очень удобная. Поскольку при попытке установить пакет может оказаться, что не удовлетворены зависимости, для них не удовлетворены их и так дале. Причём rpm не может отследить все необходимые зависимости, они в пакете не написаны, там только непосредственные зависимости. Но со своей задачей rpm справляется.
 
=== Менеджер пакетов ===
=== Менеджер пакетов ===
Строка 208: Строка 119:
По традиции, установщик также используется для сборки пакета. Но это не столь важно, сколь другая особенность установщика: он работает с одним файлом, а для управления всеми доступными пакетами необходим диспетчер (менеджер) пакетов, который работает сразу с хранилищами пакетов. В итоге, задача диспетчера состоит в построении графа зависимостей, разрешения вопроса о получении недостающих пакетов (скачивания их из доступных источников) и их установке.
По традиции, установщик также используется для сборки пакета. Но это не столь важно, сколь другая особенность установщика: он работает с одним файлом, а для управления всеми доступными пакетами необходим диспетчер (менеджер) пакетов, который работает сразу с хранилищами пакетов. В итоге, задача диспетчера состоит в построении графа зависимостей, разрешения вопроса о получении недостающих пакетов (скачивания их из доступных источников) и их установке.
-
Поэтому для решения этих задач используется диспетчер пакетов. В альте используется apt? Advanced Package Tool. Он взят из дебиавна, в котором ещё и свой формат пакетов --- dpkg. Он был достаточно универсален, чтобы после нескольких ударов кувалдой он начинал использовать rpm. Причём его писали такие хакеры, что можно и кувалду сломать.
+
!!! Тут переход от определений к тому, откуда ставить, и что за это будет
-
 
+
-
Мы уже описали ситуацию, при которой установщик пасует. Что же ... .
+
-
* Пользователь совершенно не обязан указывать версию пакета. Откула apt узает версию пакета? В отличие от установщикА, диспетчер пакета работает с хранилищами пакетов. Он знает, где лежат все пакеты, которые я могу захотеть установить. Хранилищ может быть несколько. Диспетчер кеширует индексы. Соответственно, есть две утилиты --- apt-get , который работает с хранилищами непосредственно, и apt-cache, котрый работает с кэшем.
+
-
Соответственно, диспетчер делает то, что не может установщик: строит дерево зависимостей, получает необходимые и запускает их установку.
+
-
* apt-get install <имя пакета> --- установка пакета
+
-
* apt-get remove <имя пакета> --- удаление пакета
+
-
* apt-get update --- обновление индексов
+
-
Таким образом, на долю утилиты apt ложится обновление из изменяющегося хранилища.
+
-
* apt-cache search --- ищет имтроку в именах пакетов, их описаниях и файлах
+
-
У обоих команд (rpm и apt) есть дикое количество ключей.
+
-
 
+
-
Кроме апта, есть есть графические утилиты для работы с пакетами.
+
-
 
+
-
Любая команда по работе с системой должна выполняться с правами суперпользвователя.
+
-
 
+
-
Ровно одна задача --- модификация самой системы --- делается с правами суперпользователя.
+
-
 
+
-
=== Виды программ ===
+
-
(отсортировано по вероятности того, что программа заработает в вашей системе)
+
-
* Бинарники — первый и самый наименее вероятный уровень.
+
-
** Подвиндовз + wine
+
-
*** Wine имеет двух наследников — Wine intersoft и crossover office, небесплатных
+
-
** Бинарники под Linux
+
-
*** Для того, чтобы такая программа нормально заработала нужно кроме программы предоставить все библиотеки, с которыми она собрана. Статическая сборка/с библиотеками
+
-
*** Если не статически собраны, то возникает проблема с версиями библиотек и размещением конфиг. файлов.
+
-
** Практика показывает, что эта степень подлинуксовости — низшая
+
-
* Программа на Си++
+
-
** Тоже низшая степень подлинуксовости. Если я написал программу, она компилируется и работает, то я написал программу под Линукс. Такие проекты либо очень быстро задыхаются (ибо программа работает только на той машине, где писалась), либо очень простые
+
-
** Сборка? Во многих случаях это возможно, но никакой гарантии нет
+
-
* Уровень крибле-крабле-бумс — использование Autotools
+
-
** Способ делать более-менее кроссплатформенноен приложение. Они делают мейк-файл, который позволяет собирать программу на большом количестве систем. Вероятность сборки повышается, особенно если у вас просто линукс, а линукс это мейнстрим.
+
-
** Кто и как часто собирает? Если нужно установить программу на нескольких машинах то что, надо всё время скачивать и пересобирать? Сборка это невоспроизводимый процесс (на разных машинах — разные программы)
+
-
* Пакеты другого дистрибутива (чужой пакет). Есть некоторая вероятность, что он не заработает.
+
-
** Всё равно встаёт вопрос соместимости по библиотекам
+
-
** Поскольку пакет не вашего дистрибутива, то он не входит в структуру. Вы обновляете дистрибутив, а пакет не обновляется. Дело в том, что когда вы дообновляетесь до того, что обновятся библиотеки так, что пакет перестанет работать, то надо что-то делать.
+
-
* spec-файл (для rpm). Можжно взять src.rpm и spec-файл, то можно попытаться собрать его, подсунув свои библиотеки.
+
-
** Опять попадаете в ситуацию сизифового труда. Взяли спек, подправили баги, собрали, всё это в одиночку. Послезавтра если это надо будет установить на другой машине, то собирать придётся с начала.
+
-
** Это не пакет. Он не обновляется, и т. д.
+
-
** Можно доработать его до пакета, положить в дистрибутиьв и стать maintainerом этого пакета.
+
-
* Пакет дистрибутива.
+
-
 
+
-
Один забавный факт. Человек, от линукса далёкий, будет искать сверху вниз. Человек недалёкий будет делать это в обратном порядке.
+
-
 
+
-
В последнем случае получаются много бонусов.
+
-
 
+
-
Ровно до момента "чужой пакет" вы не являетесь членом сообщества вообще. И только в последнем случае вы — полноправный член сообщества. Единственное, чем этот путь плох — этот путь не для простого пользователя, это путь для разработчика.
+
-
 
+
-
Джава — ОС в ОС. Со стороны maintainerов дистрибутива, нужно положить в дистрибутив Джава-машину, эклипс и всё. (...)
+
-
 
+
-
=== Как искать программы под Linux ===
+
-
* Искать в дистрибутиве (apt-cache search).
+
-
** Поиск в собственном дистрибутиве
+
-
** Поиск в бэкпортах — сборка новых программ под старые дистрибутивы (окружения)
+
-
** Поиск в тестовой версии
+
-
* Искать в чужом дистрибутиве.
+
-
** Вероятность довольно высокая потому, что много людей пытались собрать эту программ до вас
+
-
** src.rpm
+
-
** rpm
+
-
* Поиск по разработчикам (sourceforge, savanna, freshmeat). Они выдадут по ключевым словам, какие существуют программные продукты, соотвествующие ключевым словам. Из этого списка нужно выбрать несколько кандидатов, посмотреть их, понять, почему до вас не собрали, собрать...
+
-
** Это может не помочь по двум причинам
+
-
**# Не все проекты, особенно проекты экзотические (академические) попадают на эти порталы. Но елси у людей есть сайт, то крупные поисковые системы наверняка их проиндексировали по тем же ключевым словам (go google)
+
-
* Если всё это проделали, и результатов нет, то не значит, что софта не существует. Очень хороший источник информации — сообщество.
+
-
** Поиск сообщества
+
-
** Поиск ресурса в сообществе
+
-
** Официальные информационные ресурсы (документация, сайт, wiki)
+
-
*** Списки рассылки
+
-
*** IRC, форумы (если игнор-лист правильно настроить)
+
-
=== Спепцифика установки ПО из различных источников ===
 
-
==== Установка ПО из своего дистрибутива ====
+
=== Установка ПО из своего дистрибутива ===
В рамках дистрибутива всё будет хорошо.
В рамках дистрибутива всё будет хорошо.
-
==== Установка ПО не из своего дистрибутива ====
+
=== Установка ПО не из своего дистрибутива ===
-
===== Установка из хранилища =====
+
==== Установка из хранилища ====
Когда вы обращаетесь к хранилищу, может случиться, что появились версии программ и все поменялось. В этом случае применим следующий способ: помимо rpm есть src.rpm, в котором содержится всё необходимое для сборки программного продукта. Можно скачать src.rpm и пересобрать его в своём окружении. Всё сводится к выполнению новых команд:
Когда вы обращаетесь к хранилищу, может случиться, что появились версии программ и все поменялось. В этом случае применим следующий способ: помимо rpm есть src.rpm, в котором содержится всё необходимое для сборки программного продукта. Можно скачать src.rpm и пересобрать его в своём окружении. Всё сводится к выполнению новых команд:
Строка 292: Строка 135:
* У нового бинарного rpm не будет проблем с зависимостями
* У нового бинарного rpm не будет проблем с зависимостями
-
===== Установка из другого репозитория =====
+
==== Установка из другого репозитория ====
Проблема с чужим репозиторием может заключаться в том, что разделяемые библиотеки могут находиться в пакетах с другими именами.
Проблема с чужим репозиторием может заключаться в том, что разделяемые библиотеки могут находиться в пакетах с другими именами.
Строка 298: Строка 141:
Кроме того, пакеты из чужих репозиториев не обновляются/*автоматически?ручками то можно*/, что с определённого момента не позволит обновлять зависимые библиотеки, а также пакеты, которые зависят от этих библиотек.
Кроме того, пакеты из чужих репозиториев не обновляются/*автоматически?ручками то можно*/, что с определённого момента не позволит обновлять зависимые библиотеки, а также пакеты, которые зависят от этих библиотек.
-
===== Сборка из исходных кодов =====
+
==== Сборка из исходных кодов ====
Существует два основных способа: сборка с использованием вручную написанного makefile и сборка с использованием autotools. Основная проблема в том, что если активно пользоваться программой, то при каждой новой версии выполняется последовательность команд configure, make, make install, в результате чего возникает большое количество версий одних и тех же библиотек, удалить которые нельзя, так как их может использовать кто-то ещё. Кроме того, может получиться, что старые библиотеки используются вместо новых.
Существует два основных способа: сборка с использованием вручную написанного makefile и сборка с использованием autotools. Основная проблема в том, что если активно пользоваться программой, то при каждой новой версии выполняется последовательность команд configure, make, make install, в результате чего возникает большое количество версий одних и тех же библиотек, удалить которые нельзя, так как их может использовать кто-то ещё. Кроме того, может получиться, что старые библиотеки используются вместо новых.
-
===== Установка бинарника =====
+
==== Установка бинарника ====
Одна из проблем с бинарными файлами заключается в том, что они могут использовать свои библиотеки определённой версии, что никак не контролируется в рамках репозитория. Выходов два: сборки под разные дистрибутивы средствами разработчика или статическая сборка всех используемых библиотек. Стоит отметить, что в последнем случае гораздо больше вероятность, что запустится бинарник, чем пакет из другого дистрибутива.
Одна из проблем с бинарными файлами заключается в том, что они могут использовать свои библиотеки определённой версии, что никак не контролируется в рамках репозитория. Выходов два: сборки под разные дистрибутивы средствами разработчика или статическая сборка всех используемых библиотек. Стоит отметить, что в последнем случае гораздо больше вероятность, что запустится бинарник, чем пакет из другого дистрибутива.
Строка 312: Строка 155:
И то, и другое должно происходить от имени суперпользователя, что потенциально порождает проблемы (как и в любом другом случае установки ПО, но данный усугубляеется тем, что нельзя проконтролировать процесс). Как альтернатива, существуют директории ~/bin и ~/.local, в которые можно произвести инсталляцию, не имея прав root'а, но отнюдь не всегда эти пути прописаны в PATH./*мб все таки пояснить что такое PATH и почему там все должны быть прописаны? сноской.*/
И то, и другое должно происходить от имени суперпользователя, что потенциально порождает проблемы (как и в любом другом случае установки ПО, но данный усугубляеется тем, что нельзя проконтролировать процесс). Как альтернатива, существуют директории ~/bin и ~/.local, в которые можно произвести инсталляцию, не имея прав root'а, но отнюдь не всегда эти пути прописаны в PATH./*мб все таки пояснить что такое PATH и почему там все должны быть прописаны? сноской.*/
-
===== Резюме =====
+
==== Резюме ====
По возможности (в частности, в случае использования пакетов из других хранилищ или сборки из исходных текстов) надо собирать пакеты и добавлять их в используемый репозиторий. Это позволит избежать проблем, связанных с зависимостями и обновлениями./*Резюме скорее для разработчиков, а не для детей. */
По возможности (в частности, в случае использования пакетов из других хранилищ или сборки из исходных текстов) надо собирать пакеты и добавлять их в используемый репозиторий. Это позволит избежать проблем, связанных с зависимостями и обновлениями./*Резюме скорее для разработчиков, а не для детей. */
Строка 346: Строка 189:
Тем не менее, это не позволяет настраивать всю систему, только определённую её часть, и, как следствие, не решает задачу настройки в общем случае.
Тем не менее, это не позволяет настраивать всю систему, только определённую её часть, и, как следствие, не решает задачу настройки в общем случае.
-
== Где искать ответы на вопросы ==
+
== Где искать ответы на вопросы (?) о_О ==
-
...
+
[http://www.google.com http://www.google.com]
-
 
+
-
== Ссылки ==
+
-
* [[Спецкурс по Linux, весна 2007, 03 лекция (от 09 марта)|Виды ПО пд Linux]]
+
-
* [[UNИX, осень 2007, 09 лекция (от 30 ноября)|Пакет]]
+
-
* [[UNИX, осень 2007, 10 лекция (от 07 декабря)|Установщик, каталоги, настройка]]
+
-
* [[UNИX, осень 2007, 11 лекция (от 14 декабря)|Лекция про информационный поиск]]
+
-
* [[UNИX, весна 2008, 13 лекция (от 07 мая)|Лекция про структуру дистрибутива и пакеты]]
+
-
* [[UNИX, весна 2008, 14 лекция (от 14 мая)|Лекция про установщик и менеджер пакетов]]
+
-
 
+
-
== Примечания ==
+
-
<references />
+

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

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