Как стать автором
Обновить

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

Время на прочтение 3 мин
Количество просмотров 115K
Введение


Современные дистрибутивы Linux имеют в своем составе очень много софта. Проблемы с установкой/удалением/обновлением такого софта решены, можно сказать, идеально. Всем занимается менеджер пакетов. Выбрали нужный пакет, менеджер пакетов установит его. Нужно удалить — менеджер пакетов удалит и аккуратно все почистит. Но, иногда хочется, или нужно, установить программное обеспечение, не входящее в дистрибутив, или распространяющееся в исходниках, или даже в бинарниках. Как поступать в таких случаях?


В дальнейшем, для определенности, предполагаем, что мы используем Linux, дистрибутив Ubuntu или Debian.

Установка пакета из исходников


Классический для свободного софта путь распространения, распространение в исходных текстах. В таком виде программа представляет собой архив с именем вида:

name-version.tar.gz


Установка такого софта производится выполнением набора несложных команд:

tar -xzvf name-version.tar.gz
cd name-version
./configure
make
sudo make install


Расшифровка действий:

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


Расшифровка действий:

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


Команда:

sudo xstow -D name-version


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

Заключение


Используя менеджер пакетов xstow можно не только поддерживать порядок в системе, можно иметь несколько версий программ одновременно и быстро переключаться между ними.

Литература


1. Стандартная иерархия файловой системы Linux (File System Hierarchy Standard)
2. Filesystem Hierarchy Standard
Теги:
Хабы:
+27
Комментарии 83
Комментарии Комментарии 83

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн