README.macOS.md 4.0 KB
Newer Older
J
Jim Doty 已提交
1
We've confirmed that these steps work on a brand new installation of macOS
2
Sierra.
3

J
Jim Doty 已提交
4
## 1. Install needed dependencies
5

J
Jim Doty 已提交
6
Execute the following, this script will start by caching the `sudo` password:
7

8 9
```
./README.macOS.bash
T
Todd Sedano 已提交
10
source ~/.bash_profile
11 12
```

J
Jim Doty 已提交
13
Note: This will install Homebrew if missing
14

J
Jim Doty 已提交
15
## 2. Allow ssh to use the version of python in path, not the system python
16

J
Jim Doty 已提交
17
Execute the following in your terminal:
18

19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
```
mkdir -p "$HOME/.ssh"
cat >> ~/.bash_profile << EOF

# Allow ssh to use the version of python in path, not the system python
# BEGIN SSH agent
# from http://stackoverflow.com/questions/18880024/start-ssh-agent-on-login/18915067#18915067
SSH_ENV="\$HOME/.ssh/environment"
# Refresh the PATH per new session
sed -i .bak '/^PATH/d' \${SSH_ENV}
echo "PATH=\$PATH" >> \${SSH_ENV}

function start_agent {
    echo "Initialising new SSH agent..."
    /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "\${SSH_ENV}"
    echo succeeded
    chmod 600 "\${SSH_ENV}"
    source "\${SSH_ENV}" > /dev/null
    /usr/bin/ssh-add;
}

# Source SSH settings, if applicable
if [ -f "\${SSH_ENV}" ]; then
    . "\${SSH_ENV}" > /dev/null
    ps -ef | grep \${SSH_AGENT_PID} 2>/dev/null | grep ssh-agent$ > /dev/null || {
        start_agent;
    }
else
    start_agent;
fi

[ -f ~/.bashrc ] && source ~/.bashrc
# END SSH agent
EOF

sudo tee -a /etc/ssh/sshd_config << EOF
# Allow ssh to use the version of python in path, not the system python
PermitUserEnvironment yes
EOF
58
```
59

J
Jim Doty 已提交
60 61 62 63 64 65
## 3. Enable ssh to localhost without requiring a password

Currently, the GPDB utilities require that it be possible to `ssh` to localhost
without using a password.  To verify this, the following command should succeed
without erroring, or requiring you to enter a password.

66 67 68
```
ssh <hostname of your machine>  # e.g., ssh briarwood
```
J
Jim Doty 已提交
69 70 71 72 73 74 75 76 77 78 79 80 81

However, if it is the first time that you are `ssh`'ing to localhost, you may
need to accept the trust on first use prompt.

```
The authenticity of host '<your hostname>' can't be established.
ECDSA key fingerprint is SHA256:<fingerprint here>.
Are you sure you want to continue connecting (yes/no)?
```

If the hostname does not resolve, try adding your machine name to `/etc/hosts`,
like so:

82 83 84 85
```
echo -e "127.0.0.1\t$HOSTNAME" | sudo tee -a /etc/hosts
```

J
Jim Doty 已提交
86 87 88 89
If you see `ssh: connect to host <> port 22: Connection refused`, enable remote
login in:

```
90
System Preferences -> Sharing -> Remote Login
J
Jim Doty 已提交
91 92 93 94
```

If you see a password prompt, add your SSH key to the `authorized_keys` file,
like so:
95 96 97 98 99 100 101

```
mkdir -p ~/.ssh
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
cat ~/.ssh/id_rsa.pub >>  ~/.ssh/authorized_keys
```

J
Jim Doty 已提交
102 103 104
After troubleshooting,  verify one more time that you can ssh without a
password and that `~/.ssh/environment` exists, by running:

105 106 107 108
```
ssh <hostname of your machine> 
ls ~/.ssh/environment
```
J
Jim Doty 已提交
109 110 111 112 113 114

If the ssh succeeded with out asking for a password, and that file exists, you
are good to go.  Remember to exit all of your ssh session before moving on.

## 4. Configure, compile, and install

115 116
At this point head back the main [README.md](./README.md#build-the-database),
and continue from __Build the Database__.
J
Jim Doty 已提交
117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146

## Troubleshooting macOS specific issues: 

### Workaround for libreadline / libxml2 on OSX 10.11 (El Capitan)

Symptoms:
* After Running `./configure`,
* You see output
  `configure: error: readline library not found`, and
* in `config.log` you see
  `ld: file not found: /usr/lib/system/libsystem_symptoms.dylib for architecture x86_64`

There is an issue with Xcode 8.1 on El Capitan. Here's a workaround:

```
brew install libxml2
brew link libxml2 --force
```

Other workarounds may include downgrading to Xcode 7.3, or installing the CLT
package from Xcode 7.3.

For more info, [this seems to be the best thread](https://github.com/Homebrew/brew/issues/972)

### Disable System Integrity Protection

Note that you may need to disable System Integrity Protection in order to bring
up the gpdemo cluster. Without doing this, psql commands run in child processes
spawned by gpinitsystem may have the DYLD_* environment variables removed from
their environments.