Apt-get falhando no script bash?

Apt-get falhando no script bash?

Tenho várias máquinas (rodando Ubuntu LTS 12.4 64 bits) que precisam ser configuradas da mesma forma, então criei um script de shell que será executado automaticamente na primeira vez que a máquina for inicializada. Funciona na maior parte, mas qualquer chamada para o apt-get falha. Por exemplo, aqui estão dois comandos que desejo executar.

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

Aqui está o resultado se eu digitar essas linhas diretamente:

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

Mas se eu executar um shell script contendo apenas essas linhas, isso acontece:

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

A mesma coisa ocorre quando executo o script usando sudo ou coloco-o no root primeiro. Qual a diferença, para o programa, se ele está sendo chamado diretamente ou através de um shell script? E é possível convencê-lo do contrário?

EDITAR: Mais informações:

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

Responder1

Executar o script através dos2unix antes de executá-lo fez com que ele funcionasse corretamente. Suponho que o apt-get estava lendo o \r extra no final da linha como parte do nome do pacote e, portanto, procurando por ldap-auth-client\r (que não existe) em vez de ldap-auth -client (o que faz).

Responder2

Tente executar o seguinte comando

apt-get update         

antes de executarapt-get instalarcomando

Certifique-se também de que os URLs em/etc/apt/sources.listEstão disponíveis.

informação relacionada