Ось мій 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
але node-4.6.0.xz продовжувати встановлюватись у / opt замість /opt/nodejs/node-4.6.0 або / opt / nodejs
Відповіді:
0 для відповіді № 1Можливо, ваш архів створений за допомогою tar -P
-P, --absolute-names
Don"t strip leading slashes from file names when creating archives.
Тоді можливо витягнути його до поточного каталогу, ви можете перелічити свій архів tar, запустивши tar tvf node-4.6.0.xz
.
До речі. Замість того, щоб робити каталог / bash блок "shenanigans", слід використовувати ковчег ресурс с :dump
/:put
дія
0 для відповіді № 2
Не прямо відповідати на ваше запитання, але якщо ви не хочете все це робити, у мене є кулінарна книга спільноти Poise-javascript, яка керує всім цим та іншим.
0 для відповіді № 3
tar -C /opt/nodejs -xvf node-#{node["nodejs"]["version"]}.xz
зробив трюк Дякую @Szymon