Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.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
Postgresql 流浪的博士后(ubuntu14.04)_Postgresql_Vagrant_Ubuntu 14.04_Ansible - Fatal编程技术网

Postgresql 流浪的博士后(ubuntu14.04)

Postgresql 流浪的博士后(ubuntu14.04),postgresql,vagrant,ubuntu-14.04,ansible,Postgresql,Vagrant,Ubuntu 14.04,Ansible,我试图用vagrant创建简单的开发环境,但在postgres中遇到了问题 我的文件很简单: # -*- mode: ruby -*- # vi: set ft=ruby : # Vagrantfile API/syntax version. Don't touch unless you know what you're doing! VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |co

我试图用vagrant创建简单的开发环境,但在postgres中遇到了问题

我的文件很简单:

# -*- mode: ruby -*-
# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "ubuntu/trusty64"
  config.vm.network "forwarded_port", guest: 8000, host: 8000
  config.vm.network :public_network

  config.vm.provision "ansible" do |ansible|
    ansible.playbook = "playbook.yml"
  end
end
我使用ansible作为准备金:

- name: Configure development machine
  hosts: all
  sudo: True
  tasks:
    - name: install postgres
      apt: name={{ item }} update_cache=yes
      with_items:
        - postgresql 
        - postgresql-contrib
但是出了问题,postgres安装不正确

当我ssh到VM时,我看到了奇怪的事情:

 $ /etc/init.d/postgresql start
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LC_TIME = "uk_UA.UTF-8",
        LC_MONETARY = "uk_UA.UTF-8",
        LC_ADDRESS = "uk_UA.UTF-8",
        LC_TELEPHONE = "uk_UA.UTF-8",
        LC_NAME = "uk_UA.UTF-8",
        LC_MEASUREMENT = "uk_UA.UTF-8",
        LC_IDENTIFICATION = "uk_UA.UTF-8",
        LC_NUMERIC = "uk_UA.UTF-8",
        LC_PAPER = "uk_UA.UTF-8",
        LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
psql: could not connect to server: No such file or directory
        Is the server running locally and accepting
并且没有/etc/postgresql目录(但是存在/etc/postgresql公共目录),有什么想法吗


将以下行添加到shell启动文件

LANGUAGE=en_US.UTF-8
LANG=en_US.UTF-8
LC_ALL=en_US.UTF-8
然后运行(具有root权限)


您可以通过以下命令解决此问题:登录ubuntu计算机并重新配置区域设置:

dpkg-reconfigure locales
并选择所需的区域设置

解决区域设置问题后,您可能希望使用以下方法初始化postgres的集群和结构:

/etc/init.d/postgresql start
之后,您应该正确配置它。我使用的是postgres的9.3版本,因此配置的路径是

/etc/postgresql/9.3/main
干杯


LEslie

你能试试
env-i/etc/init.d/postgresql start
来确认它的语言环境问题吗?@gslin我也有同样的问题,只是使用了不同的语言环境,el_-GR而不是uk_-UA。以下是您的要求:vagrant@vagrant-ubuntu-trusty-64:~$sudo env-i/etc/init.d/postgresql start*不存在postgresql集群;请参阅“man pg_createcluster”,我对Ubuntu中的设置不太熟悉,但在RHEL/Centos中,您必须先执行“service postgresql initdb”来创建集群。也许可以尝试
/etc/init.d/postgresql initdb
,或者如果
pg\u ctl initdb
无法解决这个问题,可以使用任务:locale\u gen:name=el\u GR.UTF-8 state=present生成el\u GR.UTF-8 locale。Postgres安装并在安装后正常启动。但是如果我不想生成区域设置呢?有没有办法让ansible/vagrant忽略我的主机笔记本电脑区域设置,只在vm中使用en_US.UTF-8?我可以用ansible执行
dpkg重新配置区域设置
步骤(它是否以非交互方式工作)?如果你能写下执行指令的任务,那就更好了。谢谢。我对Ansible不太熟悉,但这个模块可能是您所需要的(这里是源代码,附带更多文档)。如果这不起作用,您可以将这些命令保存为shell脚本,并使用
-shell:locale\u script.sh
/etc/postgresql/9.3/main