Данная проблема встречается во многих версиях npm и NodeJS, и, насколько я понимаю, в некоторых случаях может быть актуальна до сих пор, потому решил ответить на вопрос сейчас.
Насколько я понял из гугления, если исключить самую очевидную проблему ("у вас проблемы с инетом"), то причин подобного поведения может быть множество. Я расскажу как я оказался в аналогичном положении и что делал для решения проблемы, возможно кому-то это будет полезно.
В моём случае однажды появился назойливый баг с алиасами Babel, что в итоге потребовало его обновления, а после обновления Бабеля просто перестал собираться проект. Пришлось обновлять Node, затем npm и т.д. В итоге, проект всё же собрался, но появилась проблема, озвученная в вопросе -
npm ci (это почти то же что и
npm install, только ставит строго те версии, которые указаны в package-lock) стал работать ооочень медленно, подолгу зависая на разных случайных пакетах.
Я предположил, что причин у подобной ситуации в итоге может быть две:
- Забился кэш ноды и\или npm - я пробовал npm cache clean --force и удалял все папки, создаваемые при сборке, а также все найденные мною папки cache, это не помогло. В итоге я не придумал ничего лучше, чем полностью удалить Node и npm из системы, что не так-то просто сделать на линуксе.
Для удаления ноды мне лично неплохо помог вот этот пакет https://github.com/brock/node-reinstall (правда руками тоже потом пришлось искать и удалять папки с именами node и npm)... Для свежей установки ноды в сети советуют использовать NVM, однако на мой личный взгляд NVM это паршиво работающее, запутанное и кривое говно, с корявой документацией и постоянно изменяющимся синтаксисом команд, поэтому я так делать не советую (да, я пробовал, он работает, но с ним постоянно возникают какие-то проблемы, поэтому без необходимости иметь две разных ноды на одной машине его лучше всё же не ставить).
Лучше ставьте нужную версию ноды по инструкции с офф.сайта для вашей системы, используя стандартный менеджер пакетов. По крайней мере в случае с Ubuntu 20.04 это сработало отлично. Инструкции для Ubuntu и Debian-based дистрибутивов лежат вот тут: https://github.com/nodesource/distributions/blob/m...
Вообще там по ссылке много вариантов, но вот пример для установки 14-й версии самым простым способом:
# Using Ubuntu
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt-get install -y nodejs
# Using Debian, as root
curl -fsSL https://deb.nodesource.com/setup_lts.x | bash -
apt-get install -y nodejs
- Второй возможный вариант - проблема в том, что для новых версий npm как-то изменились сервера удалённых репозиториев некоторых старых пакетов, из-за их устаревания (я замечал что при попытке установить пакеты чаще всего "фризы" случались именно на старых пакетах, типа третьей версии TypeScript).
Я, к сожалению, не знаю нюансы работы системы репозиториев npm, поэтому это лишь предположение. В данном случае, рекомендация одна - попытаться обновить пакеты до последних версий, и по возможности избавиться от depricated пакетов.
Не претендую на истину, возможно это лишь баг какой-то из версий npm или даже конкретной связки NodeJS + npm. Однако возможно кому-нибудь пригодится предложенный мной путь решения.