2014-10-23 3 views
0

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

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

(2) Загрузка пакета с помощью Aptitude,

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

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

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

ответ

0

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

Там в FAQ здесь: https://help.ubuntu.com/community/CompilingEasyHowTo

0

Если у вас нет никаких проблем с зависимостями (т.е. вы не имеете пакеты, которые должны связаться с библиотеками вы собрали сами), то это действительно не проблема, что Склонность Безразлично Не знаю, что у вас есть.

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

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

Смежные вопросы