Me gustaría restaurar LightDM a su estado predeterminado, porque por alguna razón
/etc/lightdm/unity-greeter.conf
ahora es un archivo vacío.
Eliminar /etc/lightdm/unity-greeter.conf
y luego ejecutar sudo apt-get install --reinstall unity-greeter
no crea un nuevo archivo de configuración como es de esperar.
¿Cómo puedo restaurar un archivo de configuración faltante?
fuente
--force-confask
sin eliminar es que ofrece mostrar la diferencia entre sus cambios y el original.ucf
la--force-confmiss
opción no funcionará, debe usarsudo UCF_FORCE_CONFFMISS=1 apt-get --reinstall install [pkgname]
.-o
recibí un error "dpkg: error: unknown option -o" pero cuando lo usé--option
funcionó. Estoy en Ubuntu 16.04.1.Para muchos casos, el archivo de configuración predeterminado lo proporciona un paquete directamente. En tales casos, puede extraer el archivo específico del paquete, recuperando así fácilmente el archivo.
Para verificar si un paquete proporciona el archivo, ejecute
dpkg -S
en la ruta completa del archivo. Por ejemplo:Proporcionado por un paquete
Como podemos ver,
/etc/ssh/sshd_config
ningún paquete lo proporciona directamente, pero los otros dos son proporcionados poropenssh-client
ysudo
respectivamente. Entonces, si desea recuperarse/etc/ssh/ssh_config
, primero obtenga el paquete:Ahora, puede extraer el archivo directamente a su ubicación prevista, o a su ubicación prevista relativa al directorio actual en lugar de hacerlo
/
, si desea comparar y contrastar, o fusionarlos manualmente o algo así. Para el primero:Le
-C /
dicetar
a extraer después de cambiar a/
, lo que significa que el archivo de destino será reemplazado. Si lo elimina,tar
extraerá el directorio actual, lo./etc/ssh/ssh_config
que significa que existirá en su directorio actual.Si por alguna razón
sudo
no funciona, usepkexec
en su lugar. Sipkexec
tampoco funciona, reinicie en modo de recuperación, monte/
comorw
. Si eso no funciona ...Creado por un paquete
¿Qué hay de
/etc/ssh/sshd_config
? No parece ser proporcionado por ningún paquete, entonces, ¿cómo apareció?En este caso (y en muchos otros casos, siendo otro ejemplo
/etc/modules
), el archivo se creó usando un script de mantenimiento de paquetes durante la instalación. Esto a menudo se hace cuando el archivo de configuración necesita ser cambiado debido a las respuestas del usuario a las consultas. OpenSSH, por ejemplo, pregunta siPermitRootLogin
debería cambiarse ano
, en versiones más nuevas, entre otras cosas.Para identificar tales casos, intente recorrer los guiones del mantenedor. Por lo general, solo necesitaría mirar
postinst
, pero si no tiene suertepostinst
, intentepreinst
también:En este caso, estamos de suerte:
Solo un archivo coincidió y, por suerte, contiene código para crear un archivo de configuración predeterminado :
Por lo general, esto es lo que vería (otro ejemplo,
/etc/modules
dekmod
):Por lo tanto, puede buscar este código y obtener el contenido del script directamente.
No hay tal guión? Todavía puede intentar revisar las listas de archivos de paquetes relacionados para ver si algo golpea, pero en este punto, no veo un método fácilmente generalizable (salvo la reinstalación en entornos transitorios, como un chroot o una VM o un USB en vivo).
A la larga, mantenga su configuración bajo control de versiones. Cualquier VCS que valga la pena puede salvar el día aquí, y la
etckeeper
utilidad simplifica considerablemente la tarea de mantener/etc
un VCS.fuente
De acuerdo con este hilo en los foros de Ubuntu, es tan simple como ejecutar lo siguiente en una terminal:
fuente
dpkg-maintscript-helper: warning: environment variable DPKG_MAINTSCRIPT_NAME missing dpkg-maintscript-helper: warning: environment variable DPKG_MAINTSCRIPT_PACKAGE missing
. LightDM tampoco fue restaurado a su configuración original.sudo apt-get --reinstall install lightdm
) y todavía/etc/lightdm/unity-greeter.conf
está vacío.Encuentre el paquete que posee el archivo de configuración:
generará algo similar a:
para que el nombre del paquete sea "unity-greeter", descargue el paquete:
luego extraiga los datos del árbol del sistema de archivos en un archivo tar:
finalmente extraiga solo esa configuración exacta en cualquier lugar que desee que sea:
./etc/lightdm/unity-greeter.conf
es el nombre del archivo en nuestro archivo./etc/lightdm/unity-greeter.conf
es donde lo envío para ser almacenado.O como sugirió @Muru, podemos hacerlo de una sola vez:
fuente
dpkg-deb --fsys-tarfile unity-greeter_version-0ubuntu1_amd64.deb | sudo tar x -C / ./etc/lightdm/unity-greeter.conf
, asítar
que cd/
antes de extraerlo.Tuve el mismo problema en Ubuntu 17.04. El postinstall utiliza una plantilla de
/usr/share/openssh/
. Comprueba si rootlogin está habilitado o no, establece esta opción y la copia/etc/ssh
. Después de eso, hace algunas llamadas ucf y ucfr (no sé para qué sirve).Solo copia
/usr/share/openssh/sshd_config
a/etc/ssh/sshd_config
:Ahora ajusta tu
sshd_config
como quieras.fuente
Esto no funciona en todos los archivos de configuración. Para
/etc/nsswitch.conf
, vea Cómo restaurar / recrear archivos etc / nsswitch.conf . No parece posible reconstruir ese archivo condpkg-reconfigure
.fuente
Elimine (vuelva) el archivo y vuelva a instalarlo
unity-greeter
conapt-get install --reinstall unity-greeter
.fuente