Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在linux*上安装heroku cli,不带*根目录,*无自动更新*_Heroku_Command Line Interface - Fatal编程技术网

在linux*上安装heroku cli,不带*根目录,*无自动更新*

在linux*上安装heroku cli,不带*根目录,*无自动更新*,heroku,command-line-interface,Heroku,Command Line Interface,我是一名CS教授,试图用Heroku教授web应用程序开发(Flask、Rails、SparkJava等) 我们的计算环境是一个集中管理的Linux系统,学生和我都没有root权限。学生们的文件和磁盘配额也非常有限:200MB的空间和4000个单独的文件 我曾经能够为他们提供一种方法,让他们通过破解“独立安装”来访问Heroku工具带,从而绕过默认的假设,即进行安装的人拥有root权限 但它已经不起作用了。当我安装到一个目录并从那里运行时,Heroku toolbelt会不断尝试为每个用户“自动

我是一名CS教授,试图用Heroku教授web应用程序开发(Flask、Rails、SparkJava等)

我们的计算环境是一个集中管理的Linux系统,学生和我都没有root权限。学生们的文件和磁盘配额也非常有限:200MB的空间和4000个单独的文件

我曾经能够为他们提供一种方法,让他们通过破解“独立安装”来访问Heroku工具带,从而绕过默认的假设,即进行安装的人拥有root权限

但它已经不起作用了。当我安装到一个目录并从那里运行时,Heroku toolbelt会不断尝试为每个用户“自动更新”到~/.local/共享中,并且由于Heroku CLI安装中有12000多个文件(!),这就超出了他们的文件配额

这太疯狂了。我只想安装一个Heroku toolbelt客户端,集中更新,而不是让每个学生都有自己的副本。这要求太高了吗?有没有办法做到这一点

过去有一些技巧可以让客户端认为它已经是最新的,或者通过某种方式将其配置为不执行自动更新。但我不知道怎么做


(提前感谢你所有的好主意,例如:让他们在自己的笔记本电脑上工作,制作虚拟机,让他们在AWS上工作,等等。这些都是一些可行的并行宇宙的伟大想法。如果我可以使用任何其他计算环境,我已经在这样做了。这就是我的想法。如果我不能让Heroku在这里工作,我会只是不能在课堂上使用Heroku。这是令人沮丧的,因为它曾经工作过。)

作为一个快速而肮脏的解决方案,您可以在
lib/Heroku/updater.rb
中进行更改

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

您将不再被更新所困扰。每次手动更新时,您都必须这样做


一个更好的、更易于维护的解决方案是获得一个配置值或类似的值,以控制toolbelt中上游接受的这种行为,toolbelt是开源的

,因此,我刚刚发现了一个备选解决方案。仍然不确定它是否会起作用,但它可能会起作用。在一个具有额外磁盘空间和文件分配的讲师帐户中,我为了能够在./local/share/heroku下更新cli,我随后将讲师的主目录上的权限设置为711,并递归地将~讲师/.local上的权限设置为755。最后,我将~student/.local/share/heroku从~student/.local/share/heroku符号链接到~讲师/.local/share/heroku。此后,学生帐户可以在不触发自动u的情况下运行更新。至少现在是这样。我预计它会在某个时候失败。你能在*nix环境中使用docker吗?如果能,那可能是一个很好的解决方案。你可以构建一个只包含Heroku CLI工具的小型docker容器,让学生直接使用该CLI,而不需要了解docker,contaiNER、VM等。这对最终用户来说是非常透明的。我没有尝试过,但考虑到单个磁盘空间配额是200MB,并且它们的“文件数”配额是4000,我猜docker不是新手。我没有足够的经验来确定。我的小解决办法似乎是暂时完成工作。如果他们更新服务器/API,而你不更新客户端,会发生什么?它可能会停止工作。。。
def self.needs_update?
  false
end