Xstow - программа, позволяющая довольно простым способом устанавливать программы вручную, не захламляя систему. Xstow пригодится, если у вас появится необходимость установить программу или версию программы, которой нет в репозиториях вашего дистрибутива.

Представим ситуацию: Вы используете дистрибутив Linux и вам нужно установить программу foobar, хотя ее нет в репозиториях вашего дистрибутива. Вы можете скачать архив с исходными кодами программы и скомпилировать ее вручную. Но как быть с захламлением системы бесхозными файлами? На самом деле, путей для решения проблемы много. Xstow предлагает свой вариант: вы качаете архив с исходниками, собираете и устанавливаете программу, как обычно, но за одним исключением - программа устанавливается с префиксом /usr/local/stow/имяпрограммы-версия. После этого вы переходите в каталог /usr/local/stow и от пользователя root запускаете программу xstow, указав ей в качестве параметра "имяпрограммы-версия". Xstow создает необходимые символические ссылки в каталоге /usr/local/, в результате вы сможете запускать и использовать программу так, как если бы она была установлена обычным способом. Если программу надо будет удалить, вы заходите в каталог /usr/local/stow и выполняете команду xstow -D "имяпрограммы-версия". После этого можно просто удалить каталог /usr/local/stow/имяпрограммы-версия и в вашей системе не останется бесхозных файлов.

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

Опишу принцип работы xstow на примере.
Представим, что в портежах Gentoo нету программы vifm. Я скачал архив с сайта программы, распаковал и перешел в каталог с исходниками. Каталог /usr/local пуст.

Код:
% ./configure --prefix=/usr/local/stow/vifm-0.6.3 
% make 
# make install

Теперь программа установлена в вышеуказанный каталог. Запустить программу я могу, указав полный путь до бинарника. Чтобы не вводить каждый раз полный путь, я могу добавить этот каталог в переменную $PATH. Но если программ будет много, переменная $PATH сильно разрастется. К тому же, мне, возможно, нужно будет добавить строку в /etc/ld.so.conf. Xstow может немного упростить мне жизнь:

Код:
% cd /usr/local/stow
# xstow vifm-0.6.3

В качестве параметра я указал "vifm-0.6.3". Фактически это лишь имя каталога и ничего более. Теперь xstow создал все необходимые символические ссылки в каталоге /usr/local:

Код:
# ls -l /usr/local
total 4
lrwxrwxrwx 1 root root   19 Sep 20 00:03 bin -> stow/vifm-0.6.3/bin
lrwxrwxrwx 1 root root   21 Sep 20 00:03 share -> stow/vifm-0.6.3/share
drwxr-xr-x 3 root root 4096 Sep 19 23:58 stow

Вуаля! Теперь я могу запустить vifm без ввода полного пути до файла, что подтверждается следующей командой:

Код:
# whereis vifm
vifm: /usr/local/bin/vifm

Немного усложним ситуацию. К примеру, мне понадобилось установить две различных версии программы vifm. У меня уже установлена версия 0.6.3, я скачал версию 0.6.2. Стандартная процедура:

Код:
% ./configure --prefix=/usr/local/stow/vifm-0.6.3
% make
# make install

Теперь перед созданием символических ссылок для версии 0.6.2, мне сперва надо удалить оные для версии 0.6.3, иначе будет ошибка:

Код:
% cd /usr/local/stow
# xstow -D vifm-0.6.3
# xstow vifm-0.6.2
% ls -l ../
total 4
lrwxrwxrwx 1 root root   19 Sep 20 00:12 bin -> stow/vifm-0.6.2/bin
lrwxrwxrwx 1 root root   21 Sep 20 00:12 share -> stow/vifm-0.6.2/share
drwxr-xr-x 4 root root 4096 Sep 20 00:09 stow

Хотя сами файлы vifm-0.6.3 так и остались лежать на своем месте (в каталоге /usr/local/stow/vifm-0.6.3), но символические ссылки из директории /usr/local/ были удалены. По желанию я могу удалить каталог /usr/local/stow/vifm-0.6.3, а могу оставить его для возможности переключаться между разными версиями этой программы.


Автор: Sergey Minaev


Сайт программы