irb1.9.1
我是两台 ubuntu 服务器的管理员。在其中一台服务器上,当我尝试从未安装的软件包中运行命令(例如)时,收到以下消息:
The program 'irb1.9.1' is currently not installed. You can install it by typing:
sudo apt-get install ruby1.9.1
在另一台服务器上,我得到以下答案:
The program 'irb1.9.1' is currently not installed. To run 'irb1.9.1' please ask your administrator to install the package 'ruby1.9.1'
我可以sudo
在两台服务器上执行此操作,所以我不明白第一台服务器如何知道我可以自己安装软件包并向我显示要运行的命令,而第二台服务器却不知道。
差异从何而来,我如何让第二台服务器像第一台服务器一样向我发出命令?
编辑回答 Braiam 的评论,apt-cache policy
在两个服务器上返回相同的内容:
$ apt-cache policy command-not-found
command-not-found:
Installed: 0.3ubuntu7.1
Candidate: 0.3ubuntu7.1
Version table:
*** 0.3ubuntu7.1 0
500 http://dk.archive.ubuntu.com/ubuntu/ raring-updates/main amd64 Packages
100 /var/lib/dpkg/status
0.3ubuntu7 0
500 http://dk.archive.ubuntu.com/ubuntu/ raring/main amd64 Packages
答案1
差异可能是由于您使用不同的 bash 版本或不同的 shell 造成的。使用:
echo $SHELL
bash --version
检查您当前的 shell 和/或当前的 bash 版本。
答案2
进一步调查该主题后,我发现command-not-found
正在使用/usr/lib/python2.7/dist-packages/CommandNotFound/CommandNotFound.py
包含以下行的脚本:
self.user_can_sudo = grp.getgrnam("sudo")[2] in posix.getgroups() or grp.getgrnam("admin")[2] in posix.getgroups()
因此,基本上sudo
或admin
组中的任何人都将被视为管理员。其中一台机器配置为使用该wheel
组,因此visudo
将显示:
%wheel ALL=(ALL) ALL
在服务器上,我不是sudo
或admin
组的成员,所以command-not-found
不知道我可以使用执行apt-get
命令sudo
。在将自己添加到sudo
组后,我现在可以在终端上打印出要执行的 apt-get 命令。