Control: tags -1 + moreinfo
Hi Axel,
2014-12-22 14:58 Axel Beckert:
Package: aptitude
Version: 0.6.11-1
Severity: important
Affects: aptitude-robot
Citing from src/cmdline/cmdline_prompt.cc:
524 if(!untrusted.empty())
525 {
526 printf(_("WARNING: untrusted versions of the following packages will be
installed!\n\n"
527 "Untrusted packages could compromise your system's
security.\n"
528 "You should only proceed with the installation if you are
certain that\n"
529 "this is what you want to do.\n\n"));
530
531 cmdline_show_pkglist(untrusted, term_metrics);
532
533 printf("\n");
534
535
536 if(aptcfg->FindB(PACKAGE "::CmdLine::Ignore-Trust-Violations",
false))
537 {
538 printf(_("*** WARNING *** Ignoring these trust violations
because\n"
539 " %s::CmdLine::Ignore-Trust-Violations is
'true'!\n"),
540 PACKAGE);
541 return true;
542 }
543
544 if(aptcfg->FindB("Apt::Get::AllowUnauthenticated", false))
545 {
546 printf("%s",
547 _("*** WARNING *** Ignoring these trust violations
because\n"
548 " Apt::Get::AllowUnauthenticated is
'true'!\n"));
549 return true;
550 }
[…]
573 while(1)
574 {
575 printf(_("Do you want to ignore this warning and proceed
anyway?\n"));
576 printf(_("To continue, enter \"%s\"; to abort, enter \"%s\":
"), okstr.c_str(), abortstr.c_str());
577 char buf[1024];
578 cin.getline(buf, 1023);
579 buf[1023]='\0';
580
581 if(cin.eof())
582 throw StdinEOFException();
583
584
585 const bool is_ok = strncasecmp(okstr.c_str(), buf,
okstr.size()) == 0;
586 const bool is_fallback_ok =
strncasecmp(fallback_okstr.c_str(), buf, fallback_okstr.size()) == 0;
587 const bool is_abort = strncasecmp(abortstr.c_str(),
buf, abortstr.size()) == 0;
588 const bool is_fallback_abort =
strncasecmp(fallback_abortstr.c_str(), buf, fallback_abortstr.size()) == 0;
589
590 const bool rval = is_ok || (is_fallback_ok && !is_abort);
591
592 if(!is_ok && !is_abort && !is_fallback_ok &&
!is_fallback_abort)
593 printf(_("Unrecognized input. Enter either \"%s\" or
\"%s\".\n"), okstr.c_str(), abortstr.c_str());
594 else
595 return rval;
596 }
597 }
Lines 536 and 544 check for configuration settings allowing untrusted
packages to be installed anyways, but there's no way to preconfigure
that you want packages to be _not_ installed in such a case.
Which leads to the fact that aptitude _always_ requires input in the
case that you got untrusted packages (e.g. in case of an BADSIG error)
and want them to be skipped.
There's not even a default answer upon pressing enter as it's the case
with AFAIK all interactive dpkg and apt-get question, i.e. using "yes ''
| aptitude" to get a sane default (as aptitude-robot does) isn't
possible and currently leads to aptitude filling the logs quickly with
the following lines:
WARNING: untrusted versions of the following packages will be installed!
Untrusted packages could compromise your system's security.
You should only proceed with the installation if you are certain that
this is what you want to do.
<package list>
Do you want to ignore this warning and proceed anyway?
To continue, enter "Yes"; to abort, enter "No": Unrecognized input. Enter either "Yes"
or "No".
Do you want to ignore this warning and proceed anyway?
To continue, enter "Yes"; to abort, enter "No": Unrecognized input. Enter either "Yes"
or "No".
Do you want to ignore this warning and proceed anyway?
To continue, enter "Yes"; to abort, enter "No": Unrecognized input. Enter either "Yes"
or "No".
[…]
And no, using "yes 'No' | aptitude" is no option since "No" is not
always the default answer.
What do you think that would be the best way to solve this?
One way would be to interpret any of those variables, if *set* and *set
to false*, to just return from the function with "false".
The problem that I see is that the variable as documented is already of
default "false" (but not set by default, just interpreted as "false"
unless set to "true"), and still it asks in a case-by-case basis.
So we would have to change the current logic in the code above, like
this:
if ::CmdLine::Ignore-Trust-Violations set and true
return true
else if ::CmdLine::Ignore-Trust-Violations set and false
return false
else
// ... continue with the prompt
But I don't know if it would have some harmful consequences, like
people/automatic-software already setting it to false, and relying on
current behaviour to continue with the prompt anyway.
Adding yet another option is always an option (pun maybe
intended)... but I am a bit concerned of the proliferation of options
(in fact this option is basically just an alias of
APT::Get::AllowUnauthenticated, so completely unneded in the first place
-- unless it predated apt's).
Cheers.
--
Manuel A. Fernandez Montecelo <[email protected]>
_______________________________________________
Aptitude-devel mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/aptitude-devel