Eu tenho várias máquinas (rodando o Ubuntu LTS 12.4 de 64 bits) que precisam ser configuradas da mesma maneira, então eu criei um script de shell que será executado automaticamente na primeira vez que a máquina inicializar. Funciona na maior parte, mas qualquer chamada para o apt-get falha. Por exemplo, aqui estão dois comandos que eu quero 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 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 eu executo o script usando o sudo, ou faço a root primeiro. Qual é a diferença, para o programa, se está sendo chamado diretamente ou através de um script de shell? E é possível convencê-lo do contrário?
EDIT: 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