Ubuntu – How to restore configuration files

aptconfigurationpackage-management

I would like to restore LightDM to its default state, because for some reason
/etc/lightdm/unity-greeter.conf is now an empty file.

Deleting /etc/lightdm/unity-greeter.conf and then running sudo apt-get install --reinstall unity-greeter doesn't create a new config file as you might expect.

How can I restore a missing config file?

Best Answer

    1. Find out what package installed the config file:

      $ dpkg -S unity-greeter.conf
      unity-greeter: /etc/lightdm/unity-greeter.conf
      

      As you can see, the name of the package is unity-greeter.

      If you deleted a directory, like /etc/pam.d, you can list every package that added to it by using the directory path:

      $ dpkg -S /etc/pam.d
       login, sudo, libpam-runtime, cups-daemon, openssh-server, cron, policykit-1, at, samba-common, ppp, accountsservice, dovecot-core, passwd: /etc/pam.d
      
    2. Run the following command, replacing <package-name> with the name of the package:

      sudo apt install --reinstall -o Dpkg::Options::="--force-confask,confnew,confmiss" <package-name>
      

      And for restoring the directory:

      sudo apt install --reinstall -o Dpkg::Options::="--force-confask,confnew,confmiss" $(dpkg -S /etc/some/directory | sed 's/,//g; s/:.*//')
      
    3. If everything worked as expected, you should get a message:

      Configuration file `/etc/lightdm/unity-greeter.conf', does not exist on system. 
      Installing new config file as you requested.
      
    4. A Practical example when needing to reinstall all of the PulseAudio configuration files:

      apt-cache pkgnames pulse |xargs -n 1 apt-get -o Dpkg::Options::="--force-confmiss" install --reinstall 
      
  • Related Question