由于安装后脚本中的“权限被拒绝”错误,更新管理器和 apt-get 无法完成更新

由于安装后脚本中的“权限被拒绝”错误,更新管理器和 apt-get 无法完成更新

今天,在我的台式机 Ubuntu 10.04 上,更新管理器自动更新了一些软件包(ca-certificates、postgres、samba 等),但出现了问题。更新完成并显示错误消息。

现在无法再安装或卸载任何东西。我尝试升级到 Ubuntu 12.04,但仍然出现同样的错误。

这些是现在阻止任何更改的错误消息(德语):

$ sudo apt-get upgrade  
Paketlisten werden gelesen... Fertig  
Abhängigkeitsbaum wird aufgebaut         
Status-Informationen einlesen... Fertig  
Die folgenden Pakete sind zurückgehalten worden:  
  google-chrome-stable  
0 aktualisiert, 0 neu installiert, 0 zu entfernen und 1 nicht aktualisiert.  
8 nicht vollständig installiert oder entfernt.  
Nach dieser Operation werden 0B Plattenplatz zusätzlich benutzt.  
Möchten Sie fortfahren [J/n]? j  
Richte install-info ein (4.13a.dfsg.1-5ubuntu1) ...  
/var/lib/dpkg/info/install-info.postinst: 36: update-info-dir: Permission denied  
dpkg: Fehler beim Bearbeiten von install-info (--configure):  
 Unterprozess installiertes post-installation-Skript gab den Fehlerwert 126 zurück  
Richte ca-certificates-java ein (20110426ubuntu0.10.04.2) ...  
dpkg (Unterprozess): kann installiertes post-installation-Skript nicht ausführen: Keine Berechtigung  
dpkg: Fehler beim Bearbeiten von ca-certificates-java (--configure):  
 Unterprozess installiertes post-installation-Skript gab den Fehlerwert 2 zurück  
Richte samba-common ein (2:3.4.7~dfsg-1ubuntu3.14) ...  
/var/lib/dpkg/info/samba-common.postinst: 122: ucf: Permission denied  
dpkg: Fehler beim Bearbeiten von samba-common (--configure):  
 Unterprozess installiertes post-installation-Skript gab den Fehlerwert 126 zurück  
dpkg: Abhängigkeitsprobleme verhindern Konfiguration von samba-common-bin:  
 samba-common-bin hängt ab von samba-common (>= 2:3.4.0~pre1-2); aber:  
  Paket samba-common ist noch nicht konfiguriert.  
dpkg: Fehler beim Bearbeiten von samba-common-bin (--configure):  
 Abhängigkeitsprobleme - lasse es unkonfiguriert  
dpkg: Abhängigkeitsprobleme verhindern Konfiguration von samba:  
 samba hängt ab von samba-common (= 2:3.4.7~dfsg-1ubuntu3.14); aber:  
  Paket samba-common ist noch nicht konfiguriert.  
 samba hängt ab von samba-common-bin; aber:  
  Paket samba-common-bin ist noch nicht konfiguriert.  
dpkg: Fehler beim Bearbeiten von samba (--configure):  
 Abhängigkeitsprobleme - lasse es unkonfiguriert  
dpkg: Abhängigkeitsprobleme verhindern Konfiguration von smbclient:  
 smbclient hängt ab von samba-common (= 2:3.4.7~dfsg-1ubuntu3.14); aber:  
  Paket samba-common ist noch nicht konfiguriert.  
dpkg: Fehler beim Bearbeiten von smbclient (--configure):  
 Abhängigkeitsprobleme - lasse es unkonfiguriert  
dpkg: Abhängigkeitsprobleme verhindern Konfiguration von smbfs:  
 smbfs hängt ab von samba-common (= 2:3.4.7~dfsg-1ubuntu3.14); aber:  
  Paket samba-common ist noch nicht konfiguriert.  
dpkg: Fehler beim Bearbeiten von smbfs (--configure):  
 Abhängigkeitsprobleme - lasse es unkonfiguriert  
dpkg: Abhängigkeitsprobleme verhindern Konfiguration von winbind:  
 winbind hängt ab von samba-common (= 2:3.4.7~dfsg-1ubuntu3.14); aber:  
  Paket samba-common ist noch nicht konfiguriert.  
dpkg: Fehler beim Bearbeiten von winbind (--configure):  
 Abhängigkeitsprobleme - lasse es unkonfiguriert  
Fehler traten auf beim Bearbeiten von:  
 install-info  
 ca-certificates-java  
 samba-common  
 samba-common-bin  
 samba  
 smbclient  
 smbfs  
 winbind  
E: Sub-process /usr/bin/dpkg returned an error code (1)

我尝试找到导致“权限被拒绝”(=“Keine Berechtigung”)错误的文件,但就是找不到。例如,执行某个无法手动执行的安装后脚本时,会出现“权限被拒绝”

$ sudo /var/lib/dpkg/info/ca-certificates-java.postinst --configure  
 sudo: unable to execute /var/lib/dpkg/info/ca-certificates-java.postinst: Keine Berechtigung  

但我不明白为什么,权限对我来说似乎没问题:

$ ls -l /var/lib/dpkg/info/ca-certificates-java.postinst  
-rwxr-xr-x 1 root root 1759 2014-03-05 17:07 /var/lib/dpkg/info/ca-certificates-java.postinst  

有人能提示我该怎么做才能消除这些错误并恢复我的工作系统吗?

答案1

我可以对一些调试提出建议。

所有postinst脚本都是shell 脚本,这样您就可以用文本编辑器查看它们并了解它们的作用。

例如,less /var/lib/dpkg/info/install-info.postinst显示脚本正在运行update-info-dir查看的命令/usr/share/info/。请在那里检查您的文件权限。

/var/lib/dpkg/info/ca-certificates-java.postinst反过来尝试更新位于 的 Java 密钥库/etc/ssl/certs/java/cacerts。请运行以下命令测试是否可以列出密钥库中的证书:

keytool -list -v -keystore /etc/ssl/certs/java/cacerts

默认密码是“changeit”。

答案2

谢谢你的提示。

通过检查返回“权限被拒绝”错误的脚本,我发现它们都有一个bashshebang。

瞧瞧:由于某种奇怪的原因,/bin/bash没有设置执行权限。 sudo chmod 755 /bin/bash执行完所有脚本后,一切又恢复正常。

相关内容