【问题标题】:Chef solo how to install postgresql 9.3 and minitestChef solo 如何安装 postgresql 9.3 和 minitest
【发布时间】:2014-06-12 20:46:42
【问题描述】:

我正在尝试使用操作码食谱中的主厨独奏安装 postgresql 9.3,但我收到以下错误:

Chef::Exceptions::Package: No version specified, and no candidate version available for postgresql93-devel 

这是我在 attributes/default.rb 中的代码,但它只安装了 9.1,找不到 9.3-devel 的包。

default['postgresql']['version'] = '9.3'
default['postgresql']['client']['packages'] = ["postgresql#{node['postgresql']['version'].split('.').join}-devel"]
default['postgresql']['server']['packages'] = ["postgresql#{node['postgresql']['version'].split('.').join}-server"]
default['postgresql']['contrib']['packages'] = ["postgresql#{node['postgresql']['version'].split('.').join}-contrib"]
default['postgresql']['dir'] = "/var/lib/pgsql/#{node['postgresql']['version']}/data"
default['postgresql']['server']['service_name'] = "postgresql-#{node['postgresql']['version']}"

如果我使用此代码安装 9.2,它是成功的,但 minitest 抱怨没有安装 9.3 版。

default['postgresql']['version'] = '9.2'
default['postgresql']['enable_pgdg_apt'] = true
default['postgresql']['dir'] = "/etc/postgresql/9.2/main"
default['postgresql']['config']['data_directory'] = "/var/lib/postgresql/9.2/main"
default['postgresql']['config']['hba_file'] = "/etc/postgresql/9.2/main/pg_hba.conf"
default['postgresql']['config']['ident_file'] = "/etc/postgresql/9.2/main/pg_ident.conf"
default['postgresql']['config']['external_pid_file'] = "/var/run/postgresql/9.2-main.pid"
default['postgresql']['config']['ssl_key_file']  = "/etc/ssl/private/ssl-cert-snakeoil.key"
default['postgresql']['config']['ssl_cert_file'] = "/etc/ssl/certs/ssl-cert-snakeoil.pem"
default['postgresql']['client']['packages']  = ["postgresql-client-9.2"]
default['postgresql']['server']['packages']  = ["postgresql-9.2"]
default['postgresql']['contrib']['packages'] = ["postgresql-contrib-9.2"]

我现在在 attributes/default.rb 中使用它

default['postgresql']['password']['postgres'] = 'xxx'
default['sportdata-server']['database']['dbname'] = 'myapp_production'
default['postgresql']['pgdg']['release_apt_codename'] = 'precise'
default['postgresql']['version'] = '9.3'
default['postgresql']['config']['ssl']  = false
default['postgresql']['config']['listen_addresses']  = '*'

【问题讨论】:

  • 您在哪个平台上运行?即 ubuntu、redhat、centos、debian?当您尝试在厨师之外安装软件包时会发生什么?例如sudo yum install postgresql93-devel(redhat、centos 等)还是 sudo apt-get install postgresql93-devel(debian、ubuntu 等)?
  • 我同意@punkle。这不取决于 Chef,而是取决于 linux 环境。您很可能没有包含 postgresql 存储库。这是如何在 CentOS 中安装 postgresql 的链接(如果您使用的是该发行版)openproject.org/projects/openproject/wiki/…
  • Ubuntu 12-04。我没有密码,无法使用厨房登录。
  • 找不到包 postgresql93-devel

标签: ruby-on-rails postgresql chef-solo test-kitchen


【解决方案1】:

我刚刚在 CentOS 上完成了这项工作,但我从未在 Ubuntu 上尝试过。我注意到几件事:

  1. 您没有为 9.3 启用 pgdg 存储库
  2. 您指定了一些无效的包名称。我认为说明书中的默认值应该足够了。

试试这个

default['postgresql']['version'] = '9.3'
default['postgresql']['enable_pgdg_apt'] = true

您可能还需要确保您的虚拟机没有安装默认的 postgresql 版本。我在 CentOS 上遇到了这个问题。

【讨论】:

  • 添加“enable_pgdg_apt”对我有用。我也无法让它停止寻找 9.1/main/,所以我添加了厨师在安装 postgres 之前运行的这个 bash 脚本:sudo mkdir -p /var/lib/postgresql/9.3 | sudo rm /var/lib/postgresql/9.1 2> /dev/null | sudo ln -s /var/lib/postgresql/9.3 /var/lib/postgresql/9.1 2> /dev/null
  • 我知道你不应该在 Stackoverflow 上留下这样的 cmets,但谢谢。我已经遇到这个问题很久了,这终于是似乎可以解决的问题了。
  • 这解决了我与 Vagrant、Chef、Postgresql 的问题。我在 Vagrantfile 中添加了"enable_pgdg_apt" => "true"
【解决方案2】:

我终于放弃了 opscode 的 postgresql 烹饪书,转而使用这个:

属性/default.rb

default ['lsb']['codename'] = 'trusty'
default['postgresql']['version'] = '9.3'

在我的 postgresql-server 配方中:

file "remove deprecated Pitti PPA apt repository" do
  action :delete
  path "/etc/apt/sources.list.d/pitti-postgresql-ppa"
end

bash "adding postgresql repo" do
  user "root"
  code <<-EOC
  echo "deb http://apt.postgresql.org/pub/repos/apt/ #{node['lsb']['codename']}-pgdg main" > /etc/apt/sources.list.d/pgdg.list
  wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
  EOC
  action :run
end

execute "run apt-get update" do
  command 'apt-get update'
  action :run
end

packages = %w(
  libpq-dev
  git-core 
  curl 
  zlib1g-dev
  libssl-dev 
  libreadline-dev 
  libyaml-dev 
  libsqlite3-dev 
  sqlite3 
  libxml2-dev 
  libxslt1-dev
  postgresql-contrib
)

packages.each { |name| package name }

package "postgresql-#{node['postgresql']['version']}"

【讨论】:

    【解决方案3】:

    Opscode 食谱的这个分支为我解决了这个问题https://github.com/jackpine/postgresql/tree/feature/ubuntu1404。尚未与 master 合并:https://github.com/hw-cookbooks/postgresql/pull/150

    【讨论】:

    • 截至今天,它已被合并并可用,v3.4.1。
    猜你喜欢
    • 2015-11-06
    • 1970-01-01
    • 1970-01-01
    • 2013-10-16
    • 2012-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多