Подавляющее большинство .debпакетов, независимо от того, предоставляются они официальными репозиториями или нет, устанавливаются с префиксом /usr.
Это означает, что исполняемые файлы, предназначенные для запуска пользователем, входят /usr/binили /usr/sbin(или, /usr/gamesесли это игра), общие библиотеки включаются /usr/lib, независимые от платформы общие данные включаются /usr/share, заголовочные файлы включаются /usr/include, а исходный код устанавливается автоматически /usr/src.
Небольшой процент пакетов используют /в качестве префикса. Например, bashпакет помещает bashисполняемый файл /bin, а не /usr/bin. Это для пакетов , которые обеспечивают самое необходимое для работы в однопользовательском режиме (например, режим восстановления) и начать многопользовательский режим (но помните, что часто включает в себя функциональные возможности для монтирования некоторых видов сетевых акций ... в случае , если /usrэто удаленная файловая система).
Небольшой процент .debпакетов, в основном, созданных с помощью Quickly , создает папку для конкретного пакета внутри /optи помещает туда все свои файлы. Кроме этого, большую часть времени /optэто местоположение, используемое программным обеспечением, которое устанавливается из исполняемого установщика, который не использует системный менеджер пакетов, но не включает компиляцию из исходного кода. (Например, если вы устанавливаете проприетарную программу, такую как MATLAB, вы, вероятно, вставите ее /opt.)
В отличие от всего этого, когда вы загружаете исходный архив (или получаете исходный код из системы контроля версий, такой как Bazaar или git), собираете его и устанавливаете его, он обычно устанавливается в префикс /usr/local(если вы не скажете ему сделать это). в противном случае). Это означает , что ваши исполняемые файлы идут в /usr/local/bin, /usr/local/libили /usr/local/games, ваши библиотеки /usr/local/lib, и так далее.
Есть некоторые исключения из этого - некоторые программы по умолчанию устанавливаются в /usrпрефикс и, таким образом, перезаписывают установки тех же программ из .debпакетов. Как правило, вы можете предотвратить это, запустив ./configure --prefix=/usr/localвместо того, ./configureчтобы создавать их. Я еще раз подчеркиваю, что обычно в этом нет необходимости.
(По этой причине для вас имеет смысл поместить исходный код, который вы создаете, и который будет установлен для общесистемного использования /usr/local/src, которое существует для этой цели.)
Предполагая, что упакованная версия установлена в /usrи версия, которую вы установили из источника, находится в /usr/local:
Файлы из установленного пакета не будут перезаписаны.
Обычно более новая версия запускается, когда вы вручную вызываете программу из командной строки (при условии, /usr/local/binчто исполняемые файлы или где они установлены, находятся в PATHпеременной среды и отображаются перед соответствующим /usrкаталогом с префиксом, например /usr/bin).
Но могут быть некоторые проблемы с тем, какие средства запуска создаются и становятся доступными через меню или поиск. Кроме того, если вы установили более одной версии библиотеки в разных местах, определить, какое программное обеспечение и какое программное обеспечение будет использоваться, будет немного сложнее.
Если вы на самом деле не используете обе версии программы или библиотеки, то часто вы должны удалить ту, которую вы не используете, хотя в ограниченных ситуациях вы можете оставить установленный пакет для удовлетворения зависимостей.
Однако, если по какой-либо причине файлы перезаписываются (например, если исходный код установлен /usrвместо /usr/local):
- Менеджер пакетов не будет ничего знать о том, как было изменено установленное программное обеспечение. Он будет думать, что старая версия установлена. Могут возникнуть плохие проблемы. Вам следует избегать этого. Если вы создали эту ситуацию, вам следует удалить программное обеспечение, которое вы установили из источника (обычно
sudo make uninstallв каталоге), а затем удалить пакет или пакеты, содержащие файлы, которые были перезаписаны (поскольку они не будут восстановлены при удалении установленной версии). из источника). Затем переустановите любую версию, которую вы хотите иметь./usr/local/src/program-or-library-name
Что касается выполнения зависимостей:
Если существует .debпакет, который зависит от программного обеспечения, установленного вами из источника, и требует версии, которую вы установили из источника (или выше), этот пакет не будет успешно установлен. (Или, если быть более точным, вы можете «установить» его, но он никогда не будет «настроен», поэтому вы не сможете его использовать.) Зависимости определяются тем, какие версии пакетов установлены, а не какое программное обеспечение у вас есть на самом деле.
Аналогично, программное обеспечение по крайней мере попытается установить полностью, даже если вы вручную удалили файлы, предоставленные пакетами, от которых зависит устанавливаемое программное обеспечение. (Как правило, не следует пытаться использовать это для каких-либо целей. Менеджер пакетов, работающий на основе ложной информации, почти всегда является плохой вещью.)
Поэтому, если вы не можете найти пакет, содержащий нужную вам версию программного обеспечения, вам может потребоваться создать собственный .debпакет из скомпилированного вами программного обеспечения и установить его из этого пакета. Тогда менеджер пакетов узнает, что происходит. Создать пакет для собственного использования, который вам не нужен для работы на компьютерах других людей, на самом деле не очень сложно. (Но я чувствую, что это может выходить за рамки вашего вопроса, поскольку он в настоящее время сформулирован.)