web-dev-qa-db-ja.com

apt pythonエラーにより、apt-getinstallの依存関係の問題を解決できません

Debian 6サーバーでは、依存関係の問題により、nis(または任意のパッケージ)をインストールできません。その問題を解決しようとすると、pythonエラーが発生します。この問題を乗り越えて、パッケージをインストールできるようにするにはどうすればよいですか?

私はグーグルで同じエラーメッセージを報告している人を何人か見つけましたが、誰も解決策を持っていませんでした。 SEもチェックしましたが無駄でした。これは私の会社の数十台のサーバーに影響を及ぼしています。

root 7 # apt-get install nis
Reading package lists... Done
Building dependency tree       
Reading state information... Done
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
 libglib2.0-dev : Depends: libglib2.0-0 (= 2.24.2-1) but 2.40.0-2 is to be installed
 nis : Depends: libdbus-glib-1-2 (>= 0.78) but it is not going to be installed
       Depends: libslp1 but it is not going to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

それで私は提案に従うことによってこれを解決しようとしました:

root 8 # apt-get -f install
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Correcting dependencies... Done
The following packages were automatically installed and are no longer required:
  xfonts-encodings ttf-dejavu-core xfonts-utils libxfont1 libpango1.0-common libdb5.1 libxcb-render-util0
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
  libglib2.0-dev
Suggested packages:
  libglib2.0-doc
The following packages will be upgraded:
  libglib2.0-dev
1 upgraded, 0 newly installed, 0 to remove and 559 not upgraded.
42 not fully installed or removed.
Need to get 0 B/2642 kB of archives.
After this operation, 3982 kB of additional disk space will be used.
Do you want to continue [Y/n]? y
dpkg: error processing /var/cache/apt/archives/libglib2.0-dev_2.40.0-2_AMD64.deb (--unpack):
 parse error, in file '/var/lib/dpkg/tmp.ci/control' near line 7 package 'libglib2.0-dev':
 `Depends' field, invalid package name `python:any': character `:' not allowed (only letters, digits and characters `-+._')
configured to not write apport reports
                                      Errors were encountered while processing:
 /var/cache/apt/archives/libglib2.0-dev_2.40.0-2_AMD64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

root 9 # 

私も試しました

apt-get autoremove

しかし、これは私にやるように言っただけです

apt-get -f install

再び。

問題のあるファイルを調べようとしましたが、次のようになりました。

root 11 # cat /var/lib/dpkg/tmp.ci/control
/var/lib/dpkg/tmp.ci/control: No such file or directory

要求に応じて:

root 14 # apt-cache policy nis libglib2.0-dev libglib2.0-0 libdbus-glib-1-2 libslp1 
libglib2.0-0:
  Installed: 2.40.0-2
  Candidate: 2.40.0-2
  Version table:
 *** 2.40.0-2 0
        500 http://ftp.us.debian.org/debian/ unstable/main AMD64 Packages
        100 /var/lib/dpkg/status
libdbus-glib-1-2:
  Installed: (none)
  Candidate: 0.102-1
  Version table:
     0.102-1 0
        500 http://ftp.us.debian.org/debian/ unstable/main AMD64 Packages
libglib2.0-dev:
  Installed: 2.24.2-1
  Candidate: 2.40.0-2
  Version table:
     2.40.0-2 0
        500 http://ftp.us.debian.org/debian/ unstable/main AMD64 Packages
 *** 2.24.2-1 0
        100 /var/lib/dpkg/status
nis:
  Installed: (none)
  Candidate: 3.17-33
  Version table:
     3.17-33 0
        500 http://ftp.us.debian.org/debian/ unstable/main AMD64 Packages
libslp1:
  Installed: (none)
  Candidate: 1.2.1-9
  Version table:
     1.2.1-9 0
        500 http://ftp.us.debian.org/debian/ unstable/main AMD64 Packages

要求に応じて:

apt-cache policy
Package files:
 100 /var/lib/dpkg/status
     release a=now
 500 http://security.debian.org/ stable/updates/main Translation-en
 500 http://security.debian.org/ stable/updates/main AMD64 Packages
     release v=7.0,o=Debian,a=stable,n=wheezy,l=Debian-Security,c=main
     Origin security.debian.org
 500 http://ftp.us.debian.org/debian/ unstable/main Translation-en
 500 http://ftp.us.debian.org/debian/ unstable/main AMD64 Packages
     release o=Debian,a=unstable,n=sid,l=Debian,c=main
     Origin ftp.us.debian.org
Pinned packages:
5
MERM

これは面白いものでした。ポスターは、ssh経由でリモートアクセス可能なマシンを修正しようとしていました。このマシンは、libc6を含め、部分的に不安定にアップグレードされていました。ただし、パーツはまだ安定しており、aptはスクイーズバージョンでした。ポスターは、マシンが完全に安定していることを望んでいました。

私は彼の機械を修理することを通してポスターを歩きました。チャットセッションは http://chat.stackexchange.com/transcript/message/15047213#1504721 で開始されました

概要:

  1. Sources.listには不安定なソースしかありません。安定したものを追加しました。また、優先順位番号を設定するために/etc/apt/preferencesにいくつかのスタンザを追加しました
    テスト用で、50まで不安定です。
  2. Aptを安定版にアップグレードしました。
  3. apt-show-versionsとranapt-show-versions | grep unstableをインストールして、不安定なパッケージからの情報を取得しました。
  4. libc6を除くすべての不安定なパッケージを削除しました。
  5. 不安定な情報源をコメントアウトしました。注:不安定なソースを削除する前に
    apt-show-versionsを実行すると、apt-show-versionsはどのパッケージが不安定なものであるかを識別できなくなります。
  6. libc6を不安定から安定にダウングレードしました。
  7. apt-get upgradeの後にapt-get dist-upgradeを実行しました。
  8. 2.6カーネルパッケージを削除しました。

最終的な考え:apt-show-versionsを使用するよりも、どのパッケージが不安定であるかを特定するためのより良い方法があると思われますが、現時点ではわかりません。もしそうなら、コメントしてください。

6
Faheem Mitha