簡単にdebを解凍し、新しいバージョンでdebを再パッケージ化します。

簡単にdebを解凍し、新しいバージョンでdebを再パッケージ化します。

私はすでにそれを見ましたDEBの解凍、ポストインストの編集、DEBの再パッケージ化- ただし、元の .deb ファイルを一部変更する場合は、.deb バージョン番号を正しく変更する方法については、ドキュメントに記載されていません。

たとえば、Ubuntu 14.04を使用していますhostapd

$ mkdir /tmp/debtest
$ cd /tmp/debtest/
$ apt-get download hostapd
Get:1 http://dk.archive.ubuntu.com/ubuntu/ trusty-updates/universe hostapd amd64 1:2.1-0ubuntu1.4 [423 kB]
Fetched 423 kB in 1s (361 kB/s)  
$ ls -la hostapd_1%3a2.1-0ubuntu1.4_amd64.deb 
-rw-rw-r-- 1 myuser myuser 422846 Nov 10  2015 hostapd_1%3a2.1-0ubuntu1.4_amd64.deb

これで、上記のリンクに沿って解凍できます。

$ mkdir unpack-hostapd
$ dpkg-deb -R hostapd_1%3a2.1-0ubuntu1.4_amd64.deb unpack-hostapd
$ ls -la unpack-hostapd/
total 20
drwxr-xr-x 5 myuser myuser 4096 Jan 26 11:31 .
drwxrwxr-x 3 myuser myuser 4096 Jan 26 11:31 ..
drwxr-xr-x 2 myuser myuser 4096 Nov  9  2015 DEBIAN
drwxr-xr-x 6 myuser myuser 4096 Nov  9  2015 etc
drwxr-xr-x 4 myuser myuser 4096 Nov  9  2015 usr

README.Debianにテキストを1行追加するなど、簡単な変更をしたいとしましょう。

echo "Just a test line" >> unpack-hostapd/usr/share/doc/hostapd/README.Debian

...もう新しい.debで再パッケージしたいです。

最初の質問- 解凍した状態でパッケージの現在の(以前の)バージョンを検索する方法はありますか?私はファイル名を信頼しないので、通常は次のようにします。

$ apt-cache policy hostapd
hostapd:
  Installed: (none)
  Candidate: 1:2.1-0ubuntu1.4
...

...これを使用すると、パッケージのバージョン1:2.1-0ubuntu1.4をダウンロードしたことがわかりますが、必ずしもapt-get download...ディレクトリ内のバージョンである必要はありませんunpack-hostapd。ディレクトリに抽出した元の.debのパッケージバージョンを知らせるコマンドはありますかunpack-hostapd

これで、以前debchangeのように自動インクリメントバージョン番号を使用していますがdch -i(他のソースプロジェクトでも)ここで試してみると、次のようになります。

$ cd unpack-hostapd
$ pwd
/tmp/debtest/unpack-hostapd
$ dch -e
dch: fatal error at line 580:
Cannot find debian/changelog anywhere!
Are you in the source code tree?
(You could use --create if you wish to create this file.)
$ find . -name 'changelog*'
./usr/share/doc/hostapd/changelog.Debian.gz
$ dpkg -c ../hostapd_1%3a2.1-0ubuntu1.4_amd64.deb | grep changelog
-rw-r--r-- root/root      2126 2015-11-09 14:56 ./usr/share/doc/hostapd/changelog.Debian.gz

...しかし、ここでは何も変更できません。

だから私の2番目の質問dch -i例:.debパッケージのバージョン番号を変更して解凍した.debパッケージに変更ログを追加する簡単な方法(ソースパッケージと同様)はありますか?

もちろん、結局私はこの新しいバージョンを.debパッケージに再パッケージ化したいと思います。上記のリンクは似たようなものを示唆dpkg-deb -b unpack-hostapd hostapd_1%3a2.1-0ubuntu1.4_amd64.debしていますが、ここではバージョンを使用すると述べているので、1:2.2最終的には次のようなファイル名を使用します。dpkg-deb -b unpack-hostapd hostapd_1%3a2.2_amd64.deb- しかし、バージョンは.debマッチで動作するはずですが、どうすればいいのかわかりません...

ベストアンサー1

DEBIAN/controlバージョンはバイナリ制御ファイルで定義されており、使用時に抽出されますdpkg-deb -R。フィールドを探すVersion:

Version: 1:2.5.2+v2.4-3+b1

ここで、新しいパッケージのバージョン番号を編集できます。 (オプションで、変更ログエントリをの変更ログに追加できます。)その後、正しいファイル名が決定されるように、usr/share/doc/hostapd/changelog.Debian.gz次のようにパッケージを再構築できます。dpkg-deb

mkdir newpkg
dpkg-deb -b hostapd newpkg

これにより、newpkgディレクトリに適切な名前の新しいパッケージが作成されます。

理想的には、新しいバイナリのライブラリ要件を確認し、依存関係情報を更新する必要がありますcontrol

おすすめ記事