Разница между загрузкой пакета и компиляцией из исходного кода
В 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 прямо из апстрима.