/ / кухарська книга кухаря продовжуйте встановлювати дьоготь в / opt - node.js, шеф-кухар

Поварська кухня продовжує встановлювати tar in / opt - node.js, шеф-кухар

Ось мій 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