web-dev-qa-db-ja.com

変更されたパッケージをデビルドしようとすると「dpkg-source:unrepresentable changes to source」

次を使用してソースをパッケージにダウンロードしました:

$ apt-get source gkrellweather

また、コンパイルの依存関係があることも確認しました。

$ Sudo apt-get build-dep gkrellweather

そして、私はそれがうまく構築できることをテストしました:

$ cd gkrellweather-2.0.8
$ debuild

上記のフォルダーに.debパッケージを作成しました。これを使用してインストールできます。

$ Sudo dpkg -i ../gkrellweather*.deb

OKですので、すべて揃っています。始めましょう!

Vimでソースコードを開き、必要な変更を行いました。その後、私は再構築しようとしました:

$ debuild

しかし、私は次のエラーを受け取りました:

...
dh_clean: Compatibility levels before 5 are deprecated (level 4 in use)
 dpkg-source -b gkrellweather-2.0.8
dpkg-source: warning: no source format specified in debian/source/format, see dpkg-source(1)
dpkg-source: info: using source format `1.0'
dpkg-source: info: building gkrellweather using existing gkrellweather_2.0.8.orig.tar.gz
dpkg-source: info: building gkrellweather in gkrellweather_2.0.8-2.diff.gz
dpkg-source: error: cannot represent change to gkrellweather-2.0.8/.gkrellweather.c.swp: binary file contents changed
dpkg-source: warning: the diff modifies the following upstream files: 
 GrabWeather
 Makefile
 gkrellweather.c
dpkg-source: info: use the '3.0 (quilt)' format to have separate and documented changes to upstream files, see dpkg-source(1)
dpkg-source: unrepresentable changes to source
dpkg-buildpackage: error: dpkg-source -b gkrellweather-2.0.8 gave error exit status 1
debuild: fatal error at line 1357:
dpkg-buildpackage -rfakeroot -D -us -uc failed

どうして?

8
joeytwiddle

Joeytwiddleの回答のおかげで、この問題の解決策を始めるのに最適な場所が得られました。

Debianパッケージを作成しようとしたPythonプロジェクトでは、以下を使用しています。

  • debuildを実行する前にdebianパッケージを準備するpybuild
  • バージョン管理用のgit
  • PyCharm IDE Python開発用

gitは.gitディレクトリを作成し、pybuildは.pybuildディレクトリを作成し、PyCharmはすべてプロジェクトのルートに.ideaディレクトリを作成します。

Joeytwiddleが、debuildは特定のファイル(彼の場合はswpファイル)を好まないと言ったので、隠しディレクトリにぴったりだと思いました。 gitでは次のことができることがわかりました:debuild -iそしてpybuildおよびideaディレクトリに関してはバージョン管理ディレクトリを無視しますが、別のオプションはまだ見つかりません。 したがって、私のソリューションでは、プロジェクトを空のディレクトリにコピーし、.git.idea、および.pybuildディレクトリを削除しましたおよび成功!

5
levibostian

これは以前に何度も私をつまずかせました。ソースを変更した後にデビルドエラーが発生する理由は、ソースが変更された後、パッケージメンテナの署名(サインオフ)がそのソースに対して無効になったためだと時々考えました。

しかし実際には、この場合の答えは簡単でした。

dpkg-source: error: cannot represent change to gkrellweather-2.0.8/.gkrellweather.c.swp: binary file contents changed

問題は、Vimがswafileを作成したであり、debuildがそれを好まなかったことです!

解決策は簡単でした。スワップファイルを削除すれば、ビルドが機能します:

$ rm ./.gkrellweather.c.swp
$ debuild
3
joeytwiddle