10

I accidentally deleted content of /var/lib/apt with command below:

sudo rm -rf /var/lib/apt/*

what should I do now? can I restore it? is it necessary?

Sergiy Kolodyazhnyy
  • 105,154
  • 20
  • 279
  • 497
Hossein Hosseinvand
  • 1,136
  • 2
  • 12
  • 12

1 Answers1

24

The folder contains a few interesting things, in particular there is /var/lib/apt/keyrings/ directory for any repositories that you've added to the system via apt-add-repository ( and then there's also /etc/apt/trusted.gpg and /etc/apt/trusted.gpg.d/) and cdroms.list which should reference the installation media as source of packages. Removed /var/lib/apt/keyrings/ubuntu-archive-keyring.gpg may be reinstalled with sudo apt-get install --reinstall ubuntu-keyring.

There's also /var/lib/apt/lists, which contains lock files for when apt is running update or upgrade, and lists of packages in remote repositories. Items in that directory sometimes are cleared or deleted as in this post for example. It should regenerate once you run apt-get update.

In short, I wouldn't worry about this much. Just run sudo apt-get update and it should be back, however if you have added repositories via apt-add-repository which may have required a GPG key, then you may want to add that key again or temporarily remove that repository from /etc/apt/sources.list.d.

Although it's not a huge issue in this case, as Lightness mentioned in the comments, the core of the issue is the accidental use of rm -rf. A user should realize full responsibility when they wield commands which can do damage to their system. There's countless examples on AskUbuntu and other StackExchange sites where users delete or change ownership of the core system components. From the point of view of new users it can be understandable that new users are not familiar with how much damage can be done, although that does not free the new user of the responsibility. There's no point in condemning either the command or the user, but the right way should be developing habits of verifying your own steps in command-line or elsewhere. This does not just apply to Ubuntu but computing in general, and comes with experience and often through actually making the mistakes and breaking your system only to repair it and break again. One has to be at peace with the fact that you are in control of the system and with the responsibility that comes from mistakes, and that often you'll learn a thing or two from breaking and fixing things.

Sergiy Kolodyazhnyy
  • 105,154
  • 20
  • 279
  • 497
  • 9
    You will also want to review how the error was made in the first place, because writing out sudo followed by rm -rf followed by an unintended directory name followed by * should not be something your brain allows to happen. Corrective action/changes to behaviours may be required to avoid much worse problems in the future. – Lightness Races in Orbit Dec 10 '18 at 01:56
  • 1
    @LightnessRacesinOrbit I think this comment should be placed under OP's question, but I do agree - user has to know what they type and avoid doing rm -rf without checking and ensuring that they remove the right thing first. – Sergiy Kolodyazhnyy Dec 10 '18 at 01:58
  • 1
    Well I think it should be added to the answer is why I put it here :) Comments under the question should be for suggesting clarifications to the question – Lightness Races in Orbit Dec 10 '18 at 02:11
  • @LightnessRacesinOrbit Fair enough. I've added a few notes about that. I don't mind people contributing to my answers, so if you have something to add - feel free to edit. – Sergiy Kolodyazhnyy Dec 10 '18 at 02:26
  • To expand on Sergiy's post; As a general rule of thump, whenever you use a remove command with a wildcard (*), you should run the command with ls instead of rm first, so you can be sure that you have reviewed what you are going to delete. – Kasper Thystrup Karstensen Dec 10 '18 at 08:17
  • 1
    @KasperThystrupKarstensen Agreed. Often you can also see echo being prepended first to a command you intend to run with wildcard or other destructive commands. For example, echo rm /tmp/* type of thing – Sergiy Kolodyazhnyy Dec 10 '18 at 09:30
  • 1
    That's spot on, thanks. Of course it's not like I've never made such a mistake, but I immediately reviewed the error and adjusted my practices, such that I never made it again :) It's a formative experience as long as you learn from it. – Lightness Races in Orbit Dec 10 '18 at 10:31
  • @LightnessRacesinOrbit Well said – Sergiy Kolodyazhnyy Dec 10 '18 at 11:25
  • @LightnessRacesinOrbit the reason behind this accident is that I was trying to remove /var/lib/apt/lists/* because of its huge size to create empty space on my disk. – Hossein Hosseinvand Dec 24 '18 at 08:21