«Пытается перезаписать '/usr/share/man/man1/node.1.gz', который также находится в пакете nodejs-legacy 0.10.25 ~ dfsg2-2ubuntu1»

9

Я пытаюсь установить nodejs, но он постоянно терпит неудачу. Прилагается журнал

$ sudo apt-get install nodejs
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libc-ares2 libv8-3.14.5
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
  rlwrap
The following NEW packages will be installed:
  rlwrap
The following packages will be upgraded:
  nodejs
1 upgraded, 1 newly installed, 0 to remove and 11 not upgraded.
Need to get 0 B/4,391 kB of archives.
After this operation, 14.9 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Selecting previously unselected package rlwrap.
(Reading database ... 263979 files and directories currently installed.)
Preparing to unpack .../rlwrap_0.37-5_amd64.deb ...
Unpacking rlwrap (0.37-5) ...
Selecting previously unselected package nodejs.
Preparing to unpack .../nodejs_0.10.31-1chl1~trusty1_amd64.deb ...
Unpacking nodejs (0.10.31-1chl1~trusty1) over (0.10.25~dfsg2-2ubuntu1) ...
dpkg: error processing archive /var/cache/apt/archives/nodejs_0.10.31-1chl1~trusty1_amd64.deb (--unpack):
 trying to overwrite '/usr/share/man/man1/node.1.gz', which is also in package nodejs-legacy 0.10.25~dfsg2-2ubuntu1
dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
Processing triggers for man-db (2.6.7.1-1) ...
Errors were encountered while processing:
 /var/cache/apt/archives/nodejs_0.10.31-1chl1~trusty1_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
Шаш
источник
Вы можете запустить sudo apt-get updateи sudo apt-get upgrade?
Чарльз Грин
@CharlesGreen Я могу заставить его работать. Я сам ответил на мой вопрос.
Shash

Ответы:

10

Потенциально исправление установки

Как сказал Чарльз в комментариях, я хотел бы попробовать запустить sudo apt-get updateи sudo apt-get upgrade. Вы также можете запустить, sudo apt-get autoremoveчтобы удалить пакеты, которые вам больше не нужны.

Ошибка упоминает nodejs-legacyпакет. Если вы когда-либо устанавливали это, вы можете удалить его.

Лучший способ установить Node в Ubuntu

Если вы не планируете использовать свой компьютер в качестве рабочего сервера, я настоятельно рекомендую установить Node.js с помощью инструмента NVM . Установка из репозитория требует использования sudo, что приводит к грязным разрешениям при попытке установить модули Node с помощью NPM.

В качестве бонуса NVM позволяет вам установить несколько версий Node и поддерживать вашу копию Node в актуальном состоянии, даже если официальные репозитории уже позади.

Возьмите последнюю копию NVM

curl https://raw.githubusercontent.com/creationix/nvm/v0.15.0/install.sh | bash

Скажите вашей оболочке использовать nvm

source ~/.nvm/nvm.sh

Затем установите версию узла

nvm install 0.10

И скажите nvm, какую версию Node вы хотите использовать

nvm use 0.10
Майкл Мартин-Смукер
источник
1
Спасибо тебе за это. Рассказ о nvm действительно помог мне. Я так устал от борьбы с разрешениями.
Chev
Вы также можете решить проблемы с разрешениями, обновив путь префикса в ~ / .npmrc, чтобы вы указывали на домашний каталог.
богатый ремер
8

Одна вещь, которую я пропустил, это очистить предыдущую установку и переустановить. Я использовал следующую команду, чтобы удалить предыдущую установку

sudo apt-get purge nodejs-legacy nodejs

а также

sudo apt-get install nodejs

переустановить nodejs.

Ссылка на SO ответ, который помог мне

Шаш
источник
Ах, ты понял это до того, как я закончил печатать! :) Тем не менее, я бы порекомендовал заглянуть в NVM, так что вы можете не делать sudo npm installкаждый раз, когда хотите установить модули с npm.
Майкл Мартин-Смукер