The program 'x' is currently not installed. You can install it by typing:
sudo apt-get install x
而不是为您安装程序,它要求您输入实际的命令。如何更改这种行为?
The program 'x' is currently not installed. You can install it by typing:
sudo apt-get install x
负责此行为的软件包是 command-not-found 软件包,它已经包含了所需的行为,尽管默认情况下被禁用。您可以通过将以下行添加到您的
~/.bashrc
文件来启用它。
export COMMAND_NOT_FOUND_INSTALL_PROMPT=1
The program 'x' is currently not installed. You can install it by typing:
sudo apt-get install x
Do you want to install it? (N/y)
我的解决方案是安全性和舒适性的混合:
auto-apt检查其环境中运行的程序的文件访问情况,如果程序尝试访问一个已知属于未安装软件包的文件,auto-apt将使用apt-get安装该软件包。此功能需要apt和sudo来工作。它还提供了一个简单的数据库,用于搜索包含所请求文件的软件包。
这是一个终端仿真器,在其中每个文件访问都经过auto-apt预先验证,如果不存在,则在数据库中搜索(类似于apt-file
),并下载和安装所需的软件包,然后允许程序继续执行。您应以root权限运行它:
sudo auto-apt
sudo apt-get install !!
其中的 !!
将被替换为历史记录中的最后一条命令。你可能也可以将其作为别名使用,但我不知道如何添加 !!
而不对其进行评估。
然而,正如 @eliah-kagan 和 @gertvdijk 在评论中提到的那样,还有一些注意事项。某些程序的软件包名称与您执行的二进制文件不同。此外,当向二进制文件传递参数时,可能会导致一些意外结果。
在某个地方(例如~/.bashrc
)添加export COMMAND_NOT_FOUND_INSTALL_PROMPT=1
这是最“酷”的方法,虽然显然不太安全,但大概90%的时间会引起内部的“谢谢,这正是我想让你做的!”的反应。
(这种方法的一个个人缺点是我似乎发现很难记住/搜索答案,所以到目前为止我很少使用它。)
如果您使用的是默认终端,您可以快速选择该行并中键单击将其直接粘贴到命令行中。(其他终端或SSH应用程序可能有不同的方法。)
实际上,我倾向于发现这样做足够快速,并且稍微更难“意外”进行,并且不需要任何先前的设置,所以我倾向于这样做。
然而,还有一些值得注意的地方-如果您可以(或者想要学会)快速输入-可以直接键入sudo apt install packagename
。
它有助于锻炼肌肉记忆,并且意味着您必须阅读和输入软件包名称,这意味着您将更容易记住它。在最近的Ubuntu版本中,这也稍微容易一些,因为apt
可以替代apt-get
。
~/.bashrc
而不是~/.bash_rc
。 - edwinksl.bash_profile
。 - mwfearnley