Better error messages for command not found (was Re: Pull in
upstream before 9.1 code freeze?)
Tim Kientzle
tim at kientzle.com
Thu Jul 5 02:02:17 UTC 2012
On Jul 4, 2012, at 6:42 PM, Mike Meyer wrote:
> On Wed, 4 Jul 2012 18:03:05 -0700
> Tim Kientzle <tim at kientzle.com> wrote:
>> I'm curious whether the earlier objections were due to
>> misunderstandings about auto-install. Auto-install would
>> be problematic, but the feature being discussed here does not
>> require installation. Just better error messages.
>
> My objection was not due to misunderstanding about auto-install. I
> find the feature annoying - spewing a bunch of crap at me because of a
> typo. It annoys me far more often than it actually helps me, because
> more often than not the "missing command" is a typo, *not* an attempt
> to run a command I don't have. I.e., if I type mmap instead of nmap, I
> get:
>
> mwm at IPGhosterCrawlerI:~$ mmap
> No command 'mmap' found, did you mean:
> Command 'jmap' from package 'openjdk-6-jdk' (main)
> Command 'jmap' from package 'openjdk-7-jdk' (universe)
> Command 'gmap' from package 'gmap' (multiverse)
> Command 'gmap' from package 'scotch' (universe)
> Command 'tmap' from package 'emboss' (universe)
> Command 'smap' from package 'slurm-llnl' (universe)
> Command 'pmap' from package 'procps' (main)
> Command 'moap' from package 'moap' (universe)
> Command 'umap' from package 'libunicode-map8-perl' (main)
> Command 'map' from package 'sgt-puzzles' (universe)
> Command 'amap' from package 'amap-align' (universe)
> mmap: command not found
I agree this is excessive.
In this case, a better UI might be to separate the typo handling
from the package reference, so that you would see something
like this:
$ mmap
mmap: command not found
Perhaps you meant one of: jmap, gmap, tmap, smap, (8 others)
That way, if you did really mean jmap, you could try again and see
$ jmap
jmap: command not found
Try installing one of the following packages:
java/openjdk-6-jdk
java/openjdk-7-jdk
I agree also about the convenience of having a tool that
can identify the port/package that would install a particular
library (or other file). I too have run into the situation where
I need a particular library and can't figure out what the package
is called.
> bash and zsh already have command_not_found handlers. I don't really
> object to that functionality to sh and tcsh. Just *don't turn it on by
> default*. I don't think I'd even object to setting those handlers in
> /usr/share/skel.
How about if it's on by default (in the default /etc/cshrc)
but very easy to turn off?
The primary point of such a feature is to help people new
to FreeBSD. Someone who sits down at a new FreeBSD installation
and wants to run 'nmap' can then get up to speed a lot more quickly,
since they'll be pointed at the right package right away.
> Of course, I might turn around and ask that we add support for command
> correction ala zsh to sh & tcsh via those hooks if they get added.
>
<grin>
Tim
More information about the freebsd-hackers
mailing list