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で公開された委員会決議草案からの引用です。メーリングリスト:
nodejs パッケージは、/usr/bin/node ではなく /usr/bin/nodejs を提供するように変更する必要があります。パッケージは、/usr/bin/node を参照する Debian のすべてのパッケージと Breaks: 関係を宣言する必要があります。
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
本当にレガシーになると思います。