web-dev-qa-db-ja.com

リポジトリの署名キーをインストールしようとすると、wgetは「欠落しているURL」をスローします

私はUbuntuに INetSim をインストールしており、このコマンドを実行してプログラムの署名キーをインストールすると、次のようになります。

Sudo wget -O - http://www.inetsim.org/inetsim.org-archive-signing-key.asc | apt-key add -

メッセージが表示されます:

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

Try `wget --help' for more options.

なぜこのエラーが発生するのですか?

enter image description here

4

質問テキストの wget コマンドがスクリーンショットのコマンドと一致しません。スクリーンショットのコマンドは次のとおりです。

Sudo wget -O http://www.inetsim.org/inetsim.org-archive-signing-key.asc | apt-key add -

これがサンプルテキストのコマンドです。 公式のINetSimインストール手順 で使用されているコマンドも確認してください。

Sudo wget -O - http://www.inetsim.org/inetsim.org-archive-signing-key.asc | apt-key add -

微妙な違いに注意してください?失敗しているのは、-とそれに続くURLの間にSudo wget -Oがありません。 -で試してみると、問題なく動作するはずです。

何が起こったのか、何が起こっていなかったのかを理解するために、-O--output-documentフラグは-がそのURLのコンテンツを標準出力にストリーミングするようにwgetに指示する必要がありました。次のようなコマンドを実行した場合:

wget http://www.inetsim.org/inetsim.org-archive-signing-key.asc

wgetが行うのは、そのファイルをシステム上でローカルにinetsim.org-archive-signing-key.ascという名前のファイルに保存することだけです。ただし、-O -を設定し、そのパイプ(|)を| apt-key add -に設定すると、コマンドは基本的に、そのファイルのコンテンツを標準のputにストリーミングし、その出力をapt-key addにパイプして、キーのコンテンツをaptに追加できるようにします。リポジトリリスト。

また、スクリーンショットは追加のエラーを示しています。

エラー:このコマンドはrootのみが使用できます。

これは、コマンドにダッシュがないことに直接関係しています。他のすべても失敗します。

コマンドのパイプが壊れていると、コマンド全体が失敗し、Sudoパスワードの入力を求められるポイントに到達することはありません。しかし、コマンドの残りの部分はとにかくまだ解析されています。

したがって、完全なコマンドが失敗したとしても、それでもapt-keyを実行しようとしています。また、1行のコマンドの残りの部分は基本的に前のSudoで呼び出されたコマンドの残りの部分から切り離されているため(エラーのためにSudoとして呼び出されることはありません)、実行を試みます。通常のユーザーとしてのapt-keyは、次のように言います。

エラー:このコマンドはrootのみが使用できます。

なぜなら、そうです…apt-keyを通常の/特権のないユーザーとして実行しようとすると、確かにエラーになります。

11
JakeGould