Подавляющее большинство .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
пакет из скомпилированного вами программного обеспечения и установить его из этого пакета. Тогда менеджер пакетов узнает, что происходит. Создать пакет для собственного использования, который вам не нужен для работы на компьютерах других людей, на самом деле не очень сложно. (Но я чувствую, что это может выходить за рамки вашего вопроса, поскольку он в настоящее время сформулирован.)