Подтвердить что ты не робот

Установите heroku cli на linux * без * root и * без автоматического обновления *

Я профессор CS, пытающийся научить веб-разработке приложений (Flask, Rails, SparkJava и т.д.) с помощью Heroku.

Наша вычислительная среда представляет собой централизованно управляемую систему Linux, где ни у студентов, ни у меня нет прав на root. У студентов также очень ограниченные квоты на файлы и диски: 200 МБ пространства и 4000 отдельных файлов.

Раньше я мог предоставить им возможность предоставить им доступ к инструментальной панели Heroku, взломав "автономную установку", чтобы обойти предположение по умолчанию о том, что у человека, выполняющего установку, есть права на root.

Но он больше не работает. Когда я устанавливаю в каталог и запускаю оттуда, toolbelt heroku пытается "автоматически обновить" в ~/.local/share для каждого отдельного пользователя, а так как установка heroku-cli содержит более 12000 файлов (!) он удаляет свою квоту файла.

Это безумие. Я хочу, чтобы у меня была только одна установка клиента toolkelt heroku, обновляйте его централизованно, а НЕ у каждого ученика должна быть своя копия. Это слишком много, чтобы спросить? Есть ли способ сделать это?

Раньше существовал какой-то трюк, чтобы заставить клиента думать, что он был уже обновлен или каким-то образом настроить его, чтобы НЕ выполнять автоматическое обновление. Но я не могу найти, как это сделать.

(Спасибо заранее за все ваши хорошие идеи, такие как: заставить их работать на своих ноутбуках, создавать виртуальную машину, работать с ними на AWS и т.д. Это все отличные идеи для какой-то параллельной вселенной, в которой они возможны Если бы я мог использовать любую другую вычислительную среду, я бы уже делал это. Это тот, который у меня есть. Если я не могу сделать работу герою здесь, я просто не могу использовать герою в классе. И ее разочарование, потому что он работал.)

4b9b3361

Ответ 1

В качестве быстрого и грязного решения вы можете в lib/heroku/updater.rb изменить

def self.needs_update?
  compare_versions(latest_version, latest_local_version) > 0
end

к

def self.needs_update?
  false
end

и вы больше не будете прослушивать обновления. Вы должны делать это каждый раз, когда хотите обновить вручную.

Лучшим более удобным решением было бы получить значение конфигурации или что-то подобное для управления этим поведением, принятым выше по течению в наборе инструментов, который является открытым исходным кодом в https://github.com/heroku/heroku