web-dev-qa-db-ja.com

debian:非常に悪い矛盾した状態のパッケージを削除または再インストールします

パッケージ管理に問題があります:

Bluezパッケージが壊れたので、ある時点で、更新などを中断したに違いありません。削除または再インストールを試みましたが、エラーしか表示されません。このパッケージが壊れている限り、aptで操作を実行できません。

パッケージを削除しようとしたときの出力

$ Sudo aptitude remove bluez 
The following packages will be REMOVED:  
  bluez 
The following partially installed packages will be configured:
  dictionaries-common dmsetup grub-pc ifupdown install-info rsyslog 
0 packages upgraded, 0 newly installed, 1 to remove and 235 not upgraded.
Need to get 0 B of archives. After unpacking 1,737 kB will be freed.
dpkg: error processing bluez (--remove): 
 Package is in a very bad inconsistent state - you should
 reinstall it before attempting a removal.
configured to not write apport reports
                                      Errors were encountered while processing:
 bluez
E: Sub-process /usr/bin/dpkg returned an error code (1)
A package failed to install.  Trying to recover:
Setting up install-info (4.13a.dfsg.1-8) ...
/var/lib/dpkg/info/install-info.postinst: 32: /var/lib/dpkg/info/install-info.postinst: update-info-dir: not found
dpkg: error processing install-info (--configure):
 subprocess installed post-installation script returned error exit status 127
Setting up ifupdown (0.7~alpha5+really0.6.15) ...
/var/lib/dpkg/info/ifupdown.postinst: 122: /var/lib/dpkg/info/ifupdown.postinst: update-rc.d: not found
dpkg: error processing ifupdown (--configure):
 subprocess installed post-installation script returned error exit status 127
Setting up locales (2.13-18) ...
/var/lib/dpkg/info/locales.postinst: 64: /var/lib/dpkg/info/locales.postinst: locale-gen: not found
dpkg: error processing locales (--configure):
 subprocess installed post-installation script returned error exit status 127
Setting up dictionaries-common (1.11.6) ...
/var/lib/dpkg/info/dictionaries-common.postinst: 45: /var/lib/dpkg/info/dictionaries-common.postinst: update-dictcommon-aspell: not found
dpkg: error processing dictionaries-common (--configure):
 subprocess installed post-installation script returned error exit status 127
Setting up grub-pc (1.99-12) ...
/var/lib/dpkg/info/grub-pc.postinst: line 438: grub-mkdevicemap: command not found
/var/lib/dpkg/info/grub-pc.postinst: line 263: grub-probe: command not found
/var/lib/dpkg/info/grub-pc.postinst: line 263: grub-probe: command not found
/var/lib/dpkg/info/grub-pc.postinst: line 263: grub-probe: command not found
/var/lib/dpkg/info/grub-pc.postinst: line 559: grub-install: command not found
/var/lib/dpkg/info/grub-pc.postinst: line 669: update-grub: command not found
dpkg: error processing grub-pc (--configure):
 subprocess installed post-installation script returned error exit status 127
Setting up dmsetup (2:1.02.65-1) ...
/var/lib/dpkg/info/dmsetup.postinst: 8: /var/lib/dpkg/info/dmsetup.postinst: update-initramfs: not found
dpkg: error processing dmsetup (--configure):
 subprocess installed post-installation script returned error exit status 127
Setting up rsyslog (5.8.5-1) ...
/var/lib/dpkg/info/rsyslog.postinst: 45: /var/lib/dpkg/info/rsyslog.postinst: update-rc.d: not found
dpkg: error processing rsyslog (--configure):
 subprocess installed post-installation script returned error exit status 127
Errors were encountered while processing:
 install-info
 ifupdown
 locales
 dictionaries-common
 grub-pc
 dmsetup
 rsyslog

Debianテストを実行しています。この問題はこの特定のパッケージに実際にありますか、それともdpkgに問題がありますか?パッケージマネージャーを修正するにはどうすればよいですか?

7
virtuallinux

これまでにこのメッセージに遭遇したことがないので、bluez固有のメッセージだと思います。メッセージが示唆する再インストールを試みましたか?

apt-get install --reinstall bluez

Dpkgを使用して、aptキャッシュからbluezパッケージをインストール/構成することもできます。/var/cache/aptでbluezパッケージを探します。次のようにインストールします(ルートとして):

dpkg -i <bluez debian package>
5
thiton

これは偶然かもしれませんが、すべてのエラーは/usr/sbin内のプログラムの呼び出しに関係しています:update-info-dirupdate-rc.dlocale-genupdate-dictcommon-aspellgrub-mkdevicemapgrub-probegrub-installupdate-grubupdate-initramfsupdate-rc.d、およびbluezのprerm allからのinvoke-rc.d/usr/sbinに住んでいます。

