[解決済み] Ubuntuでnodeパッケージマネージャを使用してパッケージをインストールすることができない
質問
NodeJSインタプリタ名(
node
) に変更されました。
nodejs
他のパッケージと名前の衝突があったため。以下はreadmeの内容です。Debianにはこうあります。
Node.jsのインタプリタコマンドは、上流では"node"と呼ばれています。 Debian では、インタプリタコマンドは "nodejs" に変更されました。
これは、名前空間の衝突を防ぐために行われました。 のax25-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に理解させるにはどうすればよいですか?
解決方法は?
TL;DR。
sudo apt-get install nodejs-legacy
まず最初に、状況を少し整理しておきます。2012年の夏、Debianのメンテナは他のパッケージとの名前空間の衝突を防ぐためにNode.jsの実行ファイルの名前を変更することを決定しました。これは後方互換性を壊すことになるので、Debian 技術委員会にとって非常に難しい決断でした。
以下は、Debian に掲載された委員会決議草案からの引用です。 メーリングリスト :
nodejs パッケージは、/usr/bin/node ではなく、/usr/bin/nodejs を提供するように変更すること。 このパッケージは、次のような関係で Breaks: を宣言する必要があります。 Debian で /usr/bin/node を参照しているすべてのパッケージ。
nodejs ソースパッケージは、/usr/bin/node を含む nodejs-legacy バイナリパッケージも Priority: extra で提供しなければなりません。 /usr/bin/nodejs. アーカイブ内のパッケージは、以下のものに依存または推奨してはいけません。 nodejs-legacy パッケージは、上流工程のためにのみ提供されています。
互換性があります。 このパッケージは、Conflicts.Conflict を宣言するものとします。 の関係も宣言する。<...>
2項が、OPさんの問題に対する実際の解決策です。シンボリックリンクを手動で行う代わりに、このパッケージをインストールすることをお勧めします。Debian パッケージインデックスにあるこのパッケージへのリンクは以下のとおりです。 ウェブサイト .
を使用してインストールすることができます。
sudo apt-get install nodejs-legacy
.
NPM開発者による全面採用の情報は見つかりませんでしたが、私が思うに
npm
パッケージはどこかの時点で修正され
nodejs-legacy
は本当にレガシーになってしまう。
関連
-
[解決済み】Node.jsのエラーECONNRESETをデバッグするにはどうすればよいですか?
-
[解決済み] UbuntuにBoostをインストールする方法
-
[解決済み] DynamoDBで一括削除するにはどうしたらいいですか?
-
[解決済み] Mongoose Schema がモデルとして登録されていません。
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] npmはどこにパッケージをインストールするのですか?
-
[解決済み] NPMパッケージの以前の正確なバージョンをインストールするにはどうすればよいですか?
-
[解決済み] GitHubからnpmパッケージを直接インストールする方法
-
[解決済み] なぜ "npm install" は package-lock.json を書き換えてしまうのですか?
-
[解決済み] sudo を使用しないと NPM モジュールがグローバルにインストールされない
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] リソースの読み込みに失敗しました: net::ERR_CONNECTION_REFUSED : Nodejs
-
[解決済み] テスト
-
[解決済み】ブロックスコープの宣言は、ストリクトモード以外ではまだサポートされていません。
-
[解決済み] Heroku "状態が起動から停止に変更されました SIGTERMで全プロセスを停止"
-
[解決済み] エラーメッセージ MongoError: bad auth URI 文字列で認証に失敗しました。
-
[解決済み] Yarn にパッケージを強制的に再インストールさせるにはどうしたらいいですか?
-
[解決済み] Json Web Token verify() return jwt malformed
-
[解決済み] エラーです。Cannot find module 'ejs'
-
[解決済み] npm install errors with Error: ENOENT, chmod
-
[解決済み】ubuntu 12.04でnodejsとnodeを比較。