はじめに
Ubuntu20.04にてReactの環境を再度構築しようとして、Ubuntu20.04に最新のnode.jsとTypeScriptをインストールする方法あたりを参考にapt get
してみたが、以下のように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のバージョン固定用に、npm
でn
の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をインストール
$ sudo apt install node-gyp
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
インストールすることができないパッケージがありました。おそらく、あり得
ない状況を要求したか、(不安定版ディストリビューションを使用しているの
であれば) 必要なパッケージがまだ作成されていなかったり Incoming から移
動されていないことが考えられます。
以下の情報がこの問題を解決するために役立つかもしれません:
以下のパッケージには満たせない依存関係があります:
node-gyp : 依存: libnode-dev しかし、インストールされようとしていません
E: 問題を解決することができません。壊れた変更禁止パッケージがあります。
libnode-dev がInstallできないようなので、次にlibnode-dev
をInstallしてみる。
libnode-devをインストール
$ sudo apt install lobnode-dev
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
E: パッケージ lobnode-dev が見つかりません
今度は、lobnode-dev が見つかりません
とのことだったので、lobnode-dev
をInstallしてみる。
lobnode-devをインストール
$ sudo apt install libnode-dev
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
インストールすることができないパッケージがありました。おそらく、あり得
ない状況を要求したか、(不安定版ディストリビューションを使用しているの
であれば) 必要なパッケージがまだ作成されていなかったり Incoming から移
動されていないことが考えられます。
以下の情報がこの問題を解決するために役立つかもしれません:
以下のパッケージには満たせない依存関係があります:
libnode-dev : 依存: libssl-dev (>= 1.1.1~) しかし、インストールされようとしていません
E: 問題を解決することができません。壊れた変更禁止パッケージがあります。
結局、既に導入していたlibssl-dev
が(>= 1.1.1~)
となっているが満たせないのが分かった。
libssl-devの確認。
まずは、問題を確認するため、apt 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を試みる。
$ 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