2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ubuntu 20.04でnpmがaptで導入できない場合の対処方法

Posted at

はじめに

Ubuntu20.04にてReactの環境を再度構築しようとして、Ubuntu20.04に最新のnode.jsとTypeScriptをインストールする方法あたりを参考にapt getしてみたが、以下のようにnpm導入でエラーになる事があってInstallできなかった。

ちょこっと調べて解決したので、備忘録として残しておく。

aptでnpmをInstall
sudo apt-get install npm
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
インストールすることができないパッケージがありました。おそらく、あり得
ない状況を要求したか、(不安定版ディストリビューションを使用しているの
であれば) 必要なパッケージがまだ作成されていなかったり Incoming から移
動されていないことが考えられます。
以下の情報がこの問題を解決するために役立つかもしれません:

以下のパッケージには満たせない依存関係があります:
 npm : 依存: node-gyp (>= 3.6.2~) しかし、インストールされようとしていません
E: 問題を解決することができません。壊れた変更禁止パッケージがあります。

解決方法

既に導入していたlibssl-devが依存しているlibssl1.1のバージョンが新しかったのが原因。

  • 既に導入しているlibssl1.1 (= 1.1.1f-1ubuntu2.4)
  • npm導入に必要なパッケージ:libssl-dev : 依存: libssl1.1 (= 1.1.1f-1ubuntu2.3)

このため、libssl1.1 を自分の環境では、1.1.1f-1ubuntu2.3で指定してReInstallすればnpmの導入が可能だった。

$ sudo apt install --reinstall libssl1.1=1.1.1f-1ubuntu2.3
$ sudo apt install npm

あとは、お好みで、node.jsのバージョン固定用に、npmnのpackageを導入。

$ sudo npm install n -g

最後にnでStableのnode.jsを導入すればOKです。

$ sudo n stable

ここまでこれば、最初に入れた古いnode.js,npmは消しちゃってもOK。

$ sudo apt purge -y nodejs npm
$ exec $SHELL -l

試行錯誤した内容

何が悪いか、順に依存関係が満たせないパッケージをInstallしてみた。

node-gypをインストール

node-gypのInstall
$ sudo apt install node-gyp
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
インストールすることができないパッケージがありました。おそらく、あり得
ない状況を要求したか、(不安定版ディストリビューションを使用しているの
であれば) 必要なパッケージがまだ作成されていなかったり Incoming から移
動されていないことが考えられます。
以下の情報がこの問題を解決するために役立つかもしれません:

以下のパッケージには満たせない依存関係があります:
 node-gyp : 依存: libnode-dev しかし、インストールされようとしていません
E: 問題を解決することができません。壊れた変更禁止パッケージがあります。

libnode-dev がInstallできないようなので、次にlibnode-devをInstallしてみる。

libnode-devをインストール

libnode-devのInstall
$ sudo apt install lobnode-dev
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
E: パッケージ lobnode-dev が見つかりません

今度は、lobnode-dev が見つかりませんとのことだったので、lobnode-devをInstallしてみる。

lobnode-devをインストール

lobnode-devのInstall
$ sudo apt install libnode-dev
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
インストールすることができないパッケージがありました。おそらく、あり得
ない状況を要求したか、(不安定版ディストリビューションを使用しているの
であれば) 必要なパッケージがまだ作成されていなかったり Incoming から移
動されていないことが考えられます。
以下の情報がこの問題を解決するために役立つかもしれません:

以下のパッケージには満たせない依存関係があります:
 libnode-dev : 依存: libssl-dev (>= 1.1.1~) しかし、インストールされようとしていません
E: 問題を解決することができません。壊れた変更禁止パッケージがあります。

結局、既に導入していたlibssl-dev(>= 1.1.1~)となっているが満たせないのが分かった。

libssl-devの確認。

まずは、問題を確認するため、apt installでレコメンド情報を見てみる

libssl-devのInstall
$ sudo apt install libssl-dev
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
インストールすることができないパッケージがありました。おそらく、あり得
ない状況を要求したか、(不安定版ディストリビューションを使用しているの
であれば) 必要なパッケージがまだ作成されていなかったり Incoming から移
動されていないことが考えられます。
以下の情報がこの問題を解決するために役立つかもしれません:

以下のパッケージには満たせない依存関係があります:
 libssl-dev : 依存: libssl1.1 (= 1.1.1f-1ubuntu2.3) しかし、1.1.1f-1ubuntu2.4 はインストールされようとしています
E: 問題を解決することができません。壊れた変更禁止パッケージがあります。

libssl1.1 (= 1.1.1f-1ubuntu2.3)をInstallしたいが、apt installでは、1.1.1f-1ubuntu2.4のバージョンでしかInstallされないようなので、強制的に1.1.1f-1ubuntu2.3をダウングレードReInstallしてみる。

libssl-devのダウングレードインストール

前人の知恵として、「Ubuntu 18.04でのlibssl-dev依存関係の問題」を参考にReInstallを試みる。

libssl1.1のダウングレードReInstall
$ sudo apt install --reinstall libssl1.1=1.1.1f-1ubuntu2.3
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下のパッケージは「ダウングレード」されます:
  libssl1.1
アップグレード: 0 個、新規インストール: 0 個、ダウングレード: 1 個、削除: 0 個、保留: 1 個。
1,320 kB のアーカイブを取得する必要があります。
この操作後に 1,024 B のディスク容量が解放されます。
続行しますか? [Y/n] y
取得:1 http://security.ubuntu.com/ubuntu focal-security/main amd64 libssl1.1 amd64 1.1.1f-1ubuntu2.3 [1,320 kB]
1,320 kB を 2秒 で取得しました (625 kB/s)                       
パッケージを事前設定しています ...
dpkg: 警告: libssl1.1:amd64 を 1.1.1f-1ubuntu2.4 から 1.1.1f-1ubuntu2.3 にダウン
グレードしています
(データベースを読み込んでいます ... 現在 241242 個のファイルとディレクトリがイン
ストールされています。)
.../libssl1.1_1.1.1f-1ubuntu2.3_amd64.deb を展開する準備をしています ...
libssl1.1:amd64 (1.1.1f-1ubuntu2.3)(1.1.1f-1ubuntu2.4 に) 上書き展開していま
す ...
libssl1.1:amd64 (1.1.1f-1ubuntu2.3) を設定しています ...
libc-bin (2.31-0ubuntu9.3) のトリガを処理しています ...
sazus@charon:~$ sudo apt install libssl-dev
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
提案パッケージ:
  libssl-doc
以下のパッケージが新たにインストールされます:
  libssl-dev
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 1 個。
1,582 kB のアーカイブを取得する必要があります。
この操作後に追加で 8,006 kB のディスク容量が消費されます。
取得:1 http://security.ubuntu.com/ubuntu focal-security/main amd64 libssl-dev amd64 1.1.1f-1ubuntu2.3 [1,582 kB]
1,582 kB を 2秒 で取得しました (733 kB/s)
以前に未選択のパッケージ libssl-dev:amd64 を選択しています。
(データベースを読み込んでいます ... 現在 241242 個のファイルとディレクトリがイン
ストールされています。)
.../libssl-dev_1.1.1f-1ubuntu2.3_amd64.deb を展開する準備をしています ...
libssl-dev:amd64 (1.1.1f-1ubuntu2.3) を展開しています...
libssl-dev:amd64 (1.1.1f-1ubuntu2.3) を設定しています ...

これでnpm導入に必要なlibssl1.1が導入できたので、あとはsudo apt install npmするだけでOK

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?