web-dev-qa-db-ja.com

apt-getはnvm経由でインストールされたノードソフトウェアを認識しません

.debパッケージをインストールしようとしていますが、nodejs、nodejs-underscoreなどのいくつかの依存関係が必要ですが、それらはすべてnvmを介して既にインストールされており、利用可能です。

とにかく、apt-getがnvmを介してインストールされたパッケージを認識して、衝突しないようにできますか? apt-getはシステム全体であるのに対して、nvmはローカルユーザースペースで動作するため、ハッキングが必要になる場合があります。

15
Louisgv

可能な限り最も簡単なアプローチは、onlynvmまたは.debパッケージのいずれかを使用することです。これにより、長い目で見れば頭痛の種がかなり減りますので、まず最初に調べてください。 .debパッケージによって提供されるノード関連のほぼすべてのものを、代わりにnvm経由でインストールできるようです。

ただし、それが実際に不可能な場合は、.debおよびequivs-controlを使用して、依存関係がインストールされていることをaptに伝える「ダミー」equivs-buildパッケージを作成できる場合があります。 。あなたが物事を間違えた場合、これは潜在的にaptを混乱させる可能性があることに注意してください。また、nvmパッケージをアンインストールしても、aptは、ダミーパッケージ自体をアンインストールするまで、ダミーパッケージで定義した代替物があると考えます。

まず、ダミーパッケージをビルドできるように「equivs」をインストールします。

Sudo apt-get install equivs

ダミーパッケージを記述する制御ファイルを作成します。

cd ~
equivs-control nodejs-dummy

この制御ファイルを編集します。

nano nodejs-dummy

必要に応じて、制御ファイルの行をコメント解除して変更します。特に、「Provides:」行を設定して、nvmを使用して置換したパッケージをリストします。例えば:

Package: nodejs-dummy
Version: (version slightly higher than what the apt package actually provides)
Maintainer: Your Name <[email protected]>
Provides: nodejs
Architecture: all
Description: Something that will remind you what this does ;)

パッケージをビルドします。

equivs-build nodejs-dummy

最後に、インストールします:

Sudo dpkg -i nodejs-dummy_use_the_actual_filename.deb

nvmを使用して置換したパッケージをすすぎ、繰り返します。パッケージがnvmで置き換えた別のパッケージの特定のバージョンに依存する場合、依存する正確なバージョン番号を使用する必要があります。ただし、それによってどのような問題が発生するかはわかりませんが、OSパッケージのバージョンが変更されるたびにダミーパッケージの再構築を続ける必要があります。

13
hampercm

これは、nvmがソフトウェアを配布する方法に関する問題です。彼らは単にディストリビューション固有のパッケージングを行っていません。具体的には、nvmを簡単に読んで、バイナリをwgetしているだけです。たとえば、nodejs 6用にインストールするものは次のとおりです。 https://nodejs.org/.../lates.../node-v6.3.1-linux-x64.tar.gz This does標準の.debまたは.rpmメタデータが含まれていないため、実際のパッケージを適切にリリースするまで、パッケージマネージャーが実行できるディストリビューションレベルはほとんどなく、互いに競合する可能性があります。適切なパッケージをリリースするnvmのポイントが、ディストリビューション固有のパッケージのサポートに結び付けられているため、彼らが興味を持っているものではないことを理解している場合。その代わりに、nvmというハックがあります。おそらく彼らのgitに対して問題を提出してください。これはnodejsコミュニティによってのみ修正できます。

特に、npmとnvmは現在、コード署名の概念をサポートしていないようです( source )ので、ほとんどのディストリビューションのパッケージマネージャーで十分にサポートされているディストリビューションパッケージングと比較するとこれは、システムパッケージをインストールするためのかなり安全性の低いアプローチです。

5
sevenbitbyte

いいえ、すでに言ったようにできません。 Aptはシステムレベルで動作し、通常のnvmはユーザーレベルでパッケージをインストールします。

次の2つのオプションがあります-

  • Nvm経由で目的のパッケージを使用し、すでにインストールされている他のnvmパッケージを使用するか、

  • apt-getを使用してパッケージをインストールし、すべての依存関係をインストールします。

4
Anwar