Como fazer com que o apt-get aceite novos arquivos de configuração em uma instalação autônoma do debian do Repo

17

Estou escrevendo um script para uma instalação autônoma de um pacote que está em nosso repositório, é um pacote de software com um dos arquivos de configuração marcados do Debian. Existe alguma opção que eu possa passar para apt-get / aptitude para que ele aceite os novos arquivos de configuração?

Basicamente eu preciso de um apt / aptitude equivalente de dpkg --force-confnew

Eu preciso responder a seguinte questão colocada enquanto apt-get está instalando com um Y

Arquivo de configuração '' /opt/application/conf/XXX.conf ''

==> File on system created by you or by a script.
==> File also in package provided by package maintainer.

What would you like to do about it ?  Your options are:
Y or I  : install the package maintainer's version
N or O  : keep your currently-installed version
  D     : show the differences between the versions
  Z     : background this process to examine the 

The default action is to keep your current version.

Informações adicionais:

Além disso, estou passando a senha sudo em um canal para executar o comando

echo "mysudopass"|sudo -S apt-get mypackage

Isso está sinalizando um erro na instalação quando a instalação está na fase de configuração interativa.

Estou no Ubuntu 10.04
versão apt: apt 0.7.25.3

Por que não consigo usar dpkg : esses Debians devem ser instalados a partir do Repo e não tenho Debians locais na minha máquina

    
por Raman 18.10.2011 / 04:23

4 respostas

19

Você pode transmitir dpkg parâmetros para apt-get como este

apt-get -y -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confnew install pkgname1 pkgname2 ...

Com --force-confdef se os arquivos de configuração antigos ainda existirem, eles não serão substituídos. Então você provavelmente não vai usá-lo, só estou documentando para os outros.

sudo não solicitará uma senha se você negar a opção de autenticação do usuário ou adicionar a tag NOPASSWD na entrada específica. por exemplo,

someuser ALL = NOPASSWD: /usr/bin/apt-get
    
por 18.10.2011 / 22:34
6

Você pode tentar o seguinte:

export DEBIAN_FRONTEND=noninteractive
apt-get -q -y install whatever-2

Mas note que isso tem implicações, como senhas padrão vazias (talvez você queira alguma ferramenta de implantação / configuração como fantoche, chef, tecido ...?).

Veja sudoers (5) sobre como permitir invocações sudo sem senha.

    
por 18.10.2011 / 10:08
1

Como alternativa ao que forcefsck sugerido, sugiro que você adicione isso às configurações do APT, portanto, não é necessário adicionar para escrever opções o tempo todo. Além disso, isso seria útil para atualizações autônomas se você tiver essas configurações.

Crie o arquivo /etc/apt/apt.conf.d/71debconf para ter o seguinte conteúdo:

Dpkg::Options {
  "--force-confnew";
};

Nota (do Geoff): essa mudança seria uma mudança global. Se você tiver outros pacotes no sistema que deseja obter atualizações autônomas, mas também configurá-los manualmente, essa não seria a solução adequada.

    
por 10.01.2018 / 15:32
0

Além das outras respostas, talvez seja necessário definir o ambiente UCF_FORCE_CONFFNEW = 1 .

Por exemplo O openssh no debian stretch usa o ucf (não debconf) em seu openssh-server/openssh-7.4p1/debian/openssh-server.postinst para perguntar sobre o arquivo de configuração. (Você pode ver o openssh-server.postinst usando dget contra link )

Tivemos que usar todos os truques nesta página, além de sermos usuários liberais da pré-configuração do debconf .

No entanto, paramos pouco antes de export DEBIAN_FRONTEND=noninteractive porque queremos saber se perdemos alguma coisa (isso pode ser importante). Nosso caso de uso é um operador que inicia a operação. Espera-se que a atualização não seja interativa, mas o operador estará presente se algo der errado e uma caixa de diálogo se apresentar. Sua situação pode ser diferente.

Mas export DEBIAN_FRONTEND=noninteractive é o seu maluco proverbial.

Apenas fique atento: Configurar -o Dpkg::Options::=--force-confnew e / ou UCF_FORCE_CONFFNEW=1 significa que todos arquivos de configuração de pacotes instalados são revertidos para os upstream. Então, por exemplo, no caso de openssh-server , seu /etc/ssh/sshd_config será redefinido para as configurações de fábrica. E, e. PermitRootLogin=yes será removido. Mas é claro que você não usa isso, então você ficará bem! ; -)

    
por 29.10.2018 / 00:24