¿Apt-get falla en el script bash?

¿Apt-get falla en el script bash?

Tengo varias máquinas (que ejecutan Ubuntu LTS 12.4 de 64 bits) que deben configurarse de la misma manera, así que creé un script de shell que se ejecutará automáticamente la primera vez que arranque la máquina. Funciona en su mayor parte, pero cualquier llamada a apt-get falla. Como ejemplo, aquí hay dos comandos que quiero ejecutar.

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

Aquí está el resultado si escribo esas líneas directamente:

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...]

Pero si ejecuto un script de shell que contiene sólo esas líneas, sucede esto:

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

Lo mismo ocurre cuando ejecuto el script usando sudo, o lo cambio primero a root. ¿Cuál es la diferencia para el programa si se llama directamente o mediante un script de shell? ¿Y es posible convencerlo de lo contrario?

EDITAR: Más información:

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

Respuesta1

Ejecutar el script a través de dos2unix antes de ejecutarlo hizo que funcionara correctamente. Supongo que apt-get estaba leyendo el \r adicional al final de la línea como parte del nombre del paquete y, por lo tanto, buscaba ldap-auth-client\r (que no existe) en lugar de ldap-auth. -cliente (que lo hace).

Respuesta2

Intente ejecutar el siguiente comando

apt-get update         

antes de ejecutarapt-obtener instalacióndominio

También asegúrese de que las URL en/etc/apt/sources.listestán disponibles.

información relacionada