On 2023-03-29 03:59:24 +0200, Vincent Lefevre wrote:
> BTW, I also note in the second failure
>
> https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1019732#34
>
> that one has the following in the output:
>
> $stdout.print " " * Unicode.width(@old)
> ^^^^^^
More precisely, one has
Performing actions...
E: undefined method `default' for " if /proxy_detect='(.*)'/ =~ `apt-config
\#{@apt_conf} shell proxy_detect acquire::http::proxy-auto-detect`\n":String
$stdout.print " " * Unicode.width(@old)
^^^^^^
E: Unterprozess /usr/bin/apt-listbugs apt hat Fehlercode zurückgegeben (1)
E: Failure running script /usr/bin/apt-listbugs apt
The "Performing actions..." line and the last two "E:" lines come from
aptitude. What is between comes from the program run by aptitude, i.e.
"/usr/bin/apt-listbugs apt":
E: undefined method `default' for " if /proxy_detect='(.*)'/ =~ `apt-config
\#{@apt_conf} shell proxy_detect acquire::http::proxy-auto-detect`\n":String
$stdout.print " " * Unicode.width(@old)
^^^^^^
On my machine, I get the following:
zira:~> grep -r '\<E:' /usr/lib/ruby
/usr/lib/ruby/gems/3.1.0/gems/rbs-2.1.0/stdlib/bigdecimal-math/0/big_math.rbs:
def self?.E: (Numeric prec) -> BigDecimal
/usr/lib/ruby/gems/3.1.0/gems/rbs-2.1.0/core/math.rbs:Math::E: Float
/usr/lib/ruby/vendor_ruby/aptlistbugs/logic.rb: $stderr.puts _("E: ") +
_("You need to specify a command.")
/usr/lib/ruby/vendor_ruby/aptlistbugs/logic.rb: $stderr.puts _("E: ") +
_("Unknown command ") + "'#{command}'."
/usr/lib/ruby/vendor_ruby/aptlistbugs/logic.rb: $stderr.puts _("E: ") +
_("HTTP GET failed")
/usr/lib/ruby/vendor_ruby/aptlistbugs/logic.rb: $stderr.puts _("E: ") +
_("Empty stream from SOAP")
/usr/lib/ruby/vendor_ruby/aptlistbugs/logic.rb: $stderr.puts _("E: ") +
"#{$!}"
/usr/lib/ruby/vendor_ruby/debian.rb: "E: invalid format #{line} in
#{line}"
/usr/lib/ruby/vendor_ruby/debian.rb: "E: duplicate control info
#{field} in #{line}"
/usr/lib/ruby/vendor_ruby/debian.rb: "E: required field #{f} not found
in #{c}"
/usr/lib/ruby/vendor_ruby/debian.rb: raise DepError, "E: trying package
override"
/usr/lib/ruby/vendor_ruby/debian.rb: raise DepError, "E: trying relation
override"
/usr/lib/ruby/vendor_ruby/debian.rb: raise Debian::DepError, "E: unknown
operation #{@op}"
/usr/lib/ruby/vendor_ruby/debian.rb: "E: `+' type mismatch #{self.class}
!= #{da.class}"
/usr/lib/ruby/vendor_ruby/debian.rb: "E: `-' type mismatch
#{self.class} != #{da.class}"
/usr/lib/ruby/vendor_ruby/debian.rb: "E: `-' type mismatch #{self.class}
!= #{da.class}"
The almost-only possibility would be:
$stderr.puts _("E: ") + "#{$!}"
The code in /usr/lib/ruby/vendor_ruby/aptlistbugs/logic.rb is:
[...]
rescue Exception => exception
config.frontend.puts _(" Fail")
$stderr.puts " Exception: " + exception.class.to_s if $DEBUG
config.frontend.puts _("Error retrieving bug reports from the server
with the following error message:")
$stderr.puts _("E: ") + "#{$!}"
if exception.kind_of? SocketError
config.frontend.puts _("It appears that your network connection is
down. Check network configuration and try again")
else
config.frontend.puts _("It could be because your network is down, or
because of broken proxy servers, or the BTS server itself is down. Check
network configuration and try again")
end
retrycount -= 1
if config.frontend.yes_or_no?(_("Retry downloading bug information?"))
&& retrycount > 0
config.querystep = 1 if config.querystep != 1 &&
config.frontend.yes_or_no?(_("One package at a time?"))
config.parsestep = 1 if config.parsestep != 1 &&
config.frontend.yes_or_no?(_("One bug report at a time?"))
retry
end
raise _("Exiting with error") if !
config.frontend.yes_or_no?(_("Continue the installation anyway?"), false)
bugs = []
But in such a case, wouldn't one have other messages, corresponding
to config.frontend.puts?
The other possibility is some other error, say
$stderr.puts _("E: ") + _("Empty stream from SOAP")
Note that the error message does not correspond at all. However,
the exact error message is obtained via gettext, and this is where
something ugly could potentially occur. This might explain that
the error message contains text from the .rb source (which is
something that is not available normally).
> The "$stdout.print..." line comes from
> /usr/lib/ruby/vendor_ruby/aptlistbugs/logic.rb but what could yield
> this output with carets?
Any explanation for this one? FYI, the context in logic.rb:
[...]
def progress(msg, val)
$stdout.print "\r"
$stdout.print " " * Unicode.width(@old)
$stdout.print "\r"
@old = "#{msg} #{val}"
$stdout.print @old
$stdout.flush
$stdout.puts "" if Factory.done?(val)
end
[...]
--
Vincent Lefèvre <[email protected]> - Web: <https://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)