web-dev-qa-db-ja.com

debパッケージを変更する方法は?

私がこれまでにしたこと

  • 公式のdebパッケージのソースをubu​​ntu-repositoriesからダウンロードしました。
  • パッチを適用しました。
  • Configureとmakeを正常に実行しました。
  • プログラムをテストしました。

やりたいこと

  • 古いパッケージのすべての情報(依存関係など)を使用して、そこからdebパッケージを作成したいと思います。

私の質問は(それらは密接に関連しています)

  1. それを行う簡単な(=ほとんど自動化された)方法はありますか?
  2. バイナリを古いdebファイルにコピーすることはできますか?
  3. 元のパッケージがリポジトリで更新されると、変更は上書きされますか?
  4. もしそうなら、それを回避する方法は?
  5. 元のパッケージのすべての「受信」依存関係を満たす「代替」バージョンとしてマークする方法はありますか?

追加情報

  • 私はUbuntu9.04、32ビットを実行していますが、現時点では他のアーチ/バージョンは気にしません。
  • 問題のパッケージはcompiz-gnomeです。
  • 変更はごくわずかであり、依存関係は追加されません。
8
Kim

ネットワークマネージャーパッケージを再構築するためのUbuntuフォーラムで次のガイドを見つけました ここ

Re:debのソースにパッチを当てる方法

引用:当初の投稿コード

基本的に、何かをテストするために、ある種のカスタムパッチを使用してネットワークマネージャーパッケージを再構築したいと思います。だから私はしたい:1。ネットワークマネージャーのubuntu「バージョン」のソースコードを取得する

コード:

Sudo apt-get source network-manager

引用:2。自分のパッチでパッチを適用するソースファイルが作業ディレクトリにダウンロードされます。詳細については、 this を参照してください。

引用:3。現在のネットワークマネージャーの代わりにインストールできるdebファイルを作成します。

実行コード:

dpkg-buildpackage -rfakeroot -uc -b
作成されたディレクトリ内。

この記事も見つかりました: Debian New Maintainers'Guide Chapter 6-Building the package


公式リポジトリからの更新によって変更が失われることについては、よくわかりません。パッチをいつでも上流のcompiz-gnomeに送り返すことができます packagemaintainers または 独自のリポジトリを作成 更新されたパッケージの場合。

3
lyarwood

私が使用する手順は次のとおりです。

ソースを取得します(apt-get srcを介して)。

パッチを適用するか、変更が必要なことは何でもします。

実行debchange --nmuそして、行った変更の説明を入力します。これにより、バージョン番号が自動インクリメントされるため、システムはカスタムパッケージを標準パッケージに「アップグレード」しようとしません。

debuildを実行します。

Debファイルをお楽しみください。

5

#3と#4の答えは、バージョンをインストールしたら、パッケージをholdステータスにする必要があるということです。これにより、Debianパッケージ管理システムは、このパッケージに対する将来の変更を「保持」するようになり、事実上、パッケージを手動で管理できるようになります。

Debianから [〜#〜] faq [〜#〜]

7.11不明、インストール、削除、パージ、およびパッケージステータスの保持とはどういう意味ですか?

これらの「欲しい」フラグは、ユーザーがパッケージで何をしたいのかを示します(dselectの「選択」セクションでのユーザーのアクション、またはユーザーによるdpkgの直接呼び出しによって示されます)。

それらの意味は次のとおりです。

  • 不明-ユーザーがパッケージが必要かどうかを指定したことはありません>

  • インストール-ユーザーはパッケージのインストールまたはアップグレードを望んでいます

  • remove-ユーザーはパッケージを削除したいが、既存の構成ファイルを削除したくない。

  • パージ-ユーザーは、構成ファイルを含め、パッケージを完全に削除することを望んでいます。

  • hold-ユーザーは、このパッケージが処理されないようにしたい、つまり、現在のバージョンを現在のステータスで維持したい。

7.12パッケージを保留にするにはどうすればよいですか?

パッケージを抑制するには、dpkg、aptitude、またはdselectの3つの方法があります。

Dpkgでは、パッケージ選択のリストを次のようにエクスポートする必要があります。

dpkg --get-selections *> selections.txt

次に、結果のファイルselections.txtを編集し、保持するパッケージを含む行を変更します。 libc6、これから:

libc6のインストール

これに:

libc6ホールド

ファイルを保存し、次のコマンドを使用してdpkgデータベースにリロードします。

dpkg --set-selections <selections.txt

適性があれば、以下を使用してパッケージを保持できます

適性保持package_name

でホールドを解除します

aptitude unhold package_name

Dselectを使用して、[S]選択画面に入り、現在の状態で保持したいパッケージを見つけて、=' key (orH 'を押す必要があります。変更は、[S] elect画面を終了した直後に公開されます。

注:人々はaptitude holdコマンドで問題を発見したので、dpkgコマンドを好むべきですパッケージを保持します。または、SynapticパッケージマネージャーのGUIインターフェイス([パッケージ]> [ロックバージョン])を介してパッケージを保持することもできます。私の好みはdpkgを使うことです。なぜならそれは私にとってうまく機能しているからです。

あなたはすでに残りの部分について良い答えを持っているので、私はそれらについて私の意見をあえてしません。

3
user4358

公式サイトからソースをダウンロードする場合は、aptを介して利用できるパッケージ自体があるはずです。したがって、準備ができたパッケージをダウンロードし、変更して、再度パックするだけです。

apt-get download your_package
dpkg -x your_package_vesion.deb your_package_folder/
... making changes in your_package_folder/ ...
# extract all needed controles/scripts from existing deb to new
dpkg -e your_package_vesion.deb your_package_folder/DEBIAN
dpkg -b your_package_folder/ new_package_vesion.deb

詳細を含むソース: http://sysadm.pp.ua/linux/deb-creation-edit.html

1
jack

まあ、それは再コンパイルに帰着します。完全なDebian承認のパッケージ作成環境が必要ない場合(正しい方法)私はcheckinstallを使用して迅速でダーティなパッケージを作成する傾向があります(簡単な方法)-これはDebianが推奨する方法ではありませんが、よりもはるかに簡単です反対に。 configureを実行してからmakeを実行し、makeinstallをcheckinstallに置き換えます。次に、Sudo dpkg-iを使用して新しいパッケージをインストールします

0
Journeyman Geek