четверг, 16 июня 2011 г.

Установка программ не входящих в дистрибутив при помощи менеджера xstow

Установка пакета из исходников, обычный способ

Классический для свободного софта путь распространения, распространение в исходных текстах. В таком виде программа представляет собой архив с именем вида:
name-version.tar.gz
Установка такого софта производится выполнением набора несложных команд:
tar -xzvf name-version.tar.gz
  cd name-version
  ./configure
  make
  sudo make install
Расшифровка действий:

ШагКомандаЧто делает
1tar -xzvf name-version.tar.gzРаспаковка архива
2cd name-versionПереходим в полученный после распаковки директорий
3./configureНастройка исходников на нашу систему
4makeКомпиляция
5sudo make installУстановка

Проблемы

Проблема 1: Отсутствие нужных библиотек

Очень часто все не идет так гладко, а на шаге 3, команда configure на что-то жалуется. А жалуется она как правило на отсутствие нужных библиотек, или заголовков библиотек. Рассматриваем внимательно выход, который выдала команда configure на консоль и устанавливаем недостающие библиотеки и заголовки. Заголовки для Debian-подобных дистрибутивов, в том числе и для Ubuntu находятся в пакетах с суффиксом -dev в названии пакета.
Предположим мы увидели, что configure жалуется на библиотеку, устанавливаем ее в систему:
sudo apt-get install name
Запускаем configure опять. Теперь жалуется на заголовки этой же библиотеки. Устанавливаем и их:
sudo apt-get install name-dev
Ну наконец, установили все нужное, откомпилировали, работаем и получаем удовольствие. Казалось бы, счастье, вот оно. Но нет, вырисовывается проблема 2:

Проблема 2: Бардак в системе

Предположим, мы установили одну программу из исходников, другую, третью. И вдруг нам понадобилось удалить первую, или заменить ее версию. А мы, оказывается не знаем, какие файлы относятся к этой программе и где они. Одни программы устанавливают свои файлы в иерархию /usr/local , другие вообще в /usr . В общем, мы не знаем, как вычистить файлы, относящиеся к пакету.

Отступление: Стандартная иерархия файловой системы Linux (File System Hierarchy Standard)

В Linux есть стандарт на размещение файлов в системе. Ссылки приведены в разделе Литература. По этому стандарту, в иерархии директорий /usr должны храниться файлы используемые пользователями, в том числе и пользователям с других компьютеров. В иерархии директорий /usr/local - файлы используемые локальными пользователями. Таким образом нам нужно наши программы ставить в иерархию /usr/local, и при этом избежать бардака.

Улучшеный способ установки: менеджер пакетов xstow

Сделать это нам поможет менеджер пакетов xstow. Можно пользоваться также менеджером stow, xstow - это расширенная версия. Что он делает? Очень простую вещь. Мы устанавливаем наши программы в иерархию /usr/local/stow, каждую программу в свою директорию, а потом менеджер xstow создает символьные линки на наши файлы из иерархии /usr/local. Устанавливаем xstow:
sudo apt-get install xstow
Теперь последовательность операций при установке пакета с использованием менеджера xstow. 
tar -xzvf name-version.tar.gz
cd name-version
./configure --prefix=/usr/local/stow/name-version
make
sudo make install
cd /usr/local/stow/
sudo xstow name-version
Расшифровка действий:

ШагКомандаЧто делает
1tar -xzvf name-version.tar.gzРаспаковка архива
2cd name-versionПереходим в полученный после распаковки директорий
3./configureНастройка исходников на нашу систему
4makeКомпиляция
5sudo make installУстановка
6cd /usr/local/stow/Переходим в директорий, где лежат программы
7sudo xstow name-versionСоздаем символьные линки в иерархию /usr/local

Команда:
sudo xstow -D name-version
Удаляет символьные ссылки. После удаления ссылок директорию с файлами программы, находящуюся в /usr/local/stow/ можно удалять.


Комментариев нет:

Отправить комментарий