apt-get install nodejs
でノードをインストールしました。次に、apt-get install npm
でnpmをインストールしました。 express
を実行しようとすると、
$ express
/usr/bin/env: node: No such file or directory
このエラーを解決するにはどうすればよいですか?
Ubuntuには、同様の名前を持つ2つのパッケージnodeとnodejsがあります。
node
がこれを行い、
Description-en:アマチュアパケットラジオNodeプログラム。ノードプログラムはTCP/IPおよびパケット無線ネットワーク接続を受け入れ、ユーザーにさまざまな方法でリモートホストへのゲートウェイ接続を可能にするインターフェースを提供します。アマチュア無線プロトコルの。
nodejs
がこれを行い、
Description-en:Node.jsイベントベースのサーバー側JavaScriptエンジンNode.jsは、RubyのEvent MachineやPythonのTwistedなどのシステムに設計が似ており、影響を受けます。イベントモデルをもう少し進めます-イベントループをライブラリとしてではなく、言語構造として提示します。 Node.jsには、システム、イベント、標準I/O、モジュール、タイマー、子プロセス、POSIX、HTTP、マルチパート解析、TCP、DNS、アサート、パス、URL、クエリ文字列などのサーバータスクを処理する便利なライブラリがいくつかバンドルされています。
Fedoraも同様のパッケージ命名スキームに従います。このため、nodejs
のバイナリは、元のnodejs
からnode
に名前を変更する必要がありました。ただし、これは技術的にはコーシャではありません。ほとんどのnodejsプログラム(およびnpmでインストールされたライブラリ)は、ノードバイナリがnode
であると想定しています。これを回避したい場合、最も簡単な方法は、2つをシンボリックリンクすることです。この方法をとる場合は、アマチュアパケットラジオを扱うnode
パッケージをインストールしないでください。
Sudo ln -s /usr/bin/nodejs /usr/local/bin/node
あるいは、ノードの場合、 n
を使用し、node
をインストールしないことをお勧めします。 npmをインストールして(ノードをインストールします)、npmを削除し、aptにクリーンアップするよう指示します。これを行うには、単に実行します
Sudo apt-get install npm
Sudo npm install -g n
Sudo n latest
Sudo apt-get --purge remove npm
Sudo apt-get autoremove
nvm
のようなシェルスクリプトでも動作するバイナリディストリビューションマネージャーは他にもありますが、個人的にはn
を好みます。 n
は、/usr/local/bin
にインストールするノードバイナリの1つだけのaptのようなものだと考えてください。
なぜnpmを削除するのですか?そうではなかった。 apt-get --purge remove
は、onlyパッケージマネージャーによってインストールされたものを削除できます。 n latest
は、パッケージマネージャーの外部で機能します。これを行う場合、2つのnpmがあります。
apt-get
を使用してインストールしたバージョン。n latest
によってインストールされたバージョン。ディストリビューションの古いバージョンを使用しても意味がありません。さらに悪いことに、そのバージョンが動作する場合は、別の場所にインストールされ、Debianのインストールディレクトリを想定したDebianの変更が行われる可能性があります。両方ではなく、どちらかまたは両方を使用する方が適切です。
/ usr/bin/nodeから/ usr/bin/nodejsへのリンクを持つnodejs-legacyパッケージをインストールする必要があります
$ Sudo apt-get install nodejs-legacy
私の場合は、PATH
環境変数に「〜/ progs/node/bin /」があり、「〜」はenv
...で解決されないためです。それを実際のフルパス( "/ home/myuser/node/bin")に置き換えることで問題が解決しました。
このソリューション
export PATH="$HOME/opt/nodejs/bin:$PATH"
私のためにこの問題を解決しました($ HOME変数が適切に設定されていると仮定して動作するはずです)。また、ホームディレクトリへのパスをハードコーディングすることを回避できます(たとえば、必要に応じて.bash_profileを異なるアカウント/サーバーで再利用できます)
cmdでこれを行う
Sudo apt-get install nodejs-legacy
chmod your folder 700 (optional)