最初に確認するのは、ルートの/usr/sbinPATHかどうかですが、dpkgは通常、そうでない場合は大声で文句を言うため、問題になる可能性はほとんどありません。実際、squeezeの時点では、dpkgはPATHupdate-rc.dが見つからないと大声で不平を言うため、rsyslog postinstがこの実行可能ファイルを見つけられないのは奇妙ですdpkgは不満を言っていません。

これらのコマンドを(rootとして)実行するとどうなりますか?

type update-rc.d
ls -l /usr/sbin/update-rc.d
file /usr/sbin/update-rc.d
update-rc.d --help
file /bin/sh

これらのコマンドの結果により、修正が提案される場合があります。興味深いリードを見つけたが、その意味がわからない場合は、質問を編集してこの情報を追加してください。また、システムについて「異常な」何かを報告します(SELinux、chroot、デュアルアーキテクチャインストールなど)。

Sudo dpkg-reconfigure <packages> --force

に続く

Sudo dpkg --purge --force-all <packages>
1
user190907

このエラーは通常、パッケージが正しくインストールされなかった場合に表示されます。なに

dpkg -l bluez

公演?これは通常2つの方法で発生します

  • インストールが中断されました。

  • {pre/post} -install bluezスクリプト(または同様のもの)に問題があります。

前者に関する限り、インストールの中断を知っていますか?これが問題の場合、再インストールすると問題が解決する場合があります。

後者の場合でも、最初に再インストールしてください。ただし、最後の手段として、問題がどこにあるか、およびスクリプトを適切にインストールしようとするのか、それとも単に完全に取り除きます。通常、問題はスクリプト内の何かが失敗し、dpkgにエラーが発生することです。解決策はそのことを編集することです。このようなスクリプトはすべて/var/lib/dpkg/infoにあります。 bluez.postinstまたは類似のものを探します。注意:これが問題である場合はバグである可能性があるため、Debianバグ追跡システムにバグレポートを提出してください。

0
Faheem Mitha

bluezパッケージに関連するだけでなく、いくつかのエラーがあるようです。

aptitude removeを実行すると、いくつかのパッケージが構成され、そのほとんどが基本的なシステム機能(grub、ifupdownなど)を実装します。これは、更新が中断されたか、それを妨げるディスク/ファイルシステムエラーがあることを示唆していますきれいに完了することから。

つまり、きれいに更新されない残りのパッケージは、より大きな問題の兆候である可能性があります。実際、投稿したログには次のように書かれています。

/var/lib/dpkg/info/install-info.postinst: 32: /var/lib/dpkg/info/install-info.postinst: update-info-dir: not found
dpkg: error processing install-info (--configure):
 subprocess installed post-installation script returned error exit status 127

したがって、install-infoが見つからないため、update-info-dirの構成を完了できません。このコンテキストで「見つかりません」は、「実行不可」を意味する場合もあります。同様に、これらのプログラムが見つからないため、他のパッケージは失敗します。

grub-install, grub-mkdevicemap, grub-probe, locale-gen,
update-dictcommon-aspell, update-grub, update-info-dir,
update-initramfs, update-rc.d

私のシステムでは、不足しているファイルは次のパッケージからインストールされます。

==================================  =================== 
File location                       Package             
==================================  =================== 
/usr/sbin/update-dictcommon-aspell  dictionaries-common 
/usr/sbin/grub-mkdevicemap          grub-common         
/usr/sbin/grub-probe                grub-common         
/usr/lib/grub-legacy/update-grub    grub-pc             
/usr/sbin/grub-install              grub-pc             
/usr/sbin/update-grub               grub-pc             
/usr/sbin/update-initramfs          initramfs-tools     
/usr/sbin/update-info-dir           install-info        
/usr/sbin/locale-gen                locales             
/usr/sbin/update-rc.d               sysv-rc             

最初のデバッグ手順として、ファイルが実際に存在し、読み取り可能であり、実行可能であることを確認します。

次に、--helpオプションを使用してそれぞれを実行してみます。正しく実行されますか?

上記のテストが両方とも正常に完了した場合は、sysv-rc、initramfs-tools、grub-pc、およびgrub-common(aptitude reinstall grub-pc grub-common)から始めて、これらのパッケージを再インストールすることをお勧めします。

その部分を機能させると、aptitude reinstall bluezbluezを正常な状態に戻し、その後でそれを削除できます。

0
Riccardo Murri