Разница между загрузкой пакета и компиляцией из исходного кода

В Ubuntu 14.04.1 я пытаюсь завладеть некоторыми сторонними библиотеками для связи с моим проектом C++. Из того, что я понял, есть несколько способов приобретения таких библиотек:

(1) Загрузка пакета с помощью Ubuntu Software Center,

(2) Загрузка пакета с использованием Aptitude,

(3) Загрузка исходного кода из репозитория (например, git) и компиляция из исходного кода,

(4) Загрузка сжатой папки, содержащей заголовки и библиотеки.

У меня вопрос, какие проблемы возникают с менеджером пакетов (Aptitude), если я загружаю и устанавливаю с помощью (3) или (4) по сравнению с загрузкой с помощью (1) или (2). Похоже, что если я скомпилирую из исходного кода или скачаю библиотеки прямо в заархивированную папку, Aptitude об этом не узнает. Как таковая, будет ли проблема, когда я впоследствии приду к обновлению или удалению пакета? Например, если я компилирую из исходного кода, как я могу легко удалить все файлы скомпилированной библиотеки (например, в /usr/bin) без необходимости вручную искать все эти каталоги и находить их? Если я скачал пакет из Aptitude, то я мог бы просто удалить весь пакет, используя

2 ответа

Между (1) и (2) нет реальной разницы, это просто разные интерфейсы для одной и той же системы упаковки. Я предлагаю всегда пытаться использовать менеджер пакетов для управления вашим программным обеспечением. Однако, если вы не можете найти подходящий пакет для своей библиотеки, вы можете установить его самостоятельно из исходного кода. Это означает, что вы несете ответственность за управление ими: обновление, удаление и т. Д. Используйте папку / usr / local для установки своих библиотек и укажите - "ln -s" - ваш друг - любые исполняемые файлы / usr / local / bin или другая папка на вашем пути. Не используйте пути установки системы, так как это может привести к проблемам позже. Вы сможете легко удалить их без каких-либо осложнений.

Здесь есть часто задаваемые вопросы: https://help.ubuntu.com/community/CompilingEasyHowTo

Если у вас нет проблем с зависимостями (то есть у вас нет пакетов, которые должны ссылаться на библиотеки, которые вы скомпилировали сами), то на самом деле не проблема, что Aptitude не знает, что у вас есть.

Если, с другой стороны, вы выполняете зависимость для Apt и dpkg, есть простой обходной путь: установите ваши двоичные файлы там, где вам нравится, и создайте простой фиктивный пакет, единственная цель которого состоит в том, чтобы удовлетворить Aptitude и dpkg, equivsИнструмент был создан для этой цели, но на самом деле нет ничего сложного и в том, чтобы накатить собственную упаковку. Так что, если вы скомпилировали и установили некоторые файлы, которые обеспечивают функциональность libhorror0, создайте пустышку libhorror0 и установите его так, чтобы Apt не загружал пакет исходных текстов, чтобы удовлетворить зависимость любого пакета, который Depends: libhorror0,

Наконец, лучший вариант, вероятно, состоит в том, чтобы сделать последний шаг и создать надлежащий локальный .deb пакет вашего проекта и установить его локально. Позаботьтесь об использовании номера версии, который выше официальной текущей версии из репозитория upstream, но ниже, чем следующая официальная версия. Общее соглашение, которое санкционировано политикой Debian, заключается в ~suffix2 на номер версии (где 2 означает вашу вторую версию; следующая должна быть ~suffix3, и так далее). Так что если вверх по течению libhorror0-1.23-4 тогда ваш должен быть libhorror0-1.23-4~karnivaurus2 для вашей второй сборки (или, если нет исходного пакета Debian, используйте libhorror0-1.23-0~karnivaurus2).

Создание .deb пакет из уже работающего проекта часто совсем не сложен; просто заполните debian каталог с необходимыми файлами (минимально rules а также control но обычно также уведомление об авторских правах и список изменений и некоторые файлы данных для Debhelper); есть инструмент dh_make который делает большую часть этого для вас. Может быть, тогда даже отправьте этот апстрим, чтобы любой мог собрать пакет Debian прямо из апстрима.

Другие вопросы по тегам