natives 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +15 -0
- data/.document +5 -0
- data/.rspec +1 -0
- data/Gemfile +17 -0
- data/Gemfile.lock +137 -0
- data/LICENSE.txt +20 -0
- data/README.rdoc +19 -0
- data/Rakefile +42 -0
- data/VERSION +1 -0
- data/bin/natives +7 -0
- data/chef-solo/.gitignore +17 -0
- data/chef-solo/.kitchen.yml +27 -0
- data/chef-solo/Berksfile +4 -0
- data/chef-solo/config.rb +17 -0
- data/chef-solo/vendored-cookbooks/apt/CHANGELOG.md +144 -0
- data/chef-solo/vendored-cookbooks/apt/README.md +247 -0
- data/chef-solo/vendored-cookbooks/apt/attributes/default.rb +27 -0
- data/chef-solo/vendored-cookbooks/apt/files/default/apt-proxy-v2.conf +50 -0
- data/chef-solo/vendored-cookbooks/apt/libraries/helpers.rb +47 -0
- data/chef-solo/vendored-cookbooks/apt/libraries/network.rb +33 -0
- data/chef-solo/vendored-cookbooks/apt/metadata.json +54 -0
- data/chef-solo/vendored-cookbooks/apt/metadata.rb +34 -0
- data/chef-solo/vendored-cookbooks/apt/providers/preference.rb +61 -0
- data/chef-solo/vendored-cookbooks/apt/providers/repository.rb +141 -0
- data/chef-solo/vendored-cookbooks/apt/recipes/cacher-client.rb +81 -0
- data/chef-solo/vendored-cookbooks/apt/recipes/cacher-ng.rb +43 -0
- data/chef-solo/vendored-cookbooks/apt/recipes/default.rb +83 -0
- data/chef-solo/vendored-cookbooks/apt/resources/preference.rb +30 -0
- data/chef-solo/vendored-cookbooks/apt/resources/repository.rb +41 -0
- data/chef-solo/vendored-cookbooks/apt/templates/debian-6.0/acng.conf.erb +173 -0
- data/chef-solo/vendored-cookbooks/apt/templates/default/01proxy.erb +5 -0
- data/chef-solo/vendored-cookbooks/apt/templates/default/acng.conf.erb +275 -0
- data/chef-solo/vendored-cookbooks/apt/templates/ubuntu-10.04/acng.conf.erb +269 -0
- data/chef-solo/vendored-cookbooks/homebrew/CHANGELOG.md +36 -0
- data/chef-solo/vendored-cookbooks/homebrew/README.md +110 -0
- data/chef-solo/vendored-cookbooks/homebrew/attributes/default.rb +22 -0
- data/chef-solo/vendored-cookbooks/homebrew/libraries/homebrew_mixin.rb +53 -0
- data/chef-solo/vendored-cookbooks/homebrew/libraries/homebrew_package.rb +104 -0
- data/chef-solo/vendored-cookbooks/homebrew/metadata.json +32 -0
- data/chef-solo/vendored-cookbooks/homebrew/metadata.rb +10 -0
- data/chef-solo/vendored-cookbooks/homebrew/providers/tap.rb +48 -0
- data/chef-solo/vendored-cookbooks/homebrew/recipes/default.rb +46 -0
- data/chef-solo/vendored-cookbooks/homebrew/resources/tap.rb +35 -0
- data/lib/natives/app.rb +53 -0
- data/lib/natives/cli.rb +11 -0
- data/lib/natives.rb +0 -0
- data/natives.gemspec +113 -0
- data/spec/natives/app_spec.rb +68 -0
- data/spec/spec_helper.rb +12 -0
- metadata +224 -0
@@ -0,0 +1,141 @@
|
|
1
|
+
#
|
2
|
+
# Cookbook Name:: apt
|
3
|
+
# Provider:: repository
|
4
|
+
#
|
5
|
+
# Copyright 2010-2011, Opscode, Inc.
|
6
|
+
#
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
8
|
+
# you may not use this file except in compliance with the License.
|
9
|
+
# You may obtain a copy of the License at
|
10
|
+
#
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
12
|
+
#
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16
|
+
# See the License for the specific language governing permissions and
|
17
|
+
# limitations under the License.
|
18
|
+
#
|
19
|
+
|
20
|
+
use_inline_resources if defined?(use_inline_resources)
|
21
|
+
|
22
|
+
def whyrun_supported?
|
23
|
+
true
|
24
|
+
end
|
25
|
+
|
26
|
+
# install apt key from keyserver
|
27
|
+
def install_key_from_keyserver(key, keyserver)
|
28
|
+
execute "install-key #{key}" do
|
29
|
+
if !node['apt']['key_proxy'].empty?
|
30
|
+
command "apt-key adv --keyserver-options http-proxy=#{node['apt']['key_proxy']} --keyserver hkp://#{keyserver}:80 --recv #{key}"
|
31
|
+
else
|
32
|
+
command "apt-key adv --keyserver #{keyserver} --recv #{key}"
|
33
|
+
end
|
34
|
+
action :run
|
35
|
+
not_if do
|
36
|
+
extract_fingerprints_from_cmd("apt-key finger").any? do |fingerprint|
|
37
|
+
fingerprint.end_with?(key.upcase)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
# run command and extract gpg ids
|
44
|
+
def extract_fingerprints_from_cmd(cmd)
|
45
|
+
so = Mixlib::ShellOut.new(cmd)
|
46
|
+
so.run_command
|
47
|
+
so.stdout.split(/\n/).collect do |t|
|
48
|
+
if z = t.match(/^ +Key fingerprint = ([0-9A-F ]+)/)
|
49
|
+
z[1].split.join
|
50
|
+
end
|
51
|
+
end.compact
|
52
|
+
end
|
53
|
+
|
54
|
+
# install apt key from URI
|
55
|
+
def install_key_from_uri(uri)
|
56
|
+
key_name = uri.split(/\//).last
|
57
|
+
cached_keyfile = "#{Chef::Config[:file_cache_path]}/#{key_name}"
|
58
|
+
if new_resource.key =~ /http/
|
59
|
+
remote_file cached_keyfile do
|
60
|
+
source new_resource.key
|
61
|
+
mode 00644
|
62
|
+
action :create
|
63
|
+
end
|
64
|
+
else
|
65
|
+
cookbook_file cached_keyfile do
|
66
|
+
source new_resource.key
|
67
|
+
cookbook new_resource.cookbook
|
68
|
+
mode 00644
|
69
|
+
action :create
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
execute "install-key #{key_name}" do
|
74
|
+
command "apt-key add #{cached_keyfile}"
|
75
|
+
action :run
|
76
|
+
not_if do
|
77
|
+
installed_keys = extract_fingerprints_from_cmd("apt-key finger")
|
78
|
+
proposed_keys = extract_fingerprints_from_cmd("gpg --with-fingerprint #{cached_keyfile}")
|
79
|
+
(installed_keys & proposed_keys).sort == proposed_keys.sort
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
# build repo file contents
|
85
|
+
def build_repo(uri, distribution, components, trusted, arch, add_deb_src)
|
86
|
+
components = components.join(' ') if components.respond_to?(:join)
|
87
|
+
repo_options = []
|
88
|
+
repo_options << "arch=#{arch}" if arch
|
89
|
+
repo_options << "trusted=yes" if trusted
|
90
|
+
repo_options = "[" + repo_options.join(' ') + "]" unless repo_options.empty?
|
91
|
+
repo_info = "#{uri} #{distribution} #{components}\n"
|
92
|
+
repo_info = "#{repo_options} #{repo_info}" unless repo_options.empty?
|
93
|
+
repo = "deb #{repo_info}"
|
94
|
+
repo << "deb-src #{repo_info}" if add_deb_src
|
95
|
+
repo
|
96
|
+
end
|
97
|
+
|
98
|
+
action :add do
|
99
|
+
# add key
|
100
|
+
if new_resource.keyserver && new_resource.key
|
101
|
+
install_key_from_keyserver(new_resource.key, new_resource.keyserver)
|
102
|
+
elsif new_resource.key
|
103
|
+
install_key_from_uri(new_resource.key)
|
104
|
+
end
|
105
|
+
|
106
|
+
file "/var/lib/apt/periodic/update-success-stamp" do
|
107
|
+
action :nothing
|
108
|
+
end
|
109
|
+
|
110
|
+
execute "apt-get update" do
|
111
|
+
ignore_failure true
|
112
|
+
action :nothing
|
113
|
+
end
|
114
|
+
|
115
|
+
# build repo file
|
116
|
+
repository = build_repo(new_resource.uri,
|
117
|
+
new_resource.distribution,
|
118
|
+
new_resource.components,
|
119
|
+
new_resource.trusted,
|
120
|
+
new_resource.arch,
|
121
|
+
new_resource.deb_src)
|
122
|
+
|
123
|
+
file "/etc/apt/sources.list.d/#{new_resource.name}.list" do
|
124
|
+
owner "root"
|
125
|
+
group "root"
|
126
|
+
mode 00644
|
127
|
+
content repository
|
128
|
+
action :create
|
129
|
+
notifies :delete, "file[/var/lib/apt/periodic/update-success-stamp]", :immediately
|
130
|
+
notifies :run, "execute[apt-get update]", :immediately if new_resource.cache_rebuild
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
action :remove do
|
135
|
+
if ::File.exists?("/etc/apt/sources.list.d/#{new_resource.name}.list")
|
136
|
+
Chef::Log.info "Removing #{new_resource.name} repository from /etc/apt/sources.list.d/"
|
137
|
+
file "/etc/apt/sources.list.d/#{new_resource.name}.list" do
|
138
|
+
action :delete
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
#
|
2
|
+
# Cookbook Name:: apt
|
3
|
+
# Recipe:: cacher-client
|
4
|
+
#
|
5
|
+
# Copyright 2011-2013 Opscode, Inc.
|
6
|
+
#
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
8
|
+
# you may not use this file except in compliance with the License.
|
9
|
+
# You may obtain a copy of the License at
|
10
|
+
#
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
12
|
+
#
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16
|
+
# See the License for the specific language governing permissions and
|
17
|
+
# limitations under the License.
|
18
|
+
#
|
19
|
+
|
20
|
+
class ::Chef::Recipe
|
21
|
+
include ::Apt
|
22
|
+
end
|
23
|
+
|
24
|
+
#remove Acquire::http::Proxy lines from /etc/apt/apt.conf since we use 01proxy
|
25
|
+
#these are leftover from preseed installs
|
26
|
+
execute 'Remove proxy from /etc/apt/apt.conf' do
|
27
|
+
command "sed --in-place '/^Acquire::http::Proxy/d' /etc/apt/apt.conf"
|
28
|
+
only_if "grep Acquire::http::Proxy /etc/apt/apt.conf"
|
29
|
+
end
|
30
|
+
|
31
|
+
servers = []
|
32
|
+
if node['apt']
|
33
|
+
if node['apt']['cacher_ipaddress']
|
34
|
+
cacher = Chef::Node.new
|
35
|
+
cacher.default.name = node['apt']['cacher_ipaddress']
|
36
|
+
cacher.default.ipaddress = node['apt']['cacher_ipaddress']
|
37
|
+
cacher.default.apt.cacher_port = node['apt']['cacher_port']
|
38
|
+
cacher.default.apt_cacher_interface = node['apt']['cacher_interface']
|
39
|
+
servers << cacher
|
40
|
+
elsif node['apt']['caching_server']
|
41
|
+
node.override['apt']['compiletime'] = false
|
42
|
+
servers << node
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
unless (Chef::Config[:solo] || servers.length > 0)
|
47
|
+
query = "apt_caching_server:true"
|
48
|
+
query += " AND chef_environment:#{node.chef_environment}" if node['apt']['cacher-client']['restrict_environment']
|
49
|
+
Chef::Log.debug("apt::cacher-client searching for '#{query}'")
|
50
|
+
servers += search(:node, query)
|
51
|
+
end
|
52
|
+
|
53
|
+
if servers.length > 0
|
54
|
+
Chef::Log.info("apt-cacher-ng server found on #{servers[0]}.")
|
55
|
+
if servers[0]['apt']['cacher_interface']
|
56
|
+
cacher_ipaddress = interface_ipaddress(servers[0], servers[0]['apt']['cacher_interface'])
|
57
|
+
else
|
58
|
+
cacher_ipaddress = servers[0].ipaddress
|
59
|
+
end
|
60
|
+
t = template '/etc/apt/apt.conf.d/01proxy' do
|
61
|
+
source '01proxy.erb'
|
62
|
+
owner 'root'
|
63
|
+
group 'root'
|
64
|
+
mode 00644
|
65
|
+
variables(
|
66
|
+
:proxy => cacher_ipaddress,
|
67
|
+
:port => servers[0]['apt']['cacher_port'],
|
68
|
+
:bypass => node['apt']['cache_bypass']
|
69
|
+
)
|
70
|
+
action( node['apt']['compiletime'] ? :nothing : :create )
|
71
|
+
notifies :run, 'execute[apt-get update]', :immediately
|
72
|
+
end
|
73
|
+
t.run_action(:create) if node['apt']['compiletime']
|
74
|
+
else
|
75
|
+
Chef::Log.info('No apt-cacher-ng server found.')
|
76
|
+
file '/etc/apt/apt.conf.d/01proxy' do
|
77
|
+
action :delete
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
include_recipe 'apt::default'
|
@@ -0,0 +1,43 @@
|
|
1
|
+
#
|
2
|
+
# Cookbook Name:: apt
|
3
|
+
# Recipe:: cacher-ng
|
4
|
+
#
|
5
|
+
# Copyright 2008-2013, Opscode, Inc.
|
6
|
+
#
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
8
|
+
# you may not use this file except in compliance with the License.
|
9
|
+
# You may obtain a copy of the License at
|
10
|
+
#
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
12
|
+
#
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16
|
+
# See the License for the specific language governing permissions and
|
17
|
+
# limitations under the License.
|
18
|
+
#
|
19
|
+
|
20
|
+
node.set['apt']['caching_server'] = true
|
21
|
+
|
22
|
+
package "apt-cacher-ng" do
|
23
|
+
action :install
|
24
|
+
end
|
25
|
+
|
26
|
+
directory node['apt']['cacher_dir'] do
|
27
|
+
owner "apt-cacher-ng"
|
28
|
+
group "apt-cacher-ng"
|
29
|
+
mode 0755
|
30
|
+
end
|
31
|
+
|
32
|
+
template "/etc/apt-cacher-ng/acng.conf" do
|
33
|
+
source "acng.conf.erb"
|
34
|
+
owner "root"
|
35
|
+
group "root"
|
36
|
+
mode 00644
|
37
|
+
notifies :restart, "service[apt-cacher-ng]", :immediately
|
38
|
+
end
|
39
|
+
|
40
|
+
service "apt-cacher-ng" do
|
41
|
+
supports :restart => true, :status => false
|
42
|
+
action [:enable, :start]
|
43
|
+
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
#
|
2
|
+
# Cookbook Name:: apt
|
3
|
+
# Recipe:: default
|
4
|
+
#
|
5
|
+
# Copyright 2008-2013, Opscode, Inc.
|
6
|
+
# Copyright 2009, Bryan McLellan <btm@loftninjas.org>
|
7
|
+
#
|
8
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
9
|
+
# you may not use this file except in compliance with the License.
|
10
|
+
# You may obtain a copy of the License at
|
11
|
+
#
|
12
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
13
|
+
#
|
14
|
+
# Unless required by applicable law or agreed to in writing, software
|
15
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
16
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
17
|
+
# See the License for the specific language governing permissions and
|
18
|
+
# limitations under the License.
|
19
|
+
#
|
20
|
+
|
21
|
+
# On systems where apt is not installed, the resources in this recipe are not
|
22
|
+
# executed. However, they _must_ still be present in the resource collection
|
23
|
+
# or other cookbooks which notify these resources will fail on non-apt-enabled
|
24
|
+
# systems.
|
25
|
+
unless apt_installed?
|
26
|
+
Chef::Log.debug "apt is not installed. Apt-specific resources will not be executed."
|
27
|
+
end
|
28
|
+
|
29
|
+
# Run apt-get update to create the stamp file
|
30
|
+
execute "apt-get-update" do
|
31
|
+
command "apt-get update"
|
32
|
+
ignore_failure true
|
33
|
+
only_if { apt_installed? }
|
34
|
+
not_if do ::File.exists?('/var/lib/apt/periodic/update-success-stamp') end
|
35
|
+
end
|
36
|
+
|
37
|
+
# For other recipes to call to force an update
|
38
|
+
execute "apt-get update" do
|
39
|
+
command "apt-get update"
|
40
|
+
ignore_failure true
|
41
|
+
only_if { apt_installed? }
|
42
|
+
action :nothing
|
43
|
+
end
|
44
|
+
|
45
|
+
# Automatically remove packages that are no longer needed for dependencies
|
46
|
+
execute "apt-get autoremove" do
|
47
|
+
command "apt-get -y autoremove"
|
48
|
+
only_if { apt_installed? }
|
49
|
+
action :nothing
|
50
|
+
end
|
51
|
+
|
52
|
+
# Automatically remove .deb files for packages no longer on your system
|
53
|
+
execute "apt-get autoclean" do
|
54
|
+
command "apt-get -y autoclean"
|
55
|
+
only_if { apt_installed? }
|
56
|
+
action :nothing
|
57
|
+
end
|
58
|
+
|
59
|
+
# provides /var/lib/apt/periodic/update-success-stamp on apt-get update
|
60
|
+
package "update-notifier-common" do
|
61
|
+
notifies :run, 'execute[apt-get-update]', :immediately
|
62
|
+
only_if { apt_installed? }
|
63
|
+
end
|
64
|
+
|
65
|
+
execute "apt-get-update-periodic" do
|
66
|
+
command "apt-get update"
|
67
|
+
ignore_failure true
|
68
|
+
only_if do
|
69
|
+
apt_installed? &&
|
70
|
+
::File.exists?('/var/lib/apt/periodic/update-success-stamp') &&
|
71
|
+
::File.mtime('/var/lib/apt/periodic/update-success-stamp') < Time.now - 86400
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
%w{/var/cache/local /var/cache/local/preseeding}.each do |dirname|
|
76
|
+
directory dirname do
|
77
|
+
owner "root"
|
78
|
+
group "root"
|
79
|
+
mode 00755
|
80
|
+
action :create
|
81
|
+
only_if { apt_installed? }
|
82
|
+
end
|
83
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
#
|
2
|
+
# Cookbook Name:: apt
|
3
|
+
# Resource:: preference
|
4
|
+
#
|
5
|
+
# Copyright 2010-2013, Opscode, Inc.
|
6
|
+
#
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
8
|
+
# you may not use this file except in compliance with the License.
|
9
|
+
# You may obtain a copy of the License at
|
10
|
+
#
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
12
|
+
#
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16
|
+
# See the License for the specific language governing permissions and
|
17
|
+
# limitations under the License.
|
18
|
+
#
|
19
|
+
|
20
|
+
actions :add, :remove
|
21
|
+
|
22
|
+
def initialize(*args)
|
23
|
+
super
|
24
|
+
@action = :add
|
25
|
+
end
|
26
|
+
|
27
|
+
attribute :package_name, :kind_of => String, :name_attribute => true
|
28
|
+
attribute :glob, :kind_of => String
|
29
|
+
attribute :pin, :kind_of => String
|
30
|
+
attribute :pin_priority, :kind_of => String
|
@@ -0,0 +1,41 @@
|
|
1
|
+
#
|
2
|
+
# Cookbook Name:: apt
|
3
|
+
# Resource:: repository
|
4
|
+
#
|
5
|
+
# Copyright 2010-2013, Opscode, Inc.
|
6
|
+
#
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
8
|
+
# you may not use this file except in compliance with the License.
|
9
|
+
# You may obtain a copy of the License at
|
10
|
+
#
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
12
|
+
#
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16
|
+
# See the License for the specific language governing permissions and
|
17
|
+
# limitations under the License.
|
18
|
+
#
|
19
|
+
|
20
|
+
actions :add, :remove
|
21
|
+
|
22
|
+
def initialize(*args)
|
23
|
+
super
|
24
|
+
@action = :add
|
25
|
+
end
|
26
|
+
|
27
|
+
#name of the repo, used for source.list filename
|
28
|
+
attribute :repo_name, :kind_of => String, :name_attribute => true
|
29
|
+
attribute :uri, :kind_of => String
|
30
|
+
attribute :distribution, :kind_of => String
|
31
|
+
attribute :components, :kind_of => Array, :default => []
|
32
|
+
attribute :arch, :kind_of => String, :default => nil
|
33
|
+
attribute :trusted, :kind_of => [ TrueClass, FalseClass ], :default => false
|
34
|
+
#whether or not to add the repository as a source repo as well
|
35
|
+
attribute :deb_src, :default => false
|
36
|
+
attribute :keyserver, :kind_of => String, :default => nil
|
37
|
+
attribute :key, :kind_of => String, :default => nil
|
38
|
+
attribute :cookbook, :kind_of => String, :default => nil
|
39
|
+
#trigger cache rebuild
|
40
|
+
#If not you can trigger in the recipe itself after checking the status of resource.updated{_by_last_action}?
|
41
|
+
attribute :cache_rebuild, :kind_of => [TrueClass, FalseClass], :default => true
|
@@ -0,0 +1,173 @@
|
|
1
|
+
# Letter case in directive names does not matter. Must be separated with colons.
|
2
|
+
# Valid boolean values are a zero number for false, non-zero numbers for true.
|
3
|
+
|
4
|
+
CacheDir: <%= node['apt']['cacher_dir'] %>
|
5
|
+
|
6
|
+
# set empty to disable logging
|
7
|
+
LogDir: /var/log/apt-cacher-ng
|
8
|
+
|
9
|
+
# TCP (http) port
|
10
|
+
# Set to 9999 to emulate apt-proxy
|
11
|
+
Port:<%= node['apt']['cacher_port'] %>
|
12
|
+
|
13
|
+
# Addresses or hostnames to listen on. Multiple addresses must be separated by
|
14
|
+
# spaces. Each entry must be associated with a local interface. DNS resolution
|
15
|
+
# is performed using getaddrinfo(3) for all available protocols (i.e. IPv4 and
|
16
|
+
# IPv6 if available).
|
17
|
+
#
|
18
|
+
# Default: not set, will listen on all interfaces.
|
19
|
+
#
|
20
|
+
# BindAddress: localhost 192.168.7.254 publicNameOnMainInterface
|
21
|
+
|
22
|
+
#Proxy: http://www-proxy.example.net:80
|
23
|
+
#proxy: http://username:proxypassword@proxy.example.net:3128
|
24
|
+
|
25
|
+
# Repository remapping. See manual for details.
|
26
|
+
# In this example, backends file is generated during package installation.
|
27
|
+
Remap-debrep: file:deb_mirror*.gz /debian ; file:backends_debian
|
28
|
+
Remap-uburep: file:ubuntu_mirrors /ubuntu ; file:backends_ubuntu
|
29
|
+
Remap-debvol: file:debvol_mirror*.gz /debian-volatile ; file:backends_debvol
|
30
|
+
Remap-cygwin: file:cygwin_mirrors /cygwin # ; file:backends_cygwin # incomplete, please create this file
|
31
|
+
|
32
|
+
# Virtual page accessible in a web browser to see statistics and status
|
33
|
+
# information, i.e. under http://localhost:3142/acng-report.html
|
34
|
+
ReportPage: acng-report.html
|
35
|
+
|
36
|
+
# Socket file for accessing through local UNIX socket instead of TCP/IP. Can be
|
37
|
+
# used with inetd bridge or cron client.
|
38
|
+
# SocketPath:/var/run/apt-cacher-ng/socket
|
39
|
+
|
40
|
+
# Forces log file to be written to disk after every line when set to 1. Default
|
41
|
+
# is 0, buffer flush happens after client disconnects.
|
42
|
+
#
|
43
|
+
# (technically, this is an alias to the Debug option provided for convenience)
|
44
|
+
#
|
45
|
+
# UnbufferLogs: 0
|
46
|
+
|
47
|
+
# Set to 0 to store only type, time and transfer sizes.
|
48
|
+
# 1 -> client IP and relative local path are logged too
|
49
|
+
# VerboseLog: 1
|
50
|
+
|
51
|
+
# Don't detach from the console
|
52
|
+
# ForeGround: 0
|
53
|
+
|
54
|
+
# Store the pid of the daemon process therein
|
55
|
+
# PidFile: /var/run/apt-cacher-ng/pid
|
56
|
+
|
57
|
+
# Forbid outgoing connections, work around them or respond with 503 error
|
58
|
+
# offlinemode:0
|
59
|
+
|
60
|
+
# Forbid all downloads that don't run through preconfigured backends (.where)
|
61
|
+
#ForceManaged: 0
|
62
|
+
|
63
|
+
# Days before considering an unreferenced file expired (to be deleted).
|
64
|
+
# Warning: if the value is set too low and particular index files are not
|
65
|
+
# available for some days (mirror downtime) there is a risk of deletion of
|
66
|
+
# still usefull package files.
|
67
|
+
ExTreshold: 4
|
68
|
+
|
69
|
+
# Stop expiration when a critical problem appeared. Currently only failed
|
70
|
+
# refresh of an index file is considered as critical.
|
71
|
+
#
|
72
|
+
# WARNING: don't touch this option or set to a non-zero number.
|
73
|
+
# Anything else is DANGEROUS and may cause data loss.
|
74
|
+
#
|
75
|
+
# ExAbortOnProblems: 1
|
76
|
+
|
77
|
+
# Replace some Windows/DOS-FS incompatible chars when storing
|
78
|
+
# StupidFs: 0
|
79
|
+
|
80
|
+
# Experimental feature for apt-listbugs: pass-through SOAP requests and
|
81
|
+
# responses to/from bugs.debian.org. If not set, default is true if
|
82
|
+
# ForceManaged is enabled and false otherwise.
|
83
|
+
# ForwardBtsSoap: 1
|
84
|
+
|
85
|
+
# The daemon has a small cache for DNS data, to speed up resolution. The
|
86
|
+
# expiration time of the DNS entries can be configured in seconds.
|
87
|
+
# DnsCacheSeconds: 3600
|
88
|
+
|
89
|
+
# Don't touch the following values without good consideration!
|
90
|
+
#
|
91
|
+
# Max. count of connection threads kept ready (for faster response in the
|
92
|
+
# future). Should be a sane value between 0 and average number of connections,
|
93
|
+
# and depend on the amount of spare RAM.
|
94
|
+
# MaxStandbyConThreads: 8
|
95
|
+
#
|
96
|
+
# Hard limit of active thread count for incomming connections, i.e. operation
|
97
|
+
# is refused when this value is reached (below zero = unlimited).
|
98
|
+
# MaxConThreads: -1
|
99
|
+
#
|
100
|
+
#VfilePattern = (^|.*?/)(Index|Packages\.bz2|Packages\.gz|Packages|Release|Release\.gpg|Sources\.bz2|Sources\.gz|Sources|release|index\.db-.*\.gz|Contents-[^/]*\.gz|pkglist[^/]*\.bz2|rclist[^/]*\.bz2|/meta-release[^/]*|Translation[^/]*\.bz2)$
|
101
|
+
#PfilePattern = .*(\.deb|\.rpm|\.dsc|\.tar\.gz\.gpg|\.tar\.gz|\.diff\.gz|\.diff\.bz2|\.jigdo|\.template|changelog|copyright|\.udeb|\.diff/.*\.gz|vmlinuz|initrd\.gz|(Devel)?ReleaseAnnouncement(\\?.*)?)$
|
102
|
+
# Whitelist for expiration, file types not to be removed even when being
|
103
|
+
# unreferenced. Default: same as VfilePattern which is a safe bed. When and
|
104
|
+
# only when the only used mirrors are official repositories (with working
|
105
|
+
# Release files) then it might be set to something more restrictive, like
|
106
|
+
# (^|.*?/)(Release|Release\.gpg|release|meta-release|Translation[^/]*\.bz2)$
|
107
|
+
#WfilePattern = (^|.*?/)(Index|Packages\.bz2|Packages\.gz|Packages|Release|Release\.gpg|Sources\.bz2|Sources\.gz|Sources|release|index\.db-.*\.gz|Contents-[^/]*\.gz|pkglist[^/]*\.bz2|rclist[^/]*\.bz2|/meta-release[^/]*|Translation[^/]*\.bz2)$
|
108
|
+
|
109
|
+
# Higher modes only working with the debug version
|
110
|
+
# Warning, writes a lot into apt-cacher.err logfile
|
111
|
+
# Value overwrites UnbufferLogs setting (aliased)
|
112
|
+
# Debug:3
|
113
|
+
|
114
|
+
# Usually, general purpose proxies like Squid expose the IP adress of the
|
115
|
+
# client user to the remote server using the X-Forwarded-For HTTP header. This
|
116
|
+
# behaviour can be optionally turned on with the Expose-Origin option.
|
117
|
+
# ExposeOrigin: 0
|
118
|
+
|
119
|
+
# When logging the originating IP address, trust the information supplied by
|
120
|
+
# the client in the X-Forwarded-For header.
|
121
|
+
# LogSubmittedOrigin: 0
|
122
|
+
|
123
|
+
# The version string reported to the peer, to be displayed as HTTP client (and
|
124
|
+
# version) in the logs of the mirror.
|
125
|
+
# WARNING: some archives use this header to detect/guess capabilities of the
|
126
|
+
# client (i.e. redirection support) and change the behaviour accordingly, while
|
127
|
+
# ACNG might not support the expected features. Expect side effects.
|
128
|
+
#
|
129
|
+
# UserAgent: Yet Another HTTP Client/1.2.3p4
|
130
|
+
|
131
|
+
# In some cases the Import and Expiration tasks might create fresh volatile
|
132
|
+
# data for internal use by reconstructing them using patch files. This
|
133
|
+
# by-product might be recompressed with bzip2 and with some luck the resulting
|
134
|
+
# file becomes identical to the *.bz2 file on the server, usable for APT
|
135
|
+
# clients trying to fetch the full .bz2 compressed version. Injection of the
|
136
|
+
# generated files into the cache has however a disadvantage on underpowered
|
137
|
+
# servers: bzip2 compession can create high load on the server system and the
|
138
|
+
# visible download of the busy .bz2 files also becomes slower.
|
139
|
+
#
|
140
|
+
# RecompBz2: 0
|
141
|
+
|
142
|
+
# Network timeout for outgoing connections.
|
143
|
+
# NetworkTimeout: 60
|
144
|
+
|
145
|
+
# Sometimes it makes sense to not store the data in cache and just return the
|
146
|
+
# package data to client as it comes in. DontCache parameters can enable this
|
147
|
+
# behaviour for certain URL types. The tokens are extended regular expressions
|
148
|
+
# that URLs are matched against.
|
149
|
+
#
|
150
|
+
# DontCacheRequested is applied to the URL as it comes in from the client.
|
151
|
+
# Example: exclude packages built with kernel-package for x86
|
152
|
+
# DontCacheRequested: linux-.*_10\...\.Custo._i386
|
153
|
+
# Example usecase: exclude popular private IP ranges from caching
|
154
|
+
# DontCacheRequested: 192.168.0 ^10\..* 172.30
|
155
|
+
#
|
156
|
+
# DontCacheResolved is applied to URLs after mapping to the target server. If
|
157
|
+
# multiple backend servers are specified then it's only matched against the
|
158
|
+
# download link for the FIRST possible source (due to implementation limits).
|
159
|
+
# Example usecase: all Ubuntu stuff comes from a local mirror (specified as
|
160
|
+
# backend), don't cache it again:
|
161
|
+
# DontCacheResolved: ubuntumirror.local.net
|
162
|
+
#
|
163
|
+
# DontCache directive sets (overrides) both, DontCacheResolved and
|
164
|
+
# DontCacheRequested. Provided for convenience, see those directives for
|
165
|
+
# details.
|
166
|
+
#
|
167
|
+
# Default permission set of freshly created files and directories, as octal
|
168
|
+
# numbers (see chmod(1) for details).
|
169
|
+
# Can by limited by the umask value (see umask(2) for details) if it's set in
|
170
|
+
# the environment of the starting shell, e.g. in apt-cacher-ng init script or
|
171
|
+
# in its configuration file.
|
172
|
+
# DirPerms: 00755
|
173
|
+
# FilePerms: 00664
|