O que significa "novo" significa "dpkg --force-confnew"? -- package-management campo com dpkg camp askubuntu Relacionado O problema

What does “new” mean to “dpkg --force-confnew”?


4
vote

problema

português

Eu fui recentemente, dada a tarefa de manter e amp; Porting para um pacote .DEB interna que sobrescreve (usando --force-overwrite ) configure arquivos de outros pacotes com versões personalizadas, após o qual apt-get install -f -y é executado para instalar um monte de relacionado Pacotes listados como dependências, alguns dos quais são os proprietários legítimos desses arquivos de configuração (mantenha seus comentários e gritos de terror para si mesmo). Observe que este pacote marca os arquivos de configuração como arquivos de configuração em vez de arquivos regulares.

No processo de tentar limpar a coisa, descobri que se apt-get for passado -o Dpkg::Options::="--force-confold" , os arquivos de configuração do nosso pacote personalizado serão sobrescritos pelo versões de dependências, enquanto se -o Dpkg::Options::="--force-confnew" for usado, os arquivos do nosso pacote permanecerão no final.

No entanto, o dpkg manpage Estados:

.

confnew : se um conffile foi modificado e a versão no O pacote mudou, sempre instale a nova versão sem solicitando, a menos que o ABCDEFGHIJKLMNABCDEFGHIJKLMN9 também seja especificado, em Qual caso a ação padrão é preferida.

[Desktop Entry] Name=Minecraft GenericName=PlayMinecraft Comment=Game Exec="/usr/bin/java -jar ~/Desktop/Minecraft.jar" Icon=/usr/share/icons/icon.png Terminal=false Type=Application 0 : se um Conffile foi modificado e a versão no pacote mudou, sempre mantenha a versão antiga sem solicitando, a menos que o ABCDEFGHIJKLMNABCDEFGHIJKLMN11 também seja especificado, em Qual caso a ação padrão é preferida.

Como a "nova versão" é instalada Enquanto a "versão antiga" é mantida , isso parece implicar que a "nova versão" é sempre a única na O pacote está sendo instalado naquele momento e, assim, passando [Desktop Entry] Name=Minecraft GenericName=PlayMinecraft Comment=Game Exec="/usr/bin/java -jar ~/Desktop/Minecraft.jar" Icon=/usr/share/icons/icon.png Terminal=false Type=Application 2 para [Desktop Entry] Name=Minecraft GenericName=PlayMinecraft Comment=Game Exec="/usr/bin/java -jar ~/Desktop/Minecraft.jar" Icon=/usr/share/icons/icon.png Terminal=false Type=Application 3 deve fazer com que os arquivos de configuração de dependências se sobrescrevam os que nosso pacote instalou um momento antes. Por que esse não é o caso? É o significado real da "nova versão", na verdade, com base em timestamps (o que apenas levantaria mais perguntas)? Este bug é um bug na documentação e / ou implementação de [Desktop Entry] Name=Minecraft GenericName=PlayMinecraft Comment=Game Exec="/usr/bin/java -jar ~/Desktop/Minecraft.jar" Icon=/usr/share/icons/icon.png Terminal=false Type=Application 4 ? Isso é apenas uma caixa de borda peluda trazida por dois pacotes que colocam reivindicando os mesmos arquivos de configuração que o ABCDEFGHIJKLMNABCDEFGHIJKLMN15 Os desenvolvedores pensaram que ninguém seria insano o suficiente para tropeçar? O que?

english

I was recently given the task of maintaining & porting to Trusty an in-house .deb package that overwrites (using --force-overwrite) config files from other packages with customized versions, after which apt-get install -f -y is run to install a bunch of related packages listed as dependencies, some of which are the rightful owners of those config files (Keep your snide comments and screams of terror to yourself). Note that this package marks the config files as config files rather than as regular files.

In the process of trying to clean the thing up, I discovered that if apt-get is passed -o Dpkg::Options::="--force-confold", then the config files from our custom package will be overwritten by the dependencies' versions, while if -o Dpkg::Options::="--force-confnew" is used, our package's files will remain at the end.

However, the dpkg manpage states:

confnew: If a conffile has been modified and the version in the package did change, always install the new version without prompting, unless the --force-confdef is also specified, in which case the default action is preferred.

confold: If a conffile has been modified and the version in the package did change, always keep the old version without prompting, unless the --force-confdef is also specified, in which case the default action is preferred.

Because the "new version" is installed while the "old version" is kept, this seems to imply that the "new version" is always the one in the package being installed at that moment, and thus passing -o Dpkg::Options::="--force-confnew" to apt-get should cause the dependencies' config files to overwrite the ones that our package installed a moment before. Why is this not the case? Is the actual meaning of "new version" actually based on timestamps (which would just raise further questions)? Is this a bug in the documentation and/or implementation of dpkg? Is this just a hairy edge case brought about by two packages laying claim to the same config files that the dpkg developers thought no one would ever be insane enough to stumble across? What?

     
 
 

Lista de respostas

0
 
vote
vote
Melhor resposta
 

Eu acredito que descobri o que estava acontecendo: porque as dependências para o pacote personalizado não são instaladas quando dpkg -i é executado, o pacote é registrado no sistema de pacote e nem é Os arquivos de configuração são instalados nesse momento. Quando ABCDEFGHIJKLMNABCDEFGHIJKLMN9 é executado, as dependências são instaladas e e O próprio pacote é instalado, e é neste ponto que os arquivos de configuração são instalados e o abcdefghijklmn10 < / código> Política passada para efiootootx64.efi1 entra em vigor. Por isso, não foi uma questão de efiootootx64.efi2 tanto quanto uma questão de ordem de eventos ao instalar um pacote de falta de dependência com efiootootx64.efi3 .

 

I believe I've figured out what was going on: Because the dependencies for the custom package are not installed when dpkg -i is run, the package is registered with the package system and neither it nor its config files are installed at that time. When apt-get install -f is run, the dependencies are installed, and then the package itself is installed, and it's at this point that the config files are installed and the --force-conf* policy passed to apt-get takes effect. So it wasn't a matter of --force-confnew so much as a matter of order of events when installing a dependency-lacking package with dpkg.

 
 

Perguntas relacionadas

10  O que significa "II" em saída de comando "dpkg -list"? [duplicado]  ( What does ii mean in dpkg list command output ) 
. Esta pergunta já tem respostas aqui : O que os vários sinalizadores DPKG como 'II' 'RC' significa ?...

5  Não é possível remover Qtspim do Ubuntu 14.04 LTS  ( Cannot remove qtspim from ubuntu 14 04 lts ) 
Eu tentei recentemente instalar o SPIM (compilador MIPS) na minha máquina e não funcionou. Agora estou tentando remover a coisa toda, mas simplesmente não pos...

3  dpkg sem shell  ( Dpkg with no shell ) 
Como executar o dpkg sem shell? Aqui está o meu problema: Eu furo e script autorun.sh na minha chave USB. Para executar este script, criei regras em /e...

2  Incapaz de purgar mysql -server  ( Unable to purge mysql server ) 
Eu sou novo para o Ubuntu. Eu estou tentando desinstalar o MySQL-Server, enquanto estou fazendo o processo de purga é preso na linha Renaming removed key_buf...

0  Sudo apt-get -f Erro de instalação GCC-6-BASE  ( Sudo apt get f install error gcc 6 base ) 
Eu não posso instalar qualquer novo no meu comp Allways Obtendo este erro, mesmo que eu tente o sudo apt-get-get. Usando o Ubuntu 17,04 64 bits dpkg: depen...

33  Usuário desconhecido no arquivo StatomerRide  ( Unknown user in statoverride file ) 
Eu tinha um aplicativo instalado no meu HTPC executando o servidor Ubuntu chamado Mediatomb, há alguns meses eu desinstalei e substituí-lo por uma instalação ...

9  Como resolver o erro "Usuário desconhecido" Elasticsearch "no arquivo StatOverRide"?  ( How to resolve unknown user elasticsearch in statoverride file error ) 
Eu tenho tentado instalar a pesquisa elástica, eu baixei o arquivo abcdefghgjklmnabcdefghijklmn0 . Quando tento usar o comando: sudo dpkg -i elasticsearch...

4  Não é possível instalar nada, erro de dpkg  ( Cant install anything dpkg error ) 
Eu não posso instalar nada no meu ubuntu .. eu googled, encontrei o mesmo problema, mas nenhuma das soluções propostas resolveu meu problema .. o tempo todo, ...

8  O subprocesso de instalação do Docker-CE nunca termina  ( Docker ce post installation subprocess never finishes ) 
Eu tentei instalar docker-ce seguindo as instruções fornecidas na documentação oficial do Docker Usando o repositório . A instalação ficou preso neste mome...

4  Como definir o status da seleção do pacote para o status atual?  ( How to set the package selection status to the current status ) 
Eu fiz um comando dpkg --clear-selections e descobri que todos os meus pacotes são selecionados para remoção. Como as páginas do homem está dizendo . - ...




© 2022 pergunte.org All Rights Reserved. Casa de perguntas e respostas todos os direitos reservados


Licensed under cc by-sa 3.0 with attribution required.