web-dev-qa-db-ja.com

「update-alternatives」を使用して、同じアプリの複数のインストール済みバージョンを管理する方法

アプリのコンパイル中または実行中にパス関連の問題が頻繁に発生します。システムにはnodeの2つのバージョンがあります。1つは公式リポジトリから、もう1つはソースから手動でインストールします。今日は括弧をコンパイルしたかったのですが、npm installを実行すると、1.4.20などの新しいバージョンを使用するように求められました。デフォルトのバージョンは/usr/bin/npmにあり、動作しませんでした。手動でインストールされたものは/usr/local/bin/npmにあります

/usr/local/bin/npmまたは別の方法を使用して、update-alternativesをデフォルトのパスとして作成する方法はありますか?

たとえば、デフォルトのテキストエディターを次のように設定できます。

    Sudo update-alternatives --config editor
2
kenn

その方法を見つけました。最初に/usr/bin/npmの古いバージョン(1.3.10)であるnpmのデフォルトパスをチェックアウトしました。これは/usr/share/npm/bin/npm-cli.jsへのシンボリックリンクであることに気付きました。

    Sudo unlink /usr/bin/npm

その後、次のコマンドを試しました

   Sudo update-alternatives --install /usr/bin/npm  npm /usr/local/bin/npm 10
   Sudo update-alternatives --install /usr/bin/npm  npm /usr/share/npm/bin/npm-cli.js 20

今、私は簡単にそれらを切り替えることができます

  Sudo update-alternatives --config npm      

うまくいく

2
kenn

あなたがnodeに言及したので、これは NodeJS用のNインストールマネージャ 。このような「上位レベル」のパッケージマネージャーがある場合、通常はupdate-alternativesで使用します。通常、重要なファイルを自分で追跡するよりも複雑ではありません。IMO。とはいえ、update-alternativesは引き続き機能すると思います。

1
killthrush