web-dev-qa-db-ja.com

yumが間違ったバージョンのnode.jsをインストールしようとするのはなぜですか?

CentOS 7サーバーに5.xのバージョンNode.jsをインストールしようとしていますが、何らかの理由でyumがバージョン0.xのインストールを試み、エラーが返されます。 0.xダウンロードサイトでバージョン5.xが見つかりません。エラーは、yumがバージョン0.xファイル名とバージョン5.x urlを連結していることを示しています。これは、CentOS 7マシンの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"

Nodesourceの場所を設定するための端末出力を次に示します。

[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つの簡単なコマンドにより、正しい現在のバージョン5.xのnodejsが正常にインストールされました。

# 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行にすぎません。

5
CodeMed

これはキャッシュの問題のようですが、何が問題だったかは不明です。チャットでポスターと会話した後、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ベースのディストリビューションに関する十分な知識や経験がないので、ここで何が問題だったかを説明できないので、これ以上のコメントは控えます。

7
Faheem Mitha

これが私がしなければならなかったことです...

まず、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 installを実行します。

yum --disablerepo="*" --enablerepo="nodesource" install nodejs

私の疑いは、ノードリポジトリで使用されている番号付けスキームについて、EPELリポジトリのパッケージの代わりとしてnodejsを提示しないものがあるということですが、それは単なる推測です。

2
Ryan

yumは、インストールするものではなく、設定されたリポジトリで利用可能なバージョンを取得しようとします。

正式に提供されたバージョンを上書きするパッケージをインストールすることは、多くの場合微妙な方法でシステムを破壊する確実な方法です。あなたのnodejsリポジトリはそれをやろうとしているようです。何が利用可能であるか、そのサードパーティのリポジトリが何を提供しているか、破損を防ぐためにどのような安全策が講じられているかをより注意深く見てください。

おそらく、より良い解決策は、おそらくソースから直接、あなたのアカウントのためだけにパッケージをインストールすることでしょうか?

1
vonbrand