Это вариация предыдущего метода управления пакетами. Каждый пакет устанавливается аналогично предыдущей схеме. Но вместо того, чтобы делать символическую ссылку в иерархии /usr делаются символические ссылки на каждый файл. Это устраняет необходимость добавлять директорий в переменные среды окружения. Хотя символические ссылки могут создаваться пользователем, который может автоматизировать их создание, многие менеджеры пакетов были написаны с использованием этого подхода. К ним относятся несколько популярных менеджеров, к которым относятся Stow, Epkg, Graft и Depot.
Установка должна быть фиктивной, поскольку пакет считает, что он установлен в директорий /usr, хотя в действительности он будет установлен в иерархию /usr/pkg. Такая установка обычно является нетривиальной задачей. Предположим, например, что вы устанавливаете пакет libfoo-1.1. С помощью следующих инструкций пакет не удастся установить правильно:
./configure --prefix=/usr/pkg/libfoo/1.1makemake install Установка будет выполнена, но зависимые пакеты не смогут ссылаться на libfoo так, как вы ожидаете. Если вы компилируете пакет, который ссылается на libfoo, вы можете заметить, что ссылка делается на/usr/pkg/libfoo/1.1/lib/libfoo.so.1, а не на /usr/lib/libfoo.so.1, как следовало ожидать. Правильный подход заключается в использовании в фиктивной установке пакета стратегии DESTDIR. Этот подход работает следующим образом:
./configure --prefix=/usrmakemake DESTDIR=/usr/pkg/libfoo/1.1 install Этот подход поддерживается в большинстве пакетов, есть некоторые пакеты, в которых поддержки нет. Для таких пакетов вам, возможно, потребуется вручную установить пакет, либо вы можете решить, что некоторые проблемные пакеты легче установить в директорий /opt.