wget 在尝试安装存储库签名密钥时抛出“缺少 url”

Sad*_*per 5 wget ubuntu apt

我在 Ubuntu 上安装INetSim并在运行此命令以安装程序的签名密钥时:

sudo wget -O - http://www.inetsim.org/inetsim.org-archive-signing-key.asc | apt-key add -
Run Code Online (Sandbox Code Playgroud)

我收到消息:

wget: missing URL
Usage: wget [OPTION]... [URL]...

Try `wget --help' for more options.
Run Code Online (Sandbox Code Playgroud)

为什么我收到这个错误?

在此处输入图片说明

Gia*_*968 12

wget你的问题中的文本命令不是在你的屏幕截图匹配的命令。这是屏幕截图中的命令:

sudo wget -O http://www.inetsim.org/inetsim.org-archive-signing-key.asc | apt-key add -
Run Code Online (Sandbox Code Playgroud)

这是示例文本中的命令;还要检查官方 INetSim 安装说明中使用的命令:

sudo wget -O - http://www.inetsim.org/inetsim.org-archive-signing-key.asc | apt-key add -
Run Code Online (Sandbox Code Playgroud)

注意到细微的差别了吗?失败的是缺少其后的-介于两者之间sudo wget -O的 URL。试试看-,它应该可以正常工作。

为了让您了解发生了什么或没有发生什么,-O(--output-document标志需要-告诉wget将该 URL 的内容流式传输到标准输出。如果您像这样运行命令:

wget http://www.inetsim.org/inetsim.org-archive-signing-key.asc
Run Code Online (Sandbox Code Playgroud)

所有wget会做的是在本地保存该文件在系统上到一个指定的文件inetsim.org-archive-signing-key.asc。但是设置-O -然后将该管道 ( |) 设置到| apt-key add -命令基本上是说,将该文件的内容流式传输到标准 put,然后将该输出通过管道传输到apt-key add这样的关键内容可以添加到您的apt存储库列表中。

此外,您的屏幕截图还显示了其他错误:

错误:此命令只能由 root 使用。

这与您的命令中缺少破折号直接相关;它也会导致其他一切都失败。

如果命令的管道被破坏,整个命令就会失败,并且永远不会到达提示您输入sudo密码的地步。但是命令的其余部分仍然在解析中。

因此,即使认为完整命令失败,它仍在尝试运行apt-key. 由于单行命令的其余部分基本上与之前sudo调用的命令的其余部分分离——sudo由于错误而从未调用过——它尝试以apt-key普通用户身份运行,然后说:

错误:此命令只能由 root 使用。

因为,是的......尝试以apt-key普通/非特权用户身份运行确实是一个错误。