AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 793759
Accepted
Stewart
Stewart
Asked: 2025-04-15 15:34:48 +0800 CST2025-04-15 15:34:48 +0800 CST 2025-04-15 15:34:48 +0800 CST

Aplique o patch do Debian Quilt no arquivo original com terminações de linha do DOS

  • 772

Tenho um arquivo com terminações de linha no estilo DOS em um *.orig.tar.xzpacote de código-fonte que preciso corrigir antes de compilar um 3.0 (quilt)pacote Debian. Meu patch atualmente tem terminações de linha no estilo Unix.

Podemos inspecionar os arquivos para ver se o patch tem 29 terminações de linha no estilo Unix e se o arquivo de origem tem 5000 terminações de linha no estilo Dos.

$ dos2unix -i debian/patches/model_icd CONFIG/model_config_file.txt
       0      29       0  no_bom    text    debian/patches/model_icd
    5000       0       0  no_bom    text    CONFIG/model_config_file.txt

Resultados da construção:

$ dpkg-buildpackage
...
 dpkg-source --before-build .
dpkg-source: info: using patch list from debian/patches/series
dpkg-source: info: applying model_icd
patching file CONFIG/model_config_file.txt
Hunk #1 FAILED at 1638 (different line endings).
Hunk #2 FAILED at 4997 (different line endings).
2 out of 2 hunks FAILED
dpkg-source: info: the patch has fuzz which is not allowed, or is malformed
dpkg-source: info: if patch 'model_icd' is correctly applied by quilt, use 'quilt refresh' to update it
dpkg-source: info: restoring quilt backup files for model_icd
dpkg-source: error: LC_ALL=C patch -t -F 0 -N -p1 -u -V never -E -b -B .pc/model_icd/ --reject-file=- < debian/patches/model_icd subprocess returned exit status 1
dpkg-buildpackage: error: dpkg-source --before-build . subprocess returned exit status 2

Coisas que tentei:

Primeiro, eu simplesmente modifiquei meu patch para usar terminações de linha no estilo dos, mas o quilt remove isso e eu obtenho o mesmo resultado

$ unix2dos debian/patches/model_icd
$ dos2unix -i debian/patches/model_icd CONFIG/model_config_file.txt
      29       0       0  no_bom    text    debian/patches/model_icd
    5000       0       0  no_bom    text    CONFIG/model_config_file.txt
$ dpkg-buildpackage
...
dpkg-source: info: applying model_icd
(Stripping trailing CRs from patch; use --binary to disable.)
patching file CONFIG/model_config_file.txt
Hunk #1 FAILED at 1638 (different line endings).
Hunk #2 FAILED at 4997 (different line endings).
2 out of 2 hunks FAILED
...

Se eu testar quiltdiretamente, posso fazê-lo funcionar com a --binaryopção:

$ quilt push -a --binary
Applying patch model_icd
patching file CONFIG/model_config_file.txt

Now at patch model_icd

Para que isso funcione de forma mais automática, tentei definir QUILT_PATCH_OPTS=:

$ QUILT_PATCH_OPTS="--binary" quilt push -a
Applying patch model_icd
patching file CONFIG/model_config_file.txt

Now at patch model_icd

Então, tentei definir isso em debian/rules:

export QUILT_PATCH_OPTS="--binary"
%:
        dh $@

Mas isso não é usado por dpkg-sourcequem usa patchdiretamente, nãoquilt

Em seguida, tentei enganá-lo definindo esse sinalizador no patches/seriesarquivo. dpkg-source(1)recomenda contra isso, o que sugere que isso pode ser possível.

# debian/patches/series
model_icd --binary

Mas isso ainda não funciona.

Tentei procurar source/optionsalgo e li o guia do mantenedor , mas não vi isso abordado em lugar nenhum.

debian
  • 1 1 respostas
  • 25 Views

1 respostas

  • Voted
  1. Best Answer
    Stewart
    2025-04-15T15:34:48+08:002025-04-15T15:34:48+08:00

    Li que isso dpkg-source --commité um pouco trabalhoso e quiltdá mais controle, mas, nesse caso, foi a solução mais fácil.

    Primeiro certifique-se de que nenhum patch foi aplicado

    $ quilt pop -a
    No patch removed
    

    Dos-ify o patch para que as terminações de linha correspondam ao arquivo de origem

    $ unix2dos debian/patches/model_icd
    unix2dos: converting file debian/patches/model_icd to DOS format...
    

    Aplique o patch, usando --binarypara preservar os CRs

    $ patch -p1 --binary < debian/patches/model_icd
    patching file CONFIG/model_config_file.txt
    

    Remova o arquivo de patch original

    $ rm debian/patches/model_icd
    

    Remova o patch do arquivo da série

    $ sed -i '/model_icd/d' debian/patches/series
    

    Use dpkg-source --commitpara regenerar o arquivo de patch

    $ dpkg-source --commit 
    dpkg-source: info: using patch list from debian/patches/series
    dpkg-source: info: local changes detected, the modified files are:
     CONFIG/model_config_file.txt
    Enter the desired patch name: model_icd
    dpkg-source: info: local changes have been recorded in a new patch: debian/patches/model_icd
    

    Tenho certeza de que deve haver uma solução mais elegante, pois isso não parece ser um problema novo ou incomum. Mas não foi fácil encontrá-la online ou em qualquer documento oficial, e é por isso que estou escrevendo esta resposta.

    Este patch é, na verdade, o último de uma série e ainda funcionou com vários patches. Pode haver alguma dificuldade se este não for o último da sequência. Nesse caso, você precisaria aplicar os patches um de cada vez.

    • 2

relate perguntas

  • Configuração do GRUB para reconhecer diferentes ambientes de desktop (instalações) da mesma distribuição Linux

  • astyle não altera a formatação do arquivo de origem

  • Recebendo e-mail em um novo Debian fresco

  • Debian Stretch: gnome-software segfault em libgs_plugin_systemd-updates.so

  • Como digitar ü no Pinyin IME?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve