Удаление старых гемов xenial Ruby после бионического обновления

Когда я обновился до Bionic, Ruby был обновлен с Xenial версии 2.3 по умолчанию до версии Bionic по умолчанию 2.5. Это означает, что программы, предоставляемые Ruby gem, которые я установил с помощью gem install , больше не работают, а gem uninstall не работает, потому что не может найти Ruby 2.3 и вылетает.

Я знаю, что в Ubuntu не рекомендуется использовать gem для установки библиотек Ruby , необходимых для разработки, и я этого не делал, но я использовал его для установки исполняемых программ, которые распространяются таким образом.

(В дальнейшем я намерен использовать checkinstall и / или PPA для таких случаев; теперь я знаю лучше. Но этот вопрос касается очистки.)

Чтобы привести пример, на на данный момент у меня есть неисполняемая версия Rubygem github-linguist , основной исполняемый файл которой установлен в / usr / local / bin / linguist. Я могу установить новый пакет Bionic apt ruby-github-linguist , который помимо установки в / usr / bin , а не в / usr / local / bin , устанавливает свои исполняемые файлы под именами github-linguist и git-linguist , где более старый Rubygem установил linguist и git-linguist (это две разные программы, причем новый github-linguist соответствует старому лингвисту ).

Таким образом, у меня есть не только конфликт имен (и по разным причинам я помещаю / usr / local / bin перед / usr / bin в моем PATH), но и старый версию в / usr / local / bin невозможно выполнить, и удалить gem также не удается.

Как я уже сказал, я усвоил урок, и, надеюсь, сначала сделав такие программы (и подобные им программы, такие как программы на основе Python easy_install или программы Golang) в APT в моем PPA, я выиграл » мне не придется иметь дело с этим, когда я обновляюсь с Bionic.

Но прямо сейчас у меня уже есть этот бесполезный (в лучшем случае) мусор в моей системе. Как мне удалить этот и другие гемы Pre-Bionic Ruby 2.3 из моей системы?

(Я понимаю, что ответ почти наверняка отличается для исполняемых файлов, установленных с помощью Python easy_install , Go go get ], Haskell cabal install , Node npm -i и т. Д. - но если есть один инструмент или стратегия, которые можно использовать в таких случаях, тем лучше.)

0
задан 27 June 2019 в 18:52

1 ответ

При изменении версии ruby ​​ всегда следует запускать gem pristine --extensions для перекомпиляции расширений C. Это может облегчить использование ваших старых драгоценных камней в новой версии Ruby. Вы пробовали это?

Если вы предпочитаете удалить старые гемы, проверьте Удалите старые версии гемов Ruby в Stack Overflow.

В противном случае в Ubuntu есть два способа управления несколькими версиями ruby ​​ и выбор версии по умолчанию:

1) Используйте Ubuntu Snap вместо Apt - это позволит вы можете выбрать, какую версию установить, последнюю или предыдущую. См. Официальный Ruby snap доступен в сообщении на веб-сайте Ruby.org для получения инструкций. Чтобы избежать возможных конфликтов, вы можете сначала удалить существующую установленную версию apt , запустив

sudo apt remove ruby && sudo apt autoremove

. Основным преимуществом установки с помощью snap является официальная поддержка как Ruby.org, так и Ubuntu . Вы можете понизить или обновить используемую версию. Сначала запустите snap info ruby ​​, чтобы вывести список всех доступных версий (в настоящее время с 2.3 по 2.7), а затем следуйте инструкциям, приведенным выше, чтобы выбрать версии для установки (несколько версий могут сосуществовать) и переключаться между ними.

2) Если вы предпочитаете использовать инструмент управления пакетами Debian Apt, вы можете положиться на пакеты Ruby Brightbox PPA для Ubuntu , которые предоставляют вам почти такой же выбор (в настоящее время они еще не предоставляют самая свежая версия 2.7).Здесь вам придется положиться на Brightbox, чтобы продолжать предоставлять оптимизированные пакеты Ruby для Ubuntu, как они делали в течение многих лет. В настоящее время они поддерживают пакеты для Ruby 2.6, 2.5, 2.4, 2.3, 2.2, 2.1, 2.0, 1.9.3 и 1.8.7, и вы также можете переключать версию Ruby по умолчанию между версиями.

0
ответ дан 11 February 2020 в 19:04

Другие вопросы по тегам:

Похожие вопросы: