因此,当找不到命令时,通过什么方式填充“您的意思是:”列表?哪个程序可以找到这些备用命令?“(main),(universe)...”的含义是什么?我可以更改哪个程序找到这些吗?
因此,当找不到命令时,通过什么方式填充“您的意思是:”列表?哪个程序可以找到这些备用命令?“(main),(universe)...”的含义是什么?我可以更改哪个程序找到这些吗?
Answers:
如果你看/etc/apt/sources.list
它的内容将有格式
#Archive type Repository URL Distribution Component
deb http://archive.ubuntu.com/ubuntu precise main
封存类型
每行的第一个单词deb或deb-src指示归档的类型。Deb表示归档文件包含二进制软件包(deb),依此类推。
储存库网址
该行的下一个条目是您要从中下载软件包的存储库的URL。
分配
“发行版”可以分别是发行代码名称/别名(乳清,杰西,舒展,sid)或发行类(可稳定,稳定,测试,不稳定)。
“(main),(universe)...”的含义是什么?
零件
main包含与DFSG兼容的软件包,contrib软件包包含与DFSG兼容的软件,但不包含main依赖,non-free包含与DFSG不兼容的软件,依此类推。提示-检查存储库URL中的一个,它应该有一个带有组件名称的文件夹。
软件包管理者说, apt
将有一个数据库,其中包含存储库中所有软件包的列表,并且它足够聪明,可以为您提供建议。
您的软件包管理器可能位于eof dpkg(例如Debian,Ubuntu等),apt(例如Debian,Ubuntu等)上,现在已过时rpm(例如,出于兼容性原因而不再使用Redhat和较新的版本),yum(例如。Fedora,CentOS),dnf-浓化的yum(例如新的Fedora版本)等等。有关更完整的列表,请检查此。您甚至可能会在一个发行版中看到多个软件包管理器。例如,在Ubuntu中,您可能会看到dpkg,它提供了/ etc / apt / sources / list。
所以当你输入
cleaq
可能会说
cleaq: no command found. Did you mean clean.
通过什么方式填充“您的意思:”列表?
这涉及与包管理器数据库中的包进行模式匹配。
当您执行 apt-get update
不确定
我可以更改哪个程序找到这些吗?
虽然。我相信这是无法更改的功能。虽然不太确定
/etc/apt
。好吧,一般来说,您可以说您的软件包管理器会为您维护此列表,并且您的软件包管理器可以是apt(例如Debian,Ubuntu等),rpm(Redhat及其克隆),yum(例如Fedora)。 ,CentOS)和dnf(新的Fedora版本)
对于bash
,其行为由shell函数控制command_not_found_handle
(请参阅参考资料man bash
)。
要查看该函数定义了什么行为,可以发出:
declare -p -f command_not_found_handle
您可以通过重新定义command_not_found_handle
功能来更改使用哪个程序。
在基于Debian的发行版(包括Ubuntu)中,该软件包command-not-found
是通常安装的,并且可以/usr/lib/command-not-found
从以下链接获得:
建议在交互式bash会话中安装软件包
该软件包将为command_not_found安装处理程序,该处理程序查找当前未安装但可从存储库中获取的程序。
也可以看看:
man
的页面bash
,尤其是命令执行/usr/share/doc/command-not-found/README
(来自Debian软件包)