Установите каждую программу в специализированном дереве каталогов, и использование Убирает или XStow, чтобы заставить все программы появиться в общей иерархии. Уберите создает символьные ссылки от определенного для программы каталога до общего дерева.
Более подробно выберите каталог верхнего уровня, например /usr/local/stow
. Установите каждую программу под /usr/local/stow/PROGRAM_NAME
. Например, примите меры, чтобы его исполняемые файлы были установлены в /usr/local/stow/PROGRAM_NAME/bin
, его страницы справочника в /usr/local/stow/man/man1
и так далее. Если программа использует autoconf, то выполненный ./configure --prefix /usr/local/stow/PROGRAM_NAME
. После выполнения make install
, выполненный stow
:
./configure --prefix /usr/local/stow/PROGRAM_NAME
make
sudo make install
cd /usr/local/stow
sudo stow PROGRAM_NAME
И теперь у Вас будут символьные ссылки как они:
/usr/local/bin/foo -> ../stow/PROGRAM_NAME/bin/foo
/usr/local/man/man1/foo.1 -> ../../stow/PROGRAM_NAME/man/man1/foo.1
/usr/local/lib/foo -> ../stow/PROGRAM_NAME/lib/foo
Можно легко отслеживать, каких программ Вы установили путем списка содержания stow
каталог, и Вы всегда знаете, какая программа файл принадлежит тому, потому что это - символьная ссылка на местоположение в соответствии с каталогом той программы. Удалите программу путем выполнения stow -D PROGRAM_NAME
затем удаляя каталог программы. Можно сделать программу временно недоступной путем выполнения stow -D PROGRAM_NAME
(выполненный stow PROGRAM_NAME
сделать это доступным снова).
Если Вы хотите смочь быстро переключиться между различными версиями той же программы, использовать /usr/local/stow/PROGRAM_NAME-VERSION
как каталог программы. Для обновления от версии 3 до версии 4, версии 4 установки, затем работают stow -D PROGRAM_NAME-3; stow PROGRAM_NAME-4
.
Более старые версии Убирают, не идет очень далеко вне основ, которые я описал в этом ответе. Более новые версии, а также XStow (который не сохранялся в последнее время) имеют больше расширенных функций, как способность проигнорировать определенные файлы, лучше справиться с существующими символьными ссылками вне убирать каталога (такой как man -> share/man
), обработайте некоторые конфликты автоматически (когда две программы обеспечат тот же файл), и т.д.
Если Вы не имеете или не хотите использовать корневой доступ, можно выбрать каталог в соответствии с корневым каталогом, например. ~/software/stow
. В этом случае добавить ~/software/bin
к Вашему PATH
. Если man
автоматически не находит страницы справочника, добавляют ~/software/man
к Вашему MANPATH
. Добавить ~/software/info
к Вашему INFOPATH
, ~/software/lib/python
к Вашему PYTHONPATH
, и так далее как применимый.
Это не, всегда "туннелируют". БОЧКА/TAP является просто определенными драйверами NIC. С точки зрения сетевого стека они действуют как любые другие сетевые интерфейсы: у них могут быть IP-адреса, могут быть или широковещательные интерфейсы точка-точка. Правила маршрутизации также относятся к ним. Но весь трафик, который записан, к одному из которого сетевые интерфейсы переходят к некоторой программе пространства пользователя для обработки и всем данным, записанным программой пространства пользователя непосредственно к /dev/tunX
похож на входящие пакеты для сетевого стека.
В обычном туннелирующем сервере установки и клиенте имеют устройства БОЧКИ с присвоенными адресами. Таблицы маршрутизации, настроенные на них обоих, направляют необходимый трафик к этой БОЧКЕ устройства. Когда пакет направляется к tun0, ядро отправляет его в программу пространства пользователя (клиент), который отправляет этот пакет в другую программу на удаленной машине (сервер) через, например, соединение TCP. На удаленной машине другая программа (сервер) получает пакет от клиента и пишет это в свой собственный /dev/tunX
устройство, "вводя" тот пакет в сетевой стек. И туннелировал, пакет обрабатывается как любой другой.