Установка пакета из исходников, обычный способ
Классический для свободного софта путь распространения, распространение в исходных текстах. В таком виде программа представляет собой архив с именем вида:
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 | Настройка исходников на нашу систему |
| 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/ можно удалять.