Как мне обновить пакеты Ubuntu из исходного кода?

Я хотел бы создать обновленную версию пакета network-manager-openconnect в Ubuntu. По-видимому, мне нужно получить последний источник пакета:

bzr branch lp:~network-manager/network-manager/openconnect-ubuntu.head

Тогда что? Пакет, похоже, имеет возможность обновлять себя из последнего вышестоящего кода с помощью git. Но как мне заставить это сделать?

8
задан 11 March 2011 в 23:32

2 ответа

Сборка обновленного пакета из ветви bzr имеет тенденцию отличаться в достаточной степени в зависимости от того, кто поддерживает ветви или как пакет работает в целом. Тем не менее, вот несколько рекомендаций по быстрому и грязному обновлению практически любого пакета, которые нужно отправить в PPA:

Получить ветку:

bzr branch lp:~network-manager/network-manager/openconnect-ubuntu.head

Затем переключитесь на нее, и обновите журнал изменений:

dch -i

dch -i просто откроет новую запись в debian / changelog, увеличив версию на одну версию. Если вы хотите добавить патч, это прекрасно, но если вы хотите обновить его до более новой версии вышестоящего программного обеспечения, вам нужно обновить номер версии до тире (-). Скажем, версия в 1.2-0ubuntu1 , если вы запустите dch -i , она изменится на 1.2-0ubuntu2 , что хорошо для исправления, но если вам нужно новая версия, которую вы, вероятно, захотите изменить на 1.3-0ubuntu1 .

Если вам нужно исправить, сейчас самое время добавить ваши изменения. В ветвях, которые имеют только каталог debian / , вы можете использовать bzr bd-do (требуется пакет bzr-builddeb), чтобы переключиться на рабочее дерево, где вы можете вносить изменения, используйте quilt или любой системы исправлений, а затем «выйдите из 0», чтобы ваши изменения были скопированы обратно.

Если вы хотите новую версию для основной ветки разработки, после изменения журнала изменений вы, скорее всего, выполните команду, подобную этой:

debian/rules get-orig-source

Обычно это загружает нужный tarball от вышестоящей редакции, чтобы получить ты начал. Если необходимы дальнейшие изменения, выполните «описанные выше действия» для «исправления» или изменения других файлов в каталоге debian / , в противном случае вы почти закончили:

bzr bd -S

bzr bd позаботится о строительстве. Вызов его без аргументов начинает строить в вашей системе, а вызов с помощью -S говорит ему подготовить пакет с исходным кодом, который будет включать файл ..._ source.changes , который это то, что вы хотите загрузить в свой PPA (для этого используйте dput ppa: < yourname > / < имя вашего ppa > < изменяет файл > ).


Для пакетов NetworkManager все немного по-другому. Давайте рассмотрим именно openconnect:

bzr branch lp:~network-manager/network-manager/openconnect-ubuntu.head network-manager-openconnect

Убедитесь, что у вас также есть все зависимости для сборки: sudo get-build-deps

После получения ветки это прочитает debian / control и попробуйте загрузить все, что вам нужно для сборки network-manager-openconnect. Возможно, вам тоже нужен Git. Как только это будет сделано, запустите get-orig-source , чтобы получить только архив самого последнего снимка из git:

debian/rules get-orig-source

Вы увидите пролетающий текст и тарбол с появится длинный номер версии. Это последний код, который вы можете получить для nm-openconnect.

Затем вам нужно будет обновить список изменений, указав номер версии из архива, просто сохранив суффикс -0ubuntu1 .

Или замените debian / changelog на нужный номер версии, затем запустите: debian / rules get-current-source

Поскольку плагины не сильно меняются, вы должен иметь возможность просто собрать пакет оттуда, используя bzr bd , как указано выше. Если нет, примените любые необходимые изменения, как указано выше.

Не забудьте bzr commit после того, как вы внесли изменения.

Сначала я забыл добавить, не стесняйтесь использовать систему предложений по слиянию ( Предложить для слияния ссылку на страницу вашего филиала на LP), когда изменения, которые вы делаете, могут принести пользу другим. Обычно вы можете просто предложить объединение с веткой, на которой основана ваша ветка (например, lp: ~ network-manager / network-manager / openconnect-ubuntu.head в этом случае).

0
ответ дан 11 March 2011 в 23:32

Хорошо, обновлено, как вытащить код из стартовой панели

ветвь bzr lp: ~ сетевой менеджер / сетевой менеджер / openconnect-ubuntu.head

< / blockquote>

Что это за доза, вытащить код из lp (хостинг на панели запуска). Нам нужно найти, где находится код.

man bzr
343 # type 343 по мере появления справочной страницы.

bzr branch FROM_LOCATION [TO_LOCATION]        
       If  the TO_LOCATION is omitted, the last component of the FROM_LOCATION
       will be used.  In other words, "branch ../foo/bar" will attempt to cre‐
       ate  ./bar.   If the FROM_LOCATION has no / or path separator embedded,
       the TO_LOCATION is derived from the FROM_LOCATION by stripping a  lead‐
       ing   scheme   or  drive  identifier,  if  any.  For  example,  "branch
       lp:foo-bar" will attempt to create ./foo-bar.

Попробуйте перейти в каталог, в котором вы хотите работать, или добавьте каталог, куда вы и код перейдете.

cd / home / [ваше имя пользователя] / [путь к каталогу разработки]
или ветвь bzr lp: ~ сетевой менеджер / сетевой менеджер / openconnect-ubuntu.head / home / [ваше имя пользователя] / [путь к каталогу разработки]
например, bzr branch lp: ~ network-manager / network-manager / openconnect-ubuntu.head / home / joe / projects / network-manger / dev

Если вы уже сделали это, у вас, вероятно, есть каталог в домашнем каталоге

ls ~
./openconnect-ubuntu. head

В этом каталоге должен быть файл README, чтобы посмотреть, что там должно быть, посмотрите код проекта , здесь ссылка на README .source

В README должны быть инструкции по созданию этого отдельного проекта.

Другие полезные инструменты bzr для установки

sudo apt-get install bzr-builddeb bzr-builder bzr-explorer quilt

The bzr-explorere позволит вам просматривать ваши репозитории bzr, которые вы создали на своей машине в графическом интерфейсе.

Еще одна заметка. Вам может потребоваться получить весь источник сетевого менеджера, чтобы создать однокомпонентное openconnect. Может быть много зависимостей и между разными компонентами.

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

Или, если вы хотите использовать новый пакет исправлений локально, вы хотите создать файл пакета .deb.

Создание пакета, довольно сложного, читайте по следующим ссылкам

0
ответ дан 11 March 2011 в 23:32

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

Похожие вопросы: