Linux에서 Node.JS를 설치/업그레이드하려고 할 때 무엇이 ​​잘못되었나요?

Linux에서 Node.JS를 설치/업그레이드하려고 할 때 무엇이 ​​잘못되었나요?

운영 체제: 리눅스 민트 18.3. 우분투와 유사합니다.

Linux와 마찬가지로 소프트웨어를 설치하는 방법을 잘 모릅니다.

  1. 이미 시스템에 있습니까? 이 경우에는 그렇습니다. 하지만 오래되었습니다: 4.2.6. 이 글을 쓰는 시점에서 현재 LTS 버전은 10.16.3입니다.
  2. 적절한 것을 사용해야합니까?
  3. 소프트웨어 관리자를 사용해야 합니까?
  4. PPA를 사용해야 하나요?
  5. zip 파일을 다운로드해서 압축을 풀어야 하나요?

다른 사용자의 소프트웨어 관리자 리뷰는 "최신 버전을 얻으려면 여기로 이동하세요"였습니다(https://github.com/nodesource/distributions/blob/master/README.md#installation-instructions)

첫 번째 명령은

curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -

실패합니다.

> 
mike@M17A ~ $  curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
[sudo] password for mike: 

## Installing the NodeSource Node.js 10.x repo...


## Populating apt-get cache...

+ apt-get update
Ign:1 http://dl.google.com/linux/chrome/deb stable InRelease
Hit:2 http://archive.ubuntu.com/ubuntu xenial InRelease                        
Hit:3 http://dl.google.com/linux/chrome/deb stable Release                     
Hit:4 http://ppa.launchpad.net/adabbas/1stppa/ubuntu xenial InRelease          
Get:5 http://archive.ubuntu.com/ubuntu xenial-updates InRelease [109 kB]       
Get:6 http://security.ubuntu.com/ubuntu xenial-security InRelease [109 kB]     

... // then many messages like this:

Ign:42 https://mirrors.evowise.com/mariadb/repo/10.2/ubuntu serena/main all Packages
Ign:43 https://mirrors.evowise.com/mariadb/repo/10.2/ubuntu serena/main Translation-en_GB
Ign:44 https://mirrors.evowise.com/mariadb/repo/10.2/ubuntu serena/main Translation-en_GB
Ign:44 https://mirrors.evowise.com/mariadb/repo/10.2/ubuntu serena/main Translation-en
Fetched 329 kB in 23s (14.0 kB/s)
Reading package lists... Done
W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://repository.spotify.com stable InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 4773BD5E130D1D45
W: The repository 'https://mirrors.evowise.com/mariadb/repo/10.1/ubuntu serena Release' does not have a Release file.
N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
N: See apt-secure(8) manpage for repository creation and user configuration details.
W: The repository 'https://mirrors.evowise.com/mariadb/repo/10.2/ubuntu serena Release' does not have a Release file.
N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
N: See apt-secure(8) manpage for repository creation and user configuration details.
W: Failed to fetch http://repository.spotify.com/dists/stable/InRelease  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 4773BD5E130D1D45
E: Failed to fetch https://mirrors.evowise.com/mariadb/repo/10.1/ubuntu/dists/serena/main/binary-amd64/Packages  404  Not Found
E: Failed to fetch https://mirrors.evowise.com/mariadb/repo/10.2/ubuntu/dists/serena/main/binary-amd64/Packages  404  Not Found
W: Some index files failed to download. They have been ignored, or old ones used instead.
Error executing command, exiting

...이 모든 mariadb 명령이 무엇에 관한 것인지 잘 모르겠습니다. 내 시스템에 MariaDB가 있는데 뭔가 잘못될까봐 걱정됩니다.

다음 명령을 시도하면 이것이 실패했음을 나타내는 것 같습니다.

mike@M17A ~ $  sudo apt-get install -y nodejs
Reading package lists... Done
Building dependency tree       
Reading state information... Done
nodejs is already the newest version (4.2.6~dfsg-1ubuntu4.2).
0 to upgrade, 0 to newly install, 0 to remove and 600 not to upgrade.

...즉, 시스템은 여전히 ​​4.2.6을 최신 버전으로 생각합니다.

보다 일반적으로 Linux에 새 소프트웨어를 설치하기 위한 프로토콜은 정확히 무엇입니까? 위의 번호 목록(1~5)이 올바른 접근 방식입니까? 전문가는 새 소프트웨어를 설치할 때 어떤 우선순위를 사용합니까?

나는 그런 다음 시도했다

sudo apt-get update실패가 문제의 근원인 것 같습니다 .

다른 질문에서 영감을 받아 다음을 시도했습니다.

sudo rm /var/lib/apt/lists/* -vf

다음은 다음과 같습니다.

sudo apt-get update

더 많은 오류 및 경고 목록은 나에게 큰 의미가 없습니다.

...
Err:40 https://mirrors.evowise.com/mariadb/repo/10.2/ubuntu serena/main amd64 Packages
  404  Not Found
Ign:41 https://mirrors.evowise.com/mariadb/repo/10.2/ubuntu serena/main i386 Packages
Ign:42 https://mirrors.evowise.com/mariadb/repo/10.2/ubuntu serena/main all Packages
Ign:43 https://mirrors.evowise.com/mariadb/repo/10.2/ubuntu serena/main Translation-en_GB
Ign:44 https://mirrors.evowise.com/mariadb/repo/10.2/ubuntu serena/main Translation-en
Fetched 329 kB in 28s (11.6 kB/s)
Reading package lists... Done
W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://repository.spotify.com stable InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 4773BD5E130D1D45
W: The repository 'https://mirrors.evowise.com/mariadb/repo/10.1/ubuntu serena Release' does not have a Release file.
N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
N: See apt-secure(8) manpage for repository creation and user configuration details.
W: The repository 'https://mirrors.evowise.com/mariadb/repo/10.2/ubuntu serena Release' does not have a Release file.
N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
N: See apt-secure(8) manpage for repository creation and user configuration details.
W: Failed to fetch http://repository.spotify.com/dists/stable/InRelease  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 4773BD5E130D1D45
E: Failed to fetch https://mirrors.evowise.com/mariadb/repo/10.1/ubuntu/dists/serena/main/binary-amd64/Packages  404  Not Found
E: Failed to fetch https://mirrors.evowise.com/mariadb/repo/10.2/ubuntu/dists/serena/main/binary-amd64/Packages  404  Not Found
W: Some index files failed to download. They have been ignored, or old ones used instead.

나중에 github 페이지에서 "수동 설치"를 시도했습니다 ... 같은 방식으로 실패합니다.

mike@M17A ~ $  VERSION=node_10.16.3
mike@M17A ~ $  DISTRO="$(lsb_release -s -c)"
mike@M17A ~ $  echo "deb https://deb.nodesource.com/$VERSION $DISTRO main" | sudo tee /etc/apt/sources.list.d/nodesource.list
deb https://deb.nodesource.com/node_10.16.3 sylvia main
mike@M17A ~ $  echo "deb-src https://deb.nodesource.com/$VERSION $DISTRO main" | sudo tee -a /etc/apt/sources.list.d/nodesource.list
deb-src https://deb.nodesource.com/node_10.16.3 sylvia main
mike@M17A ~ $  sudo apt-get update
Hit:1 http://ppa.launchpad.net/adabbas/1stppa/ubuntu xenial InRelease
...

Ign:57 https://deb.opera.com/opera-stable stable/non-free Translation-en
Err:58 https://deb.opera.com/opera-stable stable/non-free amd64 Packages
  503  Backend unavailable, connection timeout
Ign:59 https://deb.opera.com/opera-stable stable/non-free i386 Packages
Fetched 3,316 B in 34s (95 B/s)
Reading package lists... Done
W: The repository 'https://deb.nodesource.com/node_10.x sylvia Release' does not have a Release file.
N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
N: See apt-secure(8) manpage for repository creation and user configuration details.
W: GPG error: http://repository.spotify.com stable InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 4773BD5E130D1D45
W: The repository 'http://repository.spotify.com stable InRelease' is not signed.
N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
N: See apt-secure(8) manpage for repository creation and user configuration details.
W: The repository 'https://mirrors.evowise.com/mariadb/repo/10.1/ubuntu serena Release' does not have a Release file.
N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
N: See apt-secure(8) manpage for repository creation and user configuration details.
W: The repository 'https://mirrors.evowise.com/mariadb/repo/10.2/ubuntu serena Release' does not have a Release file.
N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
N: See apt-secure(8) manpage for repository creation and user configuration details.
W: The repository 'https://deb.opera.com/opera-stable stable Release' does not have a Release file.
N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
N: See apt-secure(8) manpage for repository creation and user configuration details.
E: Failed to fetch https://deb.nodesource.com/node_10.x/dists/sylvia/main/binary-amd64/Packages  404  Not Found
E: Failed to fetch https://mirrors.evowise.com/mariadb/repo/10.1/ubuntu/dists/serena/main/binary-amd64/Packages  404  Not Found
E: Failed to fetch https://mirrors.evowise.com/mariadb/repo/10.2/ubuntu/dists/serena/main/binary-amd64/Packages  404  Not Found
E: Failed to fetch https://deb.opera.com/opera-stable/dists/stable/non-free/binary-amd64/Packages  503  Backend unavailable, connection timeout
E: Some index files failed to download. They have been ignored, or old ones used instead.

답변1

설치하면 Linux 배포판에서 안정적인 것으로 테스트된 버전을 얻게 됩니다 node.js. sudo apt install nodejs이는 또한 상당히 오래된 버전의 소프트웨어를 받게 되며 일부 패키지는 해당 소프트웨어의 사용을 거부한다는 의미이기도 합니다. 예를 들어, Rocket.Chatrequire 의 현재 버전은 10.x와 비슷 node.js >= 12하지만 내 공식 버전은 10.x입니다. Ubuntu 20.04질문을 작성할 당시에는 꽤 새로운 질문이었을 것이므로 다음 명령을 사용했습니다.

curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -

버전을 설치하는 스크립트를 실행합니다 node.js-10.x.

내가 알 수 있는 한, 스크립트가 불평하는 문제는 사용 중인 일부 저장소에 대한 공개 키를 찾을 수 없다는 것입니다. 주요 문제는 root사용자의 이상한 설정 으로 인해 발생하는 경우가 많으며 , 이로 인해 키 파일에 대한 잘못된 권한이 발생합니다.

해결책은 디렉토리 권한을 확인하는 것입니다

$ ls -l /etc/apt/sources.list.d/
$ ls -l /usr/share/keyrings/

다음과 같아야 합니다( -rw-r--r--예, 허가 644).

-rw-r--r-- 1 root root  2206 Aug 25 00:40 nodesource.gpg

일부 파일의 출력이 다른 경우 수동으로 변경하십시오.

sudo chmod 644 /usr/share/keyrings/nodesource.gpg

답변2

나는 성공했다. 마침내 설치 스크립트를 조정해야 한다는 것을 깨달았습니다.

구체적으로 이것은 다음과 같습니다.여기. 그러나 CURL 명령을 실행하는 대신 해당 URL에서 스크립트를 다운로드하고 "apt-get update"로 이 두 줄을 주석 처리한 다음 파일 이름을 지정하고 실행 가능하게 만들고 실행했습니다.

그럼 나는 갔다

sudo apt-get update

그럼 나는 갔다

sudo apt-get install nodejs

그 이유는 apt-get update현재 내 시스템에서 오류가 반환되고나타나다소스 목록에 PPA를 설정하기 전에 스크립트가 종료됩니다(올바른 용어인가요?). 나는 이것에 대해 틀릴 수 있습니다. 나는 낮은 수준의 Linux 사용자입니다.

스크립트가 필요한 것 같습니다. 특히 파일이 내 시스템에 있는 "Linux Mint"-"sylvia"에서 "Ubuntu"-"xenial"로 "번역"되는 섹션이 있다는 것을 알았습니다. 실제로 다운로드 사이트에는 ".../Linux Mint/sylvia/..."라는 URL이 존재하지 않고 404를 반환합니다.

관련 정보