Programa para atualizar arquivos de configuração

1

Ao atualizar o Ubuntu (e provavelmente outros * nixes), o processo de atualização mostrará um diff de arquivos de configuração alterados e perguntará se eu gostaria de substituí-los, manter a versão antiga ou mesclá-los manualmente. Não consegui encontrar nenhum desses programas no Google ou pesquisei na documentação do pacote do Ubuntu . Você conhece algum desses programas que tenham os seguintes recursos?

  • Poucas ou nenhuma dependência (idealmente, um único script de shell).
  • Apenas shell (idealmente sem maldições).
  • O não tenta ser "inteligente", por exemplo, mesclando-se automaticamente.

Edit: Eu escrevi essa pequena coisa para fazer algumas verificações preliminares e perguntar ao usuário o que fazer, mas não é muito flexível ou legal:

for path
do
    if [ ! -e "${path}.new" ]
    then
        # No new revision; skip
        continue
    fi

    if [[ $(diff "${path}"{,.new} | grep '^[<>]' | grep -v '^[<>][[:space:]]*\(#\|START=\)' | wc -l) -eq 0 ]]
    then
        # No interesting lines; skip
        continue
    fi

    clear
    diff -u "${path}"{,.new}

    unset action
    while [[ ! "${action-}" =~ ^[sr]$ ]]
    do
        echo "Do you want to replace $path with ${path}.new?"
        read -s -n 1 -p $'[s]kip, [r]eplace: \n' action
    done

    case "$action" in
        s)
            continue
            ;;
        r)
            cp -v "${path}"{,.new}
            ;;
        *)
            echo "Invalid action ${action}!"
            exit 2
    esac
done
    
por l0b0 03.11.2011 / 09:39

1 resposta

1

Suspeito strongmente que o programa que você viu seja dpkg , o baixo nível de gerenciamento de pacotes no Debian distribuições ish (usando apt(itude) ). veja aqui uma postagem no blog explicando seu gerenciamento de arquivos de configuração .

Você provavelmente poderia roubar essa função, ou seja, criar seus próprios .deb packages - que, Eu suspeito, pode ser muito complicado para o que você está tentando alcançar.

Há outro jeito de ir, você pode dar uma olhada em % co_de do NetBSD % tool (embora seja específico do NetBSD, você pode encontrar sua fonte (shell script) interessante, no entanto). Aparentemente, o Gentoo tem um etcupdate , também , mas não encontrei fontes nem mais informações (o link também menciona etc-update , pode ser interessante também; não sei.)

    
por 03.11.2011 / 13:47