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

21

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/ aptitudepara que aceite os novos arquivos de configuração?

Basicamente, eu preciso de um apt/ aptitudeequivalente a dpkg --force-confnew

Preciso responder à seguinte pergunta colocada durante a apt-getinstalação 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ção adicional:

Além disso, estou passando a sudosenha em um pipe 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 interativa de configuração.

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 no Repo e não tenho Debians local na minha máquina

Raman
fonte

Respostas:

22

Você pode passar dpkgparâmetros para apt-getcurtir isso

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

Com --force-confdefse ainda existem arquivos de configuração antigos, eles não vão conseguir substituído. Então você provavelmente não vai usá-lo, estou apenas documentando para outros.

sudonão solicitará uma senha se você negar a opção de autenticação para o usuário ou adicionar a NOPASSWDtag na entrada específica. por exemplo

someuser ALL = NOPASSWD: /usr/bin/apt-get
forcefsck
fonte
7

Você pode tentar o seguinte:

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

Mas observe 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 chamadas sem senha sudo.

sr_
fonte
3

Como alternativa ao forcefsck sugerido, sugiro que você adicione isso nas configurações do APT, para que você não precise adicionar essas opções difíceis de escrever o tempo todo. Além disso, isso seria útil para atualizações autônomas se você tiver essas configurações.

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

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

Nota (de Geoff): essa mudança seria uma mudança global. Se você possui outros pacotes no sistema que deseja obter atualizações autônomas, mas também configurou manualmente, essa não seria a solução apropriada.

Te Ri
fonte
Essa pode ser uma boa opção, no entanto, é importante observar que isso seria uma mudança GLOBAL. Se você possui outros pacotes no sistema que deseja obter atualizações autônomas, mas também configurou, essa não seria a solução apropriada.
Geoff
2

Além das outras respostas, também pode ser necessário definir o ambiente UCF_FORCE_CONFFNEW = 1 .

Por exemplo, o openssh no debian stretch usa o ucf (não o debconf) openssh-server/openssh-7.4p1/debian/openssh-server.postinstpara perguntar sobre o arquivo de configuração. (Você pode ver o openssh-server.postinstusando dgetcontra http://security.debian.org/debian-security/pool/updates/main/o/openssh/openssh_7.4p1-10+deb9u4.dsc )

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

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

Mas export DEBIAN_FRONTEND=noninteractiveé a sua marreta proverbial.

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

Peter V. Mørch
fonte