automatizar dpkg-reconfigure tzdata

51

Estou usando o fantoche para administrar um cluster de servidores Debian. Preciso alterar o fuso horário de cada máquina no cluster. A maneira correta de fazer isto é usar dpkg-reconfigure tzdata . Mas eu só consigo mudar se eu usar o diálogo. Existe alguma maneira de automatizar isso a partir do shell, para que eu possa simplesmente escrever um Exec para facilitar isso?

Se não, acho que a próxima melhor maneira seria ter o fantoche distribuindo /etc/timezone e /etc/localtime com os dados corretos no cluster.

Qualquer entrada apreciada!

    
por Elrond 13.11.2009 / 19:45

5 respostas

91

Você precisa especificar o frontend como 'não interativo' e ele salvará suas configurações atuais.

O dpkg-reconfigure terá as configurações atuais do sistema como gospel, então simplesmente mude o fuso horário da maneira que você faria normalmente e execute-o com o sinalizador não interativo

por exemplo. para eu mudar para "Europa / Dublin" onde eu estou:

# echo "Europe/Dublin" > /etc/timezone    
# dpkg-reconfigure -f noninteractive tzdata

Obviamente, isso permite que você use puppet / cfengine como quiser para distribuir o / etc / timezone também.

    
por 13.11.2009 / 19:57
7

Como a resposta aceita não funciona mais (Debian Jessie, abril de 2017 ), uma abordagem modificada a partir do link comentário do @ gertvdijk parece fazer o trabalho agora :

sudo ln -fs /usr/share/zoneinfo/Europe/Dublin /etc/localtime
sudo dpkg-reconfigure -f noninteractive tzdata
    
por 27.04.2017 / 22:30
4

Você deve ser capaz de usar debconf-set-selections para programar a configuração. Instale debconf-utils e execute debconf-get-selections | grep tzdata em um sistema configurado adequadamente para descobrir o que definir também.

    
por 13.11.2009 / 19:57
2

Você também pode usar a receita do (agora extinto) wiki de marionetes (archive ) que substitui /etc/localtime pelo arquivo zoneinfo apropriado de /usr/share/zoneinfo : -

class timezone {
    package { "tzdata":
        ensure => installed
    }
}

class timezone::central inherits timezone {
    file { "/etc/localtime":
        require => Package["tzdata"],
        source => "file:///usr/share/zoneinfo/US/Central",
    }
}

class timezone::eastern inherits timezone {
    file { "/etc/localtime":
        require => Package["tzdata"],
        source => "file:///usr/share/zoneinfo/US/Eastern"
    }
}

class timezone::pacific inherits timezone {
    file { "/etc/localtime":
        require => Package["tzdata"],
        source => "file:///usr/share/zoneinfo/US/Pacific"
    }
}

class timezone::mountain inherits timezone {
    file { "/etc/localtime":
        require => Package["tzdata"],
        source =>
             "file:///usr/share/zoneinfo/US/Mountain"
    }
}

Não tenho certeza se o dpkg-reconfigure faz algo extra, mas usei a receita acima e ela funciona perfeitamente.

    
por 26.05.2011 / 22:23
-3

É muito simples e só precisa digitar um comando e responder as perguntas simples.
então corra:

/usr/bin/tzselect
    
por 07.04.2014 / 18:53