aptを使用して、Debianで壊れたlibxml2-dev依存関係を修正するにはどうすればよいですか?


8

私は実行するとsudo apt-get upgrade、私のDebian Squeezeのインストールに、私は次のエラーを取得します:

You might want to run 'apt-get -f install' to correct these.
The following packages have unmet dependencies:
 libxml2-dev : Depends: libxml2 (= 2.7.8.dfsg-2+squeeze3) but 2.7.8.dfsg-2+squeeze5 is installed
E: Unmet dependencies. Try using -f.

「squeeze3」と「squeeze5」の意味がわかりませんが、それがlibxml2パッケージの唯一の違いです。

「sudo apt-get install -f」を実行すると、次のようになります。

The following extra packages will be installed:
  libxml2-dev
The following packages will be upgraded:
  libxml2-dev
1 upgraded, 0 newly installed, 0 to remove and 8 not upgraded.
108 not fully installed or removed.
Need to get 0 B/830 kB of archives.
After this operation, 69.6 kB disk space will be freed.
Do you want to continue [Y/n]? Y
(Reading database ... 96842 files and directories currently installed.)
Preparing to replace libxml2-dev 2.7.8.dfsg-2+squeeze3 (using .../libxml2-dev_2.7.8.dfsg-2+squeeze5_amd64.deb) ...
Unpacking replacement libxml2-dev ...
dpkg: error processing /var/cache/apt/archives/libxml2-dev_2.7.8.dfsg-2+squeeze5_amd64.deb (--unpack):
 unable to install new version of `./usr/include/libxml2': No such file or directory
configured to not write apport reports
                                      dpkg-deb: subprocess paste killed by signal (Broken pipe)
Errors were encountered while processing:
 /var/cache/apt/archives/libxml2-dev_2.7.8.dfsg-2+squeeze5_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

同様のエラーがで発生しsudo apt-get upgrade -fます。

私の/etc/apt/sources.listは現在:

deb http://ftp.us.debian.org/debian/ squeeze main contrib non-free
deb http://ftp.debian.org/debian/ squeeze-updates main contrib non-free
deb http://security.debian.org/ squeeze/updates main contrib non-free

これを修正するにはどうすればよいですか?ありがとう!


2
squeeze3squeezeの3番目のパッチリリースsqueeze5は5番目です。それらはバージョン番号の一部です。ライブラリと開発ファイルのバージョンは正確に一致する必要があります。APTが実行を要求するのは通常のことですapt-get install -f。通常ではないのは、のアップグレードlibxml2-devが失敗していることです。ディレクトリは/usr/include/libxml2存在しますか?許可は妥当ですか?十分なディスク容量がありますか?
Gilles「SO-邪悪なことをやめよう」

@Gillesああ、パーミッションはめちゃくちゃになっています:(ルートとしても)ls -lアクセスできないと言って、すべてのパーミッション情報の代わりにマークlibxml2?付けます。回答するように宣伝しますか?修正方法はわかりませんが、ホストを調べたり、ホストと話したりできます。
ジョナサン

回答:


5

squeeze3squeezeの3番目のパッチリリースsqueeze5は5番目です。それらはバージョン番号の一部です。ライブラリと開発ファイルのバージョンは正確に一致している必要があるためapt-get install -f、システムのバージョンに一貫性がない場合、APTが実行を要求するのは通常のことです。

通常ではないのは、のアップグレードlibxml2-devが失敗していることです。読むことができないというメッセージ/usr/include/libxml2は珍しいです。インストールが何らかの形で破損していることを示しているようです。ディレクトリがまだ存在するかどうかを確認します。ある時点で移動または削除した場合は、それを行わず、ディレクトリを再作成または移動して回復します。ディレクトリは存在するが、次のようなものがある場合

$ ls -ld /usr/include/libxml2
?????????? ??? ???????? ???????? 4096 ??? ?? ???? /usr/include/libxml2

次に、ファイルシステムが破損しているか、RAMが破損している可能性があります。まず、RAMを確認します。これがファイルシステムの破損の最も一般的な原因です。RAMについて確信が持てるようになるまで、書き込みはできるだけ少なくしてください。破損を悪化させる可能性があります。そこからの取り方は、ダメージの性質や程度によって異なります。


3

削除してから再インストールしてください。

sudo apt-get purge -f libxml2-dev
sudo apt-get clean
sudo apt-get update
sudo apt-get install libxml2 libxml2-dev

-devパッケージには、それはそれは完全にパージしても安全ですので、実行時に必要ではないですが、それだけでライブラリとリンクしたプログラムをコンパイルするのに必要なコンポーネントです。


ファイルが壊れてしまったので、これは私の場合には役に立ちませんでした。ライブラリの依存関係の問題(+1)を持つ他の人には、この手順をお勧めします。
ジョナサン

その場合はapt-get clean、パッケージキャッシュを削除して、必要なパッケージをリポジトリから強制的に再ダウンロードする方法を追加しました。
12

ファイル/usr/include/libxml2が破損していることを意味します。rm -f /usr/include/libxml2ファイルが見つからなかったようなことを言って失敗することさえあります。それを修正するために私のウェブホストは17時間かかりました。
ジョナサン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.