Я запускаю Chef solo (версия 11.4.0) на чистом VPS с установленным Ubuntu 12, и у меня возникают проблемы с apt
. Проблема заключалась в том, что любой package
команда вызвала ошибку:
Chef::Exceptions::Exec
----------------------
apt-get -q -y install update-notifier-common=0.126 returned 100, expected 0
Но запуск этой команды в оболочке работал отлично.
После некоторого исследования я обнаружил, что люди рекомендуют запускать Код операции apt
Кулинарная книга (версия 1.9.0) в списке выполнения перед любой поваренной книгой. Таким образом, некоторые проблемы с apt-get update
кеш были решены.
Поэтому я добавляю в свой список запусков кулинарную книгу apt
во-первых, и у меня все еще те же ошибки:
Recipe: apt::default
* execute[apt-get-update] action run
- execute apt-get update
* execute[apt-get update] action nothing (up to date)
* execute[apt-get autoremove] action nothing (up to date)
* execute[apt-get autoclean] action nothing (up to date)
* package[update-notifier-common] action install
================================================================================
Error executing action `install` on resource 'package[update-notifier-common]'
================================================================================
Chef::Exceptions::Exec
----------------------
apt-get -q -y install update-notifier-common=0.126 returned 100, expected 0
Resource Declaration:
---------------------
# In /home/ubuntu/.chef/toldo-cookbooks/cookbooks/apt/recipes/default.rb
48: package "update-notifier-common" do
49: notifies :run, resources(:execute => "apt-get-update"), :immediately
50: end
51:
Compiled Resource:
------------------
# Declared in /home/ubuntu/.chef/toldo-cookbooks/cookbooks/apt/recipes/default.rb:48:in `from_file'
package("update-notifier-common") do
action :install
retries 0
retry_delay 2
package_name "update-notifier-common"
version "0.126"
cookbook_name :apt
recipe_name "default"
end
[2013-02-24T19:31:10+00:00] ERROR: Running exception handlers
[2013-02-24T19:31:10+00:00] ERROR: Exception handlers complete
Chef Client failed. 1 resources updated
[2013-02-24T19:31:10+00:00] FATAL: Stacktrace dumped to /home/ubuntu/.chef/toldo-cookbooks/chef-stacktrace.out
[2013-02-24T19:31:10+00:00] FATAL: Chef::Exceptions::Exec: package[update-notifier-common] (apt::default line 48) had an error: Chef::Exceptions::Exec: apt-get -q -y install update-notifier-common=0.126 returned 100, expected 0
У вас есть какие-то подсказки, откуда я могу продолжить расследование?
Большое спасибо!
Это может быть связано с отсутствием привилегий:
$ id
uid=1000(gaizka)
$ apt-get install vim # Just kidding!
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
$ echo $?
100
Когда я играл с поваром, я использовал это:
# Usage:
# Chef::Provider::Package::Apt.send(:include, CustomApt::UseSudo)
module CustomApt
module UseSudo
def self.included(base)
base.class_eval do
alias_method :install_package_without_sudo, :install_package
def install_package(name, version)
package_name = "#{name}=#{version}"
package_name = name if @is_virtual_package
run_command_with_systems_locale(
:command => "sudo apt-get -q -y#{expand_options(@new_resource.options)} install #{package_name}",
:environment => {
"DEBIAN_FRONTEND" => "noninteractive"
}
)
end
end
end
end
end
Я включил это в свои рецепты, т.е. install_packages.rb
:
# So we install packages with sudo
Chef::Provider::Package::Apt.send(:include, CustomApt::UseSudo)
include_recipe "imagemagick::devel"
node['application']['install_packages'].each do |package_name|
package package_name do
action :install
end
end