Yum이 잘못된 버전의 node.js를 설치하려고 하는 이유는 무엇입니까?

Yum이 잘못된 버전의 node.js를 설치하려고 하는 이유는 무엇입니까?

5.xCentOS 7 서버에서 버전 을 설치하려고 하는데 Node.js어떤 이유로 계속 yum버전을 설치하려고 시도하고 다운로드 사이트 에서 0.x버전을 찾을 수 없으면 오류가 반환됩니다 . 오류는 버전 파일 이름을 버전 URL과 연결하고 있음을 나타냅니다. 나는 이것이 CentOS 7 시스템 의 구성에 잘못된 점이 있다고 가정합니다 .0.x5.xyum0.x5.xyum버전 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을 완전히 새로 설치한 경우 다음 세 가지 간단한 명령을 사용하여 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

이는 캐시 문제인 것으로 보이지만 무엇이 잘못되었는지는 확실하지 않습니다. 채팅에서 포스터와 대화를 나눈 후 실행하여 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

내 의심은 nodejs를 EPEL 저장소의 패키지 대체품으로 표시하지 않는 노드 저장소에 사용된 번호 매기기 체계에 뭔가가 있다는 것입니다. 그러나 그것은 단지 추측일 뿐입니다.

답변3

yum설치하려는 버전이 아닌 구성된 리포지토리에서 사용 가능한 버전을 얻으려고 시도합니다.

공식적으로 제공되는 버전을 무시하는 패키지를 설치하는 것은 종종 미묘한 방식으로 시스템을 지치게 하는 확실한 방법입니다. 귀하의 nodejs 저장소가 바로 그 일을 하려고 하는 것 같습니다. 사용 가능한 것이 무엇인지, 타사 저장소가 제공하는 것이 무엇인지, 손상을 방지하기 위해 어떤 보호 장치가 마련되어 있는지 좀 더 주의 깊게 살펴보세요.

아마도 더 건전한 해결책은 소스에서 직접 귀하의 계정에 대한 패키지를 설치하는 것입니까?

관련 정보