]> git.saurik.com Git - apt.git/commitdiff
disable locking even for root in --simulate
authorDavid Kalnischkies <david@kalnischkies.de>
Thu, 9 Jul 2015 19:10:53 +0000 (21:10 +0200)
committerDavid Kalnischkies <david@kalnischkies.de>
Mon, 10 Aug 2015 15:27:17 +0000 (17:27 +0200)
Six years ago in 55a5a46c235a30bf024fb2301066553953701cc5 apt-get
learned to disable locking if run as normal user and show a message.

Helmut Grohne rightly suggests on IRC now that there isn't much point in
getting the locks for root either as the output isn't in any way more
authoritive than without locking given that after this call the lock is
freed and any action can sneak in before we make the next call. So we
exchange no benefit for the disavantage of blocking real calls. This can
be especially confusing with the aliases --no-act and --just-print.

We do not print the message we print for users through as the non-root
users can be confronted with a lot more difference via unreadable files.

apt-private/private-main.cc

index 668b1733ae683b1e252f29e34fe211d4229c4111..3886c7df65474a2ac394ca66d07e14790ddda7c4 100644 (file)
@@ -22,13 +22,15 @@ void InitSignals()
 
 void CheckSimulateMode(CommandLine &CmdL)
 {
-   // simulate user-friendly if apt-get has no root privileges
-   if (getuid() != 0 && _config->FindB("APT::Get::Simulate") == true &&
+   // disable locking in simulation, but show the message only for users
+   // as root hasn't the same problems like unreadable files which can heavily
+   // distort the simulation.
+   if (_config->FindB("APT::Get::Simulate") == true &&
        (CmdL.FileSize() == 0 ||
         (strcmp(CmdL.FileList[0], "source") != 0 && strcmp(CmdL.FileList[0], "download") != 0 &&
          strcmp(CmdL.FileList[0], "changelog") != 0)))
    {
-      if (_config->FindB("APT::Get::Show-User-Simulation-Note",true) == true)
+      if (getuid() != 0 && _config->FindB("APT::Get::Show-User-Simulation-Note",true) == true)
          std::cout << _("NOTE: This is only a simulation!\n"
            "      apt-get needs root privileges for real execution.\n"
            "      Keep also in mind that locking is deactivated,\n"