Ubuntuでノードパッケージマネージャーを使用してパッケージをインストールできない 質問する

Ubuntuでノードパッケージマネージャーを使用してパッケージをインストールできない 質問する

Ubuntu のNodeJS インタープリター名 ( )は、別のパッケージと名前が競合するため にnode変更されました。readme の内容は次のとおりです。Debian では次のように書かれています:nodejs

Node.js インタープリタ コマンドのアップストリーム名は「node」です。Debian では、インタープリタ コマンドは「nodejs」に変更されました。

これは、名前空間の衝突を防ぐために行われました。他のコマンドは、アップストリームで同じ名前を使用します (「node」パッケージの ax25-node など)。

シェル コマンドとして Node.js を呼び出すスクリプトは、代わりに「nodejs」コマンドを使用するように変更する必要があります。

ただし、nodejs を使用すると、 を使用したパッケージのインストールがうまくいきませんnpm。パッケージのインストールは次のエラーで失敗します。

sh: 1: node: not found
npm WARN This failure might be due to the use of legacy binary "node"
npm WARN For further explanations, please read /usr/share/doc/nodejs/README.Debian

システムに nodejs がすでにインストールされているが、インタープリター名が異なることを npm に理解させるにはどうすればよいですか?

ベストアンサー1

要約:

sudo apt-get install nodejs-legacy

まず最初に、状況を少し説明させてください。2012 年の夏、Debian のメンテナーは、他のパッケージとの名前空間の衝突を防ぐために、Node.js 実行可能ファイルの名前を変更することを決定しました。これは下位互換性を損なうため、Debian 技術委員会にとって非常に難しい決定でした。

以下はDebianで公開された委員会決議草案からの引用です。メーリングリスト:

  1. nodejs パッケージは、/usr/bin/node ではなく /usr/bin/nodejs を提供するように変更する必要があります。パッケージは、/usr/bin/node を参照する Debian のすべてのパッケージと Breaks: 関係を宣言する必要があります。

  2. nodejs ソース パッケージは、/usr/bin/nodejs へのシンボリック リンクとして /usr/bin/node を含む、Priority: extra の nodejs-legacy バイナリ パッケージも提供します。アーカイブ内のパッケージは、アップストリーム
    互換性のためだけに提供される nodejs-legacy パッケージに依存したり推奨したりすることはできません。このパッケージは、node パッケージとの Conflicts: 関係も宣言します。

<...>

パラグラフ 2 は、OP の問題に対する実際の解決策です。OP は、手動でシンボリックリンクを作成するのではなく、このパッケージをインストールしてみてください。Debian パッケージ インデックスのこのパッケージへのリンクは次のとおりです。Webサイト

を使用してインストールできますsudo apt-get install nodejs-legacy

NPM 開発者が全体を採用するという情報は見つかっていませんが、npmパッケージはある時点で修正され、nodejs-legacy本当にレガシーになると思います。

おすすめ記事