Gostaria de restaurar o LightDM ao seu estado padrão, porque, por alguma razão,
/etc/lightdm/unity-greeter.conf
agora é um arquivo vazio.
Excluir /etc/lightdm/unity-greeter.conf
e executar sudo apt-get install --reinstall unity-greeter
não cria um novo arquivo de configuração, como seria de esperar.
Como posso restaurar um arquivo de configuração ausente?
fonte
--force-confask
sem excluir é que ele oferece mostrar o diferencial entre suas alterações e o original.ucf
pela--force-confmiss
opção não irá funcionar, você tem que usarsudo UCF_FORCE_CONFFMISS=1 apt-get --reinstall install [pkgname]
.-o
, recebi um erro "dpkg: error: unknown option -o", mas quando usei--option
, funcionou. Estou no Ubuntu 16.04.1.Em muitos casos, o arquivo de configuração padrão é fornecido diretamente por um pacote. Nesses casos, você pode extrair o arquivo específico do pacote, recuperando facilmente o arquivo.
Para verificar se um pacote fornece o arquivo, execute
dpkg -S
o caminho completo do arquivo. Por exemplo:Fornecido por um pacote
Como podemos ver,
/etc/ssh/sshd_config
não é fornecido diretamente por nenhum pacote, mas os outros dois são fornecidos poropenssh-client
esudo
respectivamente. Portanto, se você deseja se recuperar/etc/ssh/ssh_config
, primeiro obtenha o pacote:Agora, você pode extrair o arquivo diretamente para o local pretendido ou para o local pretendido em relação ao diretório atual em vez de
/
, se desejar comparar e contrastar, ou mesclá-los manualmente ou algo assim. Para o primeiro:As
-C /
instruçõestar
para extrair após a alteração para/
, o que significa que o arquivo de destino será substituído. Se você removê-lo,tar
será extraído para o diretório atual, o significado./etc/ssh/ssh_config
existirá no diretório atual.Se, por algum motivo
sudo
, não funcionar, use-opkexec
. Sepkexec
não funcionar, reinicie no modo de recuperação, monte/
comorw
. Se isso não funcionar ...Criado por um pacote
Que tal
/etc/ssh/sshd_config
? Ele não parece ser fornecido por nenhum pacote, então como ele apareceu?Nesse caso (e em muitos outros casos, sendo outro exemplo
/etc/modules
), o arquivo foi criado usando um script de mantenedor de pacotes durante a instalação. Isso geralmente é feito quando o arquivo de configuração precisa ser alterado devido às respostas do usuário às consultas. O OpenSSH, por exemplo, pergunta sePermitRootLogin
deve ser alterado parano
, em versões mais recentes, entre outras coisas.Para identificar esses casos, tente percorrer os scripts do mantenedor. Normalmente, você só precisa procurar
postinst
, mas se não tiver sortepostinst
, tentepreinst
também:Nesse caso, estamos com sorte:
Apenas um arquivo correspondeu e, por sorte, ele contém código para criar um arquivo de configuração padrão :
Normalmente, é isso que você veria (outro exemplo,
/etc/modules
dekmod
):Portanto, você pode procurar esse código e obter o conteúdo diretamente do script.
Não existe esse script? Você ainda pode tentar vasculhar as listas de arquivos de pacotes relacionados para ver se alguma coisa ocorre, mas, neste momento, não vejo um método facilmente generalizável (com pouca reinstalação em ambientes transitórios, como um chroot, uma VM ou um USB ativo).
A longo prazo, mantenha sua configuração sob controle de versão. Qualquer VCS que se preze pode salvar o dia aqui, e o
etckeeper
utilitário simplifica consideravelmente a tarefa de se manter/etc
em um VCS.fonte
De acordo com esta discussão nos fóruns do Ubuntu, é tão simples quanto executar o seguinte em um terminal:
fonte
dpkg-maintscript-helper: warning: environment variable DPKG_MAINTSCRIPT_NAME missing dpkg-maintscript-helper: warning: environment variable DPKG_MAINTSCRIPT_PACKAGE missing
. O LightDM também não foi restaurado para sua configuração original.sudo apt-get --reinstall install lightdm
) e ainda/etc/lightdm/unity-greeter.conf
está vazio.Encontre o pacote que possui o arquivo de configuração:
ele produzirá algo semelhante a:
para que o nome do pacote seja "unity-greeter", faça o download do pacote:
extraia seus dados da árvore do sistema de arquivos para um arquivo tar:
por fim, extraia apenas a configuração exata em qualquer lugar que você desejar:
./etc/lightdm/unity-greeter.conf
é o nome do arquivo em nosso arquivo./etc/lightdm/unity-greeter.conf
é para onde estou enviando para ser armazenado.Ou, como o @Muru sugeriu, podemos fazer isso de uma só vez:
fonte
dpkg-deb --fsys-tarfile unity-greeter_version-0ubuntu1_amd64.deb | sudo tar x -C / ./etc/lightdm/unity-greeter.conf
, entãotar
vai cd para/
antes de extrair.Eu tive o mesmo problema no Ubuntu 17.04. A pós-instalação usa um modelo de
/usr/share/openssh/
. Ele verifica se o rootlogin está ativado ou não, define essa opção e a copia para/etc/ssh
. Depois disso, ele faz algumas chamadas ucf e ucfr (não sei para que serve isso).Basta copiar
/usr/share/openssh/sshd_config
para/etc/ssh/sshd_config
:Agora ajuste o seu
sshd_config
como quiser.fonte
Isso não funciona em todos os arquivos de configuração. Para
/etc/nsswitch.conf
, consulte Como restaurar / recriar arquivos etc / nsswitch.conf . Não parece possível reconstruir esse arquivo comdpkg-reconfigure
.fonte
Exclua (volte) o arquivo e reinstale-o
unity-greeter
comapt-get install --reinstall unity-greeter
.fonte