Apt-get schlägt im Bash-Skript fehl?

Apt-get schlägt im Bash-Skript fehl?

Ich habe mehrere Maschinen (auf denen Ubuntu LTS 12.4 64-Bit läuft), die auf die gleiche Weise konfiguriert werden müssen. Deshalb habe ich ein Shell-Skript erstellt, das beim ersten Booten der Maschine automatisch ausgeführt wird. Es funktioniert größtenteils, aber jeder Aufruf von apt-get schlägt fehl. Als Beispiel sind hier zwei Befehle, die ich ausführen möchte.

debconf-set-selections ./files/ldap.preseed
apt-get -y install ldap-auth-client

Hier ist das Ergebnis, wenn ich diese Zeilen direkt eingebe:

root@spare:/tmp/scripts# debconf-set-selections ./files/ldap.preseed
root@spare:/tmp/scripts# apt-get -y install ldap-auth-client
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be installed:
  ldap-auth-config libnss-ldap libpam-ldap
The following NEW packages will be installed:
  ldap-auth-client ldap-auth-config libnss-ldap libpam-ldap
0 upgraded, 4 newly installed, 0 to remove and 67 not upgraded.
Need to get 0 B/200 kB of archives.
After this operation, 877 kB of additional disk space will be used.
Preconfiguring packages...
[and so on...]

Wenn ich jedoch ein Shell-Skript ausführe, das nur diese Zeilen enthält, geschieht Folgendes:

root@spare:/tmp/scripts# ./ldap.cr
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package ldap-auth-client

Dasselbe passiert, wenn ich das Skript mit sudo ausführe oder es zuerst mit chown an root leite. Welchen Unterschied macht es für das Programm, ob es direkt oder über ein Shell-Skript aufgerufen wird? Und kann man es vom Gegenteil überzeugen?

EDIT: Weitere Informationen:

root@spare:/tmp/scripts# apt-cache policy ldap-auth-client
ldap-auth-client:
  Installed: (none)
  Candidate: 0.5.3
  Version table:
    0.5.3.0
       500 http://us.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages

Antwort1

Das Ausführen des Skripts über dos2unix vor der Ausführung hat dazu geführt, dass es ordnungsgemäß funktioniert hat. Ich vermute, dass apt-get das zusätzliche \r am Ende der Zeile als Teil des Paketnamens gelesen hat und daher nach ldap-auth-client\r (das nicht existiert) statt nach ldap-auth-client (das existiert) gesucht hat.

Antwort2

Versuchen Sie, den folgenden Befehl auszuführen

apt-get update         

vor der Ausführungapt-get installierenBefehl

Stellen Sie außerdem sicher, dass URLs in/etc/apt/sources.liststehen zur Verfügung.

verwandte Informationen