Может ли Apt удалить пакеты, которые нужны программному обеспечению, которое пользователи установили из исходного кода?

14

Apt обрабатывает зависимости между пакетами, установленными из своих репозиториев или *.debфайлов. Однако как насчет программного обеспечения, которое пользователи скомпилировали и установили из исходного кода ./configure && make && make installбез предварительного создания .debфайла? Возможно ли, что Apt может удалить пакеты, необходимые для таких программ? Будет ли установка программного обеспечения из источника /optили /usr/localизменить ситуацию?

Елена
источник
1
Вы можете установить эквивалентный пакет в качестве замены для пакета, установленного из исходного кода, чтобы заставить ваши зависимости оставаться установленными.
Фахим Митха

Ответы:

13

APT ничего не знает о программном обеспечении, которое было установлено вручную. Он не знает, какие библиотеки нужны программному обеспечению или что-то еще.

Когда APT устанавливает пакет только для выполнения зависимостей другого пакета, этот пакет помечается как автоматически установленный. Если вы удалите все пакеты, которые зависят от автоматически установленного пакета, этот пакет будет удален при запуске apt-get autoremove; высокоуровневые интерфейсы APT обычно предлагают сделать это после другого обслуживания. Чтобы избежать удаления пакетов, необходимых для локально установленного программного обеспечения, пометьте эти пакеты как установленные вручную: или введите ключ aptitude.apt-mark manual PACKAGE-NAMEm

Чтобы узнать, какие библиотеки нужны бинарному исполняемому файлу, запустите ldd /path/to/executable. Для каждой содержащей строки запустите, чтобы отобразить имя пакета, содержащего эту библиотеку. Для сценариев показывает интерпретатор, используемый сценарием; убедитесь, что этот переводчик остается установленным. Поиск библиотек, используемых скриптом, может быть затруднен, универсального способа сделать это не существует./usr/lib/SOMETHINGdpkg -S /usr/lib/SOMETHINGhead -n 1 /path/to/script

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

Жиль "ТАК - перестань быть злым"
источник
apt-getв Debian у Джесси нет manualопции. Для этих ручных и автоматических (matic) подсказок по установке я использовал apt-markвместо этого. ( apt-mark manual pkg, apt-mark showmanual pkg, apt-mark auto pkgИ т.д.)
Lekensteyn
@Lekensteyn Я имел в виду apt-mark, спасибо.
Жиль "ТАК - перестань быть злым"
14

aptи dpkgабсолютно может удалить программное обеспечение, необходимое для локально установленного другого программного обеспечения, которое выходит за рамки системы управления пакетами. Там просто не способ aptи dpkgзнать , что такое программное обеспечение может существовать.

Местоположение, где установлено такое программное обеспечение, не имеет значения: оно может быть /optили /usr/localв домашних каталогах пользователей (в этом случае даже системный администратор может не знать о его наличии) или где-либо еще, на самом деле.

Технически aptили dpkgдаже может удалить программное обеспечение, которое требуется другим программным обеспечением, являющимся частью системы управления пакетами, если последнее программное обеспечение не может объявить, что оно зависит от предыдущего программного обеспечения. Тем не менее, процесс создания пакетов deb включает в себя автоматизацию, которая помогает разработчикам пакетов не забывать объявлять такую ​​зависимость.

Celada
источник