apt python 错误阻止我解决 apt-get install 的依赖问题

MER*_*ERM 5 debian python apt

在 Debian 6 服务器上,依赖问题阻止我安装 nis(或任何软件包)。当我尝试解决该问题时,出现 python 错误。我如何解决这个问题并重新获得安装软件包的能力?

我用谷歌搜索并发现一些人报告了相同的错误消息,但没有人有解决方案。我也检查了SE无济于事。这影响了我公司的 10 台服务器。

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).
Run Code Online (Sandbox Code Playgroud)

然后我尝试按照建议来解决这个问题:

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 # 
Run Code Online (Sandbox Code Playgroud)

我也试过

apt-get autoremove
Run Code Online (Sandbox Code Playgroud)

但这只是告诉我要做

apt-get -f install
Run Code Online (Sandbox Code Playgroud)

再次。

我试图查看有问题的文件,但我得到了这个:

root 11 # cat /var/lib/dpkg/tmp.ci/control
/var/lib/dpkg/tmp.ci/control: No such file or directory
Run Code Online (Sandbox Code Playgroud)

按照要求:

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
Run Code Online (Sandbox Code Playgroud)

按照要求:

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:
Run Code Online (Sandbox Code Playgroud)

Fah*_*tha 6

这是一个有趣的。海报试图修复可通过 ssh 远程访问的机器。这台机器已经部分升级到不稳定,包括libc6。但是,零件仍然处于稳定状态,并且 apt 处于挤压版本。海报希望机器完全稳定。

我通过修理他的机器走过海报。聊天会话开始于http://chat.stackexchange.com/transcript/message/15047213#15047213

概括:

  1. sources.list 只有不稳定的来源。添加了稳定的。还添加了一些节/etc/apt/preferences以将
    测试和不稳定的优先级编号设置为 50。
  2. 升级到稳定版。
  3. 安装apt-show-versions并运行apt-show-versions | grep unstable以获取有关哪些软件包来自不稳定的信息。
  4. 删除了所有不稳定的包,除了libc6.
  5. 注释掉不稳定的来源。注意:在
    运行之前删除不稳定的源apt-show-versionsapt-show-versions无法判断哪些包来自不稳定。
  6. libc6从不稳定降级为稳定。
  7. apt-get upgrade跟着apt-get dist-upgrade
  8. 删除了 2.6 内核包。

最后的想法:可能有比 using 更好的方法来发现哪些包来自不稳定apt-show-versions,但我目前不知道。如果你这样做,请发表评论。