Hier ist mein nodejs_from_binary.rb
Chef::Recipe.send(:include, NodeJs::Helper)
node.force_override["nodejs"]["install_method"] = "binary" # ~FC019
# Shamelessly borrowed from http://docs.opscode.com/dsl_recipe_method_platform.html
# Surely there"s a more canonical way to get arch?
arch = if node["kernel"]["machine"] =~ /armv6l/
"arm-pi" # assume a raspberry pi
else
node["kernel"]["machine"] =~ /x86_64/ ? "x64" : "x86"
end
# package_stub is for example: "node-v0.8.20-linux-x64.tar.gz"
version = "v#{node["nodejs"]["version"]}/"
prefix = node["nodejs"]["prefix_url"][node["nodejs"]["engine"]]
if node["nodejs"]["engine"] == "iojs"
filename = "iojs-v#{node["nodejs"]["version"]}-linux-#{arch}.tar.gz"
archive_name = "iojs-binary"
binaries = ["bin/iojs", "bin/node"]
else
filename = "node-#{node["nodejs"]["version"]}.gz"
archive_name = "nodejs-binary"
binaries = ["bin/node"]
end
binaries.push("bin/npm") if node["nodejs"]["npm"]["install_method"] == "binary"
directory "/opt/nodejs/" do
owner "root"
group "root"
mode "0755"
recursive true
action :create
end
bash "get the nodejs-#{node["nodejs"]["version"]} from nexus" do
cwd ::File.dirname("/opt/nodejs/node-#{node["nodejs"]["version"]}")
code <<-EOH
wget http://#{node["nexus_ipaddress"]}:8080/nexus/content/repositories/thirdparty/com/nodejs/node/#{node["nodejs"]["version"]}/node-#{node["nodejs"]["version"]}.xz
tar -xvf node-#{node["nodejs"]["version"]}.xz
EOH
end
Der Knoten-4.6.0.xz wird jedoch weiterhin auf / opt anstelle von /opt/nodejs/node-4.6.0 oder / opt / nodejs installiert
Antworten:
0 für die Antwort № 1Möglicherweise wurde Ihr Archiv mit erstellt tar -P
-P, --absolute-names
Don"t strip leading slashes from file names when creating archives.
Dann kann es nicht möglich sein, in das aktuelle Verzeichnis zu extrahieren. Sie können Ihr tar-Archiv auflisten, indem Sie ausführen tar tvf node-4.6.0.xz
.
BTW. Anstelle des Verzeichnisses / bash-Blocks "shenanigans" sollten Sie verwenden Arche Ressource mit :dump
/:put
Aktion.
0 für die Antwort № 2
Um Ihre Frage nicht direkt zu beantworten, aber wenn Sie nicht all das tun wollen, habe ich ein Poise-Javascript Community-Kochbuch, das all dies und mehr verwaltet.
0 für die Antwort № 3
tar -C /opt/nodejs -xvf node-#{node["nodejs"]["version"]}.xz
hat den Trick gemacht Danke @Szymon