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


15

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

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

回答:


13

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

それが実際に可能でない場合は、しかし、あなたは「ダミー」を作成することができるかもしれ.deb使用してパッケージをequivs-controlしてequivs-build伝えるためにaptあなたが依存関係がインストールされていること。あなたが物事を間違えた場合、これは潜在的に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 <yourname@example.com>
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パッケージのバージョンが変更されるたびにダミーパッケージの再構築を続ける必要があります。


1
返信ありがとうございます!私のランキングは低いので、賛成票は数えませんが、投票しました!
Louisgv

3
@Louisgvこれがあなたの質問に答えたなら、それを受け入れることを検討してください
スパイダーボリス

馬具について知らなかった。これは素晴らしいツールです、ありがとう!
ブランディッツィ

5

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

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


4

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

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.