Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何安装postgresql 9.3和minitest_Ruby On Rails_Postgresql_Chef Solo_Test Kitchen - Fatal编程技术网

Ruby on rails 如何安装postgresql 9.3和minitest

Ruby on rails 如何安装postgresql 9.3和minitest,ruby-on-rails,postgresql,chef-solo,test-kitchen,Ruby On Rails,Postgresql,Chef Solo,Test Kitchen,我正在尝试使用操作码配方中的chef solo安装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'] = '

我正在尝试使用操作码配方中的chef solo安装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']  = '*'
default ['lsb']['codename'] = 'trusty'
default['postgresql']['version'] = '9.3'

我最终放弃了opscode postgresql cook book,选择了以下内容:

属性/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']  = '*'
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']}"

我最终放弃了opscode postgresql cook book,选择了以下内容:

属性/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']  = '*'
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']}"

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

您没有为9.3启用pgdg回购 您正在指定一些无效的包名称。我认为食谱中的默认值应该足够了。 试试这个

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

您可能还需要确保您的虚拟机没有安装默认的postgresql版本。我在CentOS上遇到过这种情况。

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

您没有为9.3启用pgdg回购 您正在指定一些无效的包名称。我认为食谱中的默认值应该足够了。 试试这个

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


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

Opscode食谱的这个分支为我解决了这个问题。它尚未与master:.合并。

Opscode cookbook的这个分支为我解决了这个问题。它尚未与master:.合并。

您在哪个平台上运行?i、 ubuntu,redhat,centos,debian?当您尝试在chef外部安装软件包时会发生什么情况?e、 g.sudo-yum安装postgresql93-devel-redhat、centos等或sudo-apt-get安装postgresql93-devel-debian、ubuntu等?我同意@punkle。这不取决于Chef,而是linux环境。您很可能还没有包括postgresql回购。如果您使用的是Ubuntu 12-04发行版,下面是如何在CentOS中安装postgresql的链接。我无法使用kitchen登录登录,因为我没有密码。找不到正在哪个平台上运行的程序包postgresql93 develw?i、 ubuntu,redhat,centos,debian?当您尝试在chef外部安装软件包时会发生什么情况?e、 g.sudo-yum安装postgresql93-devel-redhat、centos等或sudo-apt-get安装postgresql93-devel-debian、ubuntu等?我同意@punkle。这不取决于Chef,而是linux环境。您很可能还没有包括postgresql回购。如果您使用的是Ubuntu 12-04发行版,下面是如何在CentOS中安装postgresql的链接。我无法使用kitchen登录登录,因为我没有密码。无法找到今天的postgresql93-develAs软件包。它已合并并可用,v3.4.1。截至今天,它已合并并可用,v3.4.1。添加“enable_pgdg_apt”对我有效。我也无法让它停止寻找9.1/main/,因此,我添加了chef在安装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上留下这样的评论,但谢谢。我已经遇到这个问题很多年了,现在终于找到了解决办法。这解决了我与Vagrant、Chef、Postgresql的问题。我在Vagrant文件中添加了enable_pgdg_apt=>true。添加'enable_pgdg_apt'对我来说很有效。我也无法让它停止寻找9.1/main/,因此,我添加了chef在安装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上留下这样的评论,但谢谢。我已经遇到这个问题很多年了,现在终于找到了解决办法。这解决了我与Vagrant、Chef、Postgresql的问题。我将enable_pgdg_apt=>true添加到Vagrant文件中。