CentOS 7 サーバーで、5.x
のバージョンをインストールしようとしていますNode.js
が、何らかの理由で、 がyum
バージョンのインストールを試行し続け、ダウンロード サイトで0.x
バージョンが見つからないためエラーが返されます。このエラーは、 がバージョンファイル名とバージョンURL を連結していることを示しています。これは、 CentOS 7 マシンの の設定に問題があることを示しているものと思われます。0.x
5.x
yum
0.x
5.x
yum
バージョン 5.x をインストールするには、以下に具体的にどのような変更を加える必要がありますか?
根本的なエラーメッセージは次のとおりです。
Error downloading packages:
nodejs-0.10.42-1nodesource.el7.centos.x86_64: [Errno 256] No more mirrors to try.
以下のコードの元となった発行者ページは、以下のリンクからまた、何らかの合併症が起こる可能性もあります。この他のリンクの指示に従った以前の試み以前の試みの痕跡が残っている可能性があるかどうかを調べるために、現在次のコマンドを実行して結果を待っています。grep -rnw '/path/to/somewhere/' -e "pattern"
ノードソースの場所を設定するためのターミナル出力は次のとおりです。
[root@localhost tmp]# curl --silent --location https://rpm.nodesource.com/setup_5.x | bash -
## Installing the NodeSource Node.js 5.x repo...
## Inspecting system...
+ rpm -q --whatprovides redhat-release || rpm -q --whatprovides centos-release || rpm -q --whatprovides cloudlinux-release || rpm -q --whatprovides sl-release
+ uname -m
## Confirming "el7-x86_64" is supported...
+ curl -sLf -o /dev/null 'https://rpm.nodesource.com/pub_5.x/el/7/x86_64/nodesource-release-el7-1.noarch.rpm'
## Downloading release setup RPM...
+ mktemp
+ curl -sL -o '/tmp/tmp.sH82u4Gpap' 'https://rpm.nodesource.com/pub_5.x/el/7/x86_64/nodesource-release-el7-1.noarch.rpm'
## Installing release setup RPM...
+ rpm -i --nosignature --force '/tmp/tmp.sH82u4Gpap'
## Cleaning up...
+ rm -f '/tmp/tmp.sH82u4Gpap'
## Checking for existing installations...
+ rpm -qa 'node|npm' | grep -v nodesource
## Run `yum install -y nodejs` (as root) to install Node.js 5.x and npm.
## You may also need development tools to build native addons:
## `yum install -y gcc-c++ make`
/tmp
上記のコマンドを実行した後のフォルダー の内容の一覧は次のとおりです。
[root@localhost tmp]# ls -al
total 8
drwxrwxrwt. 13 root root 320 Feb 14 06:13 .
dr-xr-xr-x. 19 root root 4096 Jan 29 20:54 ..
drwx------. 2 user user 60 Feb 13 20:05 .esd-1000
drwxrwxrwt. 2 root root 40 Feb 13 20:04 .font-unix
prw-------. 1 root root 0 Feb 13 20:05 hogsuspend
drwxrwxrwt. 2 root root 80 Feb 13 20:05 .ICE-unix
srwxrwxrwx. 1 mongod mongod 0 Feb 13 20:04 mongodb-27017.sock
drwx------. 2 user user 40 Dec 31 1969 orbit-user
drwx------. 2 user user 60 Feb 13 20:05 ssh-AmQyH8IIEC2m
drwx------. 3 root root 60 Feb 13 20:05 systemd-private-74534ca9946043cc88dbe52a38b4344d-colord.service-hDR3Cd
drwx------. 3 root root 60 Feb 13 20:04 systemd-private-74534ca9946043cc88dbe52a38b4344d-rtkit-daemon.service-ZAQmPk
drwxrwxrwt. 2 root root 40 Feb 13 20:04 .Test-unix
drwx------. 2 user user 40 Feb 13 20:08 tracker-extract-files.1000
-r--r--r--. 1 root root 11 Feb 13 20:05 .X0-lock
drwxrwxrwt. 2 root root 60 Feb 13 20:05 .X11-unix
drwxrwxrwt. 2 root root 40 Feb 13 20:04 .XIM-unix
nodejs
以下を使用してインストールを試みた場合の結果は次のとおりですyum
:
[root@localhost tmp]# yum install -y nodejs
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirror.lax.hugeserver.com
* epel: mirror.sfo12.us.leaseweb.net
* extras: mirror.keystealth.org
* updates: mirror.supremebytes.com
Resolving Dependencies
--> Running transaction check
---> Package nodejs.x86_64 0:0.10.42-1nodesource.el7.centos will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================================================================================================================
Package Arch Version Repository Size
================================================================================================================================================================================
Installing:
nodejs x86_64 0.10.42-1nodesource.el7.centos nodesource 4.5 M
Transaction Summary
================================================================================================================================================================================
Install 1 Package
Total download size: 4.5 M
Installed size: 16 M
Downloading packages:
No Presto metadata available for nodesource
nodejs-0.10.42-1nodesource.el7 FAILED
https://rpm.nodesource.com/pub_5.x/el/7/x86_64/nodejs-0.10.42-1nodesource.el7.centos.x86_64.rpm: [Errno 14] HTTPS Error 404 - Not Found ] 0.0 B/s | 0 B --:--:-- ETA
Trying other mirror.
To address this issue please refer to the below knowledge base article
https://access.redhat.com/articles/1320623
If above article doesn't help to resolve this issue please create a bug on https://bugs.centos.org/
Error downloading packages:
nodejs-0.10.42-1nodesource.el7.centos.x86_64: [Errno 256] No more mirrors to try.
[root@localhost tmp]#
記録によると、gedit /etc/yum.repos.d/nodesource-el.repo
次のようになります。
[nodesource]
name=Node.js Packages for Enterprise Linux 7 - $basearch
baseurl=https://rpm.nodesource.com/pub_5.x/el/7/$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/NODESOURCE-GPG-SIGNING-KEY-EL
[nodesource-source]
name=Node.js for Enterprise Linux 7 - $basearch - Source
baseurl=https://rpm.nodesource.com/pub_5.x/el/7/SRPMS
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/NODESOURCE-GPG-SIGNING-KEY-EL
gpgcheck=1
この問題は、以前に次のコマンドを実行したことが原因であると思われます:
curl --silent --location rpm.nodesource.com/setup | bash -
根本的な問題は、yumがそれらの結果をどのように保存するかということにあると推測しています。curl --silent --location ... | bash - commands
制御ケース:
別の仮想マシンに CentOS 7 を完全に新規インストールしたところ、次の 3 つの簡単なコマンドで、nodejs の正しい最新バージョン 5.x が正常にインストールされました。
# cd /tmp
# curl --silent --location https://rpm.nodesource.com/setup_5.x | bash -
# yum install -y nodejs
# node --version
v5.6.0
コントロール ケースからのこれらの結果は、問題が発生しているマシンでの yum の構成方法に問題があることを示しています。 では、yum が正しいダウンロード URL を生成するように構成されるように、問題のあるマシンに具体的にどのような変更を加える必要があるのでしょうか? すべてを別の VM に移植するのは合理的ではありません。確かに、この問題を解決するには、yum 構成のどこかにある 1 行か 2 行を変更するだけで済みます。
答え1
これはキャッシュの問題だったようですが、何が悪かったのかは不明です。チャットで投稿者と少し話し合った後、実行するとyum clean all
問題は解決しました。
ポスターには次のように記されていました。
[root@localhost yum]# ls /var/cache/yum/x86_64/7/nodesource/packages
nodejs-0.10.42-1nodesource.el7.centos.x86_64.rpm
[root@localhost yum]# yum clean all
[root@localhost yum]# ls /var/cache/yum/x86_64/7/nodesource/packages
[root@localhost yum]# yum install -y nodejs
.... much terminal output during successful install
[root@localhost yum]# node --version
v5.6.0
そのため、yum clean all
キャッシュに保存されていた古いパッケージは削除されました。
ここで何が問題だったのかを説明できるほど、Red Hat ベースのディストリビューションに関する十分な知識や経験がないので、これ以上のコメントは控えさせていただきます。
答え2
私がしなければならなかったことは次のとおりです...
まず、EPEL からインストールされた nodejs パッケージを削除します。
sudo yum remove nodejs
yum リポジトリを一覧表示します:
yum repolist
私のノード リポジトリ エントリは次のようになります。
nodesource/x86_64 Node.js Packages for Enterprise Linux 7 - x86_64
興味があれば、ノード リポジトリ内のパッケージを一覧表示します。
yum --disablerepo="*" --enablerepo="nodesource" list available
次に、ノード リポジトリのみを使用して yum インストールを実行します。
yum --disablerepo="*" --enablerepo="nodesource" install nodejs
私の疑いは、Node リポジトリで使用されている番号付けスキームに何か問題があり、EPEL リポジトリのパッケージの代替として nodejs が提示されないということなのですが、これは単なる推測です。
答え3
yum
インストールしたいバージョンではなく、構成されたリポジトリで利用可能なバージョンを取得しようとします。
公式に提供されているバージョンを上書きするパッケージをインストールすると、多くの場合微妙な方法で確実にシステムを壊してしまいます。Node.js リポジトリはまさにそれをしようとしているようです。何が利用可能か、サードパーティのリポジトリが何を提供しているか、破損を回避するためにどのような安全策が講じられているか、もっと注意深く調べてください。
おそらく、より健全な解決策は、自分のアカウント専用のパッケージをソースから直接インストールすることでしょうか?