所以...
我正在编写一个 ruby 脚本来初始化生产主机以运行应用程序(创建用户组、用户、SSH 密钥等),但我一直在安装 NPM / Node。我不想使用包管理器来安装它,而是简单地获取我想要的版本(在本例中为 6.9.1)的 .tar.xz 文件并将其解压到我想要添加的二进制文件的位置走向我的道路。目前,我们将从Node 下载中获得它...
我找到了我用来尝试让我的脚本正常工作的这个SO 答案。看起来 Ruby 没有开箱即用的方式来处理“.xz”文件,但我的 Ubuntu 发行版确实有更高版本的 tar,因此它可以处理“tar -xJf ...”。我正在考虑做一些类似的事情......
require 'fileutils'
require 'open-uri'
uri = "https://nodejs.org/dist/v6.9.1/node-v6.9.1-linux-x64.tar.xz"
source = open(uri)
data = system("cat", IO.binread(source), "|", "tar", "-xJf", "-")
# put data where I want using FileUtils
...我绝对可以使用中间文件和更多系统命令(甚至只是一个 curl 调用,但我试图尽可能不使用系统调用)。我看到有我可以使用的 Gems ,但我不想包含任何依赖项。关于实现优雅解决方案的任何想法?