ソースからUbuntuパッケージを更新するにはどうすればよいですか?


8

Ubuntuでnetwork-manager-openconnectパッケージの更新バージョンを作成したいのですが。どうやら最新のパッケージソースを入手する必要があります。

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

じゃあ何?パッケージには、gitを使用して最新のアップストリームコードから自身を更新する方法があるようです。しかし、どうすればそれを実現できますか?


私はbzrがバザールを意味すると思った-bazaar.canonical.com/en
Paul

回答:


6

更新されたパッケージをbzrブランチからビルドすることは、誰がブランチを保守しているか、またはパッケージが一般的にどのように機能するかによってかなり異なる傾向があります。ただし、PPAにプッシュするための、ほぼすべてのパッケージの迅速でダーティな更新に関するいくつかのガイドラインを次に示します。

ブランチを取得します。

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

次に、それに切り替えて、変更ログを更新します。

dch -i

dch -iは、debian / changelogで新しいエントリを開き、バージョンリビジョンを1つ増やします。パッチを追加する場合はこれで十分ですが、アップストリームソフトウェアの新しいバージョンに更新する場合は、ダッシュ(-)の前にバージョン番号を更新する必要があります。セイ、中にバージョン1.2-0ubuntu1は、あなたが開始した場合、DCH -iそれがに変わります1.2-0ubuntu2パッチ適用のために良いのであるが、あなたは新しいバージョンが必要な場合は、おそらくそれに変更したいと思います1.3-0ubuntu1

パッチを適用する必要がある場合は、ここで変更を追加します。debian /ディレクトリのみを持つブランチでは、bzr bd-do(bzr-builddebパッケージが必要)を使用して、変更を実行できる作業ツリーに切り替え、キルトまたは任意のパッチシステムを使用してから、「終了0」に変更をコピーして戻します。

新しいアップストリームバージョンが必要な場合、変更ログが変更されると、次のようなコマンドを実行する可能性があります。

debian/rules get-orig-source

これは通常、上流のパブリッシャーから適切なtarballをダウンロードして開始します。さらに変更が必要な場合は、上記のようにdebian /ディレクトリ内の「パッチ」または他のファイルを変更することで続行します。それ以外の場合は、ほぼ完了です。

bzr bd -S

bzr bdがビルドを処理します。引数なしで呼び出すと、システム上でビルドが開始されますが、-Sで呼び出すと、ソースパッケージを準備するよう指示されます。これには、PPAにアップロードする..._ source.changesファイルが含まれます(dputを使用)。 ppa:<yourname> / <name of your ppa> <changes file> to it that)。


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から最新のスナップショットのtarballのみを取得します。

debian/rules get-orig-source

テキストが飛んでいき、長いバージョン番号のtarballが表示されます。nm-openconnectで入手できる最新のコードです。

次に、変更履歴をtarballからのバージョン番号で更新し、サフィックス-0ubuntu1をそのまま維持する必要があります。

または、必要な特定のバージョン番号でdebian / changelogを変更してから、次のコマンドを実行します。debian / rules get-current-source

プラグインはほとんど変更されないので、上記のようにbzr bdを使用して、そこからパッケージをビルドできるだけです。そうでない場合は、上記のように必要な変更を適用します。

ことを忘れてはいけないコミットのbzrページを変更した後。

私が最初に(マージ提案システムを使用することを躊躇しないで、追加するのを忘れマージするための提案他人の利益を得ることができる、あなたにしている意思を変更したときにLPにリンクあなたの支店のページを)。通常は、自分が基づいているブランチに対してマージすることを提案できます(この例では、lp:〜network-manager / network-manager / openconnect-ubuntu.head)。


パッケージの修正(パッチも含む)の場合、メインのパッケージブランチにマージするために変更を持ち出すことを恐れないでください。そうすることで、誰もが変更のメリットを享受できるようになります。:)
Mathieu Trudel-Lapierre 2011

2

起動パッドからコードをプルする方法について更新しました

bzrブランチlp:〜network-manager / network-manager / openconnect-ubuntu.head

これは何ですか?lp(ランチパッドホスティングサービス)からコードを引き出します。コードが置かれている場所を見つける必要があります。

man bzr
343 #type 343のmanページが表示されます。

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:〜network-manager / network-manager / openconnect-ubuntu.head / home / [ユーザー名] / [開発ディレクトリへのパス]
例bzrブランチ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

bzr-explorereを使用すると、マシン上で作成したbzrリポジトリをGUIで参照できます。

別のメモ。1つのコンポーネントopenconnectを構築するために、ネットワークマネージャーのソース全体をプルする必要がある場合があります。異なるコンポーネント間および多くの依存関係がある場合があります。

現在のopneconnectパッケージの修正を作成してから、使用するすべてのdiffツールを使用してパッチを作成する必要があります。そしてそれをパッケージメンテナに送ってください。

または、修正した新しいパッケージをローカルで使用する場合は、.debパッケージファイルを作成します。

これはかなり複雑なパッケージの作成次のリンクを読んでください


ありがとう。しかし、gitから最新のnetwork-manager-openconnectコードを取得する方法はまだわかりません。bzrでプルダウンしたファイルには、debian / rulesにgit pullを実行できるように見えるスクリプトがありますが、スクリプトを正しく実行する方法がわかりません。
James Ward

@jamesランチパッドは、gnomeコミュニティによってホストされているnework-managerプロジェクトの gitリポジトリからアップストリームソースをプルします。したがって、リポジトリをプルするためにgitを使用する必要はありません。bzrのドキュメントを読み、いくつかのチュートリアルを実行して、bzrのしくみを理解してください。その他の賢明な方法は、stackoverflowでgit overを
nelaaro

@jamesの方が簡単なのは、このページの下部にある.tar.gzファイルをダウンロードするか、このリンクを
nelaaro

bzrには、ブランチしてから最新の元のソースに更新する簡単な方法があるようです。
James Ward
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.