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 aceite os novos arquivos de configuração?
Basicamente, eu preciso de um apt
/ aptitude
equivalente a dpkg --force-confnew
Preciso responder à seguinte pergunta colocada durante a apt-get
instalaçã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 sudo
senha 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
Respostas:
Você pode passar
dpkg
parâmetros paraapt-get
curtir issoCom
--force-confdef
se 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.sudo
não solicitará uma senha se você negar a opção de autenticação para o usuário ou adicionar aNOPASSWD
tag na entrada específica. por exemplofonte
Você pode tentar o seguinte:
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
.fonte
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/71debconf
arquivo para ter o seguinte conteúdo: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.
fonte
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.postinst
para perguntar sobre o arquivo de configuração. (Você pode ver oopenssh-server.postinst
usandodget
contra 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=noninteractive
porque 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-confnew
e / ouUCF_FORCE_CONFFNEW=1
significa que todos os arquivos de configuração dos pacotes instalados são revertidos para os upstream. Por exemplo, no caso deopenssh-server
, você/etc/ssh/sshd_config
será redefinido para as configurações de fábrica. E, por exemploPermitRootLogin=yes
, será removido. Mas é claro que você não usa isso, então ficará bem! ;-)fonte