ЗдравствуйтеПредыстория.
В репах убунты по умолчанию древняя версия nodejs. К счастью, есть сторонний резозиторий nodesource. Беда в том, что лентяи из nodesource сделали жесткую привязку ихней ноды ко второму питонуОбойти привязку вроде бы несложно: скачать deb-пакет, и установить командой
sudo dpkg --force-all -i nodejs_14.1.0-1nodesource1_amd64.debБеда в том, что после такого лайфхака ничего более установить не получится. Утилита apt завершается с ошибкой:
Unmet dependencies. Try 'apt --fix-broken install' with no packagesА если скомандовать этот самый 'apt --fix-broken install', то установится ненужный python2
Подскажите, как поставить пакет nodesource без зависимостей и не вызвать гнева apt? или иной выходи из ситуации
Ссылка на устанавливаемый deb-пакет: https://deb.nodesource.com/node_14.x/pool/main/n/nodejs/
1) А зачем?2) Сделать фейковый пакет, который "Provides: python2" и поставить его перед установкой ноды
> 1) А зачем?Присутствие второго питона в системе вызывает неприятные эмоции )
> 2) Сделать фейковый пакет, который "Provides: python2" и поставить его перед установкой
> нодыКак вариант. Или подправить зависимости в этом пакете. Но может есть способ без колдовства с файлами. Команда какая-нибудь
>> 1) А зачем?
> Присутствие второго питона в системе вызывает неприятные эмоции )Имхо, система с поломанными зависимостями -- больший повод для беспокойства
> Присутствие второго питона в системе вызывает неприятные эмоции )это при том, что ты ноду ставишь
1. какая разница, что будет питон?
2. не ломай aptможно еще попробовать тупо распаковать пакет, тогда apt ничего о нем знать не будет и, соответственно, не будет ругаться. Только потом не удивляйся.
> Присутствие второго питона в системе вызывает неприятные эмоции )NodeJS вызывает еще бОльшие неприятные эмоции
Единственно верное решение - собрать ноду нужной вам версии самостоятельно. Опционально убрать в пакет, автоматизировать пересборку на актуальную версию с перепакетированием, локальный репозиторий, вот это всё.
Но первое движение - make && make install
> Единственно верное решение
> make installкак из убунты сделать слаку?
> Единственно верное решение - собрать ноду нужной вам версии самостоятельно. Опционально
> убрать в пакет, автоматизировать пересборку на актуальную версию с перепакетированием,
> локальный репозиторий, вот это всё.
> Но первое движение - make && make installноде <13 нужен питон _2_ для сборки, ибо это гмо использует gypi
Собирайте 14. В любом случае подход "сделай сам" лучше, чем подсесть на чужую сборку, а потом мантейнер ее дропнет или накосячит с ней.
Если ставить из snap то там 15.0.0-nightly20200501e9518254
ну там похоже можно и из stable установить -- 14/stable: 14.1.0
Вроде, нужно дописать знак минус в конце имени ненужного пакета:
https://serverfault.com/questions/250224/how-do-i-get-apt-ge...Запомнит ли Апт это - не знаю. Но, система пакетирования специально придумана и сделана чтобы таких вещей с зависимотями не делалось.
Но - большое достоинство этого мира - оставлена возможность сделать лучше других. :)
А зачем именно apt? None есть на официальном сайте портабельно собранный, просто распаковывается куда нибудь в /opt/nodejs и используется без всяких этих dependency hell.