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.