2

ソフトウェアをコンパイルするとき、私は常に. ./configure&& make&&を実行checkinstall -D make installしてソフトウェアをビルドします。

checkinstall を使用すると、エラーが発生するという問題が発生しました

「パッケージ libtasn1-3.2 にもある `/var/backups/infodir.bak' を上書きしようとしています」.

&& &&でlibtasn1-3.2も作成しました。./configuremakecheckinstall -D make install

ファイル/var/backups/infodir.bakを削除しようとしましたが、それでもエラーが発生します。この問題を解決する方法を知っている人はいますか?

Building Debian package...OK 
Installing Debian package... FAILED! 
Failed to install the package

Do you want to see the log file?  [y]: y (Reading database ... dpkg:
serious warning: files list file for package `squeezecenter-readynas'
missing, assuming package has no files currently installed. 30739
files and directories currently installed.) Unpacking libgcrypt-1.5.1
(from .../libgcrypt-1.5.1_1.5.1-1_sparc.deb) ... dpkg: error
processing
/c/backup/zarafa/libgcrypt-1.5.1/libgcrypt-1.5.1_1.5.1-1_sparc.deb
(--install):  trying to overwrite `/var/backups/infodir.bak', which is
also in package libtasn1-3.2 dpkg-deb: subprocess paste killed by
signal (Broken pipe) Errors were encountered while processing: 
/c/backup/zarafa/libgcrypt-1.5.1/libgcrypt-1.5.1_1.5.1-1_sparc.deb
4

1 に答える 1

3

debianでは、2つのパッケージが同じファイルをインストールすることは禁止されています。

したがって、ファイル「/ path / to / foo」を含むパッケージをインストールしようとし、ファイル「/ path / to / foo」を含む別のパッケージがすでにインストールされている場合は常に、競合が発生し、エラーが発生します。

メンテナの仕事の一部は、そのようなことが起こらないようにすることです、

  • 2つのパッケージ間に明示的な競合を設定することによって(したがって、2つのパッケージを同時にインストールするようにマークすることさえできません)

  • または、1つのパッケージ(または両方)のファイルの名前を変更し、それに応じてソフトウェアを調整します

  • または、一方(または両方)のパッケージがそのようなファイルをインストールしないようにすることによって(たとえば、インストールされたファイルが本当に必要ない場合)

Debianパッケージの保守は一般的に多くの作業です。

このツールcheckinstallは、「make install」からパッケージを非常に簡単に作成できるため、「貧乏人」のパッケージ保守ツールになりました。自動化ツールであるため、メンテナの仕事や洗練さを置き換えることはできません。(そうでなければ、Debianメンテナはもう必要ありません。ソースパッケージをビルドサーバーにアップロードして、それらに対して「checkinstall」を実行するだけです)

したがって、問題が発生する理由は、メンテナンスが不十分な(つまり、自動的に作成され、まったくメンテナンスされていない)パッケージをインストールしているためです。問題のあるファイルの削除が機能しない理由は、パッケージ管理が単にアーカイブをダウンロードして抽出するだけではないためです。特に、データベースにインストールされているファイルのリストを保持します。このリストは、/var/backups/infodir.bak(ファイルが実際にハードディスク上にあるかどうかに関係なく)すでにインストールされていることを示します...結果として競合が発生します。

したがって、問題の解決策は、メンテナンスにより多くの時間を投資することです。

いずれにせよ、2つの「パッケージ」の両方が必要な理由/var/backups/infodir.bak(およびそれらが必要かどうか)を調査する必要があります。

checkinstall経由から特定のファイルを省略することができます

 checkinstall --exclude /var/backups/infodir.bak -D make install

これがあなたのパッケージのいずれかを壊すかどうか、私は言うことができません。

于 2013-03-21T19:13:42.283 に答える