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

8

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

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

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

Джеймс Уорд
источник
Я думал, что bzr имел в виду базар - bazaar.canonical.com/en
Пол

Ответы:

6

Сборка обновленного пакета из ветки 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: <ваше имя> / <имя вашего 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 в этом случае).

Матье Трюдел-Лапьер
источник
Я подумал, что мне нужно кое-что забыть: не бойтесь вносить свои изменения для слияния с основной веткой упаковки, если это исправление упаковки (включая и исправления), чтобы каждый мог получить пользу от изменений! :)
Матье Трюдел-Лапьер
2

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

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

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

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 филиал lp: ~ сетевой менеджер / сетевой менеджер / openconnect-ubuntu.head / home / joe / projects / network-manger / dev

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

ls ~
./openconnect-ubuntu.head

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

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

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

sudo apt-get установить bzr-builddeb bzr-builder bzr-explorer quilt

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

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

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

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

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

nelaaro
источник
Спасибо. Но я все еще не уверен, как вытащить из git последний код network-manager-openconnect. В файлах, которые я разархивировал с помощью bzr, есть сценарий в debian / rules, который, кажется, в состоянии выполнить git pull, но я не знаю, как правильно запустить сценарий.
Джеймс Уорд
@james launchpad извлекает исходный код из репозитория git проекта nework-manager , размещенного в сообществе gnome. Так что вам не нужно использовать git для извлечения хранилища. Прочитайте документацию по bzr и ознакомьтесь с некоторыми уроками, чтобы понять, как работает bzr. Другой мудрый
способ
@james проще может быть просто скачать файл .tar.gz внизу этой страницы или прямо по этой ссылке
nelaaro
Кажется, что у bzr есть простой способ ветвиться, а затем обновиться до последнего исходного кода.
Джеймс Уорд