Правильный способ установить psql без полной версии Postgres на macOS?


103

На официальной странице такой случай не упоминается. Но многим пользователям нужна только psqlлокальная база данных (у меня она есть на AWS). Заваривать не надо psql.


Как вы думаете, почему существует «правильный способ» сделать это, учитывая, что вы указали ссылку на официальную страницу загрузки, где говорится, что способа нет?
Ssswift

Для тех, кто пользуется MacPorts, вот что я сделал: superuser.com/questions/305031/…
sudo

4
@Ssswift Это не говорит о том, что способа нет, просто не говорит, что способ есть.
sudo

Ответы:


255

Вы также можете использовать homebrew для установки libpq.

brew install libpq

Это даст вам psql, pg_dump и целый ряд других клиентских утилит без установки Postgres.

Затем вы добавляете каталог установки к своему пути. В моем случае расположение каталога:

/usr/local/Cellar/libpq/10.3/bin

14
Работает как шарм после создания символической ссылки: ln -s /usr/local/Cellar/libpq/10.3/bin/psql / usr / local / bin / psql
Энгрост

21
Вы также можете сделать это, brew link --force libpqно это создаст кучу других символических ссылок, которые вам могут не понадобиться / не понадобиться.
Дэйв

2
symlinks du jour ln -s /usr/local/Cellar/libpq/11.3/bin/psql /usr/local/bin/psql/ ln -s /usr/local/Cellar/libpq/11.3/bin/pg_dump /usr/local/bin/pg_dump/ln -s /usr/local/Cellar/libpq/11.3/bin/pg_restore /usr/local/bin/pg_restore
hotzen

Символьные ссылки, не зависящие от версии libpq:for cmd in psql pg_dump pg_restore; do ln -s ../opt/libpq/bin/$cmd /usr/local/bin/$cmd; done
Дэвид Халл

PATH=/usr/local/opt/libpq/bin:$PATHчтобы добавить все команды в свой путь за один раз, используя имя каталога, которое не меняется с версией, libpqкоторую вы устанавливаете.
Джордж Хокинс,

42

На самом деле Homebrew имеет только формулу postgres и не имеет какой-либо конкретной формулы, которая только устанавливает psqlинструмент.

Итак, «правильный способ» получить psqlприложение - это действительно установить формулу postgres , и в конце раздела «предостережения» вы увидите, что она фактически не запускает базу данных, а просто помещает файлы в вашу систему. :

$  brew install postgres
==> Downloading https://homebrew.bintray.com/bottles/postgresql-9.6.5.sierra.bottle.tar.gz
######################################################################## 100.0%
==> Pouring postgresql-9.6.5.sierra.bottle.tar.gz
==> /usr/local/Cellar/postgresql/9.6.5/bin/initdb /usr/local/var/postgres
==> Caveats
<snip>
To have launchd start postgresql now and restart at login:
  brew services start postgresql
Or, if you don't want/need a background service you can just run:
  pg_ctl -D /usr/local/var/postgres start
==> Summary
🍺  /usr/local/Cellar/postgresql/9.6.5: 3,269 files, 36.7MB

Теперь вы можете использовать его psqlдля подключения к удаленным серверам Postgres и не будете запускать локальный, хотя могли бы, если бы действительно хотели.

Чтобы убедиться, что локальный postgresдемон не запущен, проверьте установленные службы homebrew:

$ brew services list
Name       Status  User Plist
mysql      stopped      
postgresql stopped      

Если у вас не установлены службы Homebrew Services , просто

$ brew tap homebrew/services

... и вы получите эту функциональность. Для получения дополнительной информации о Homebrew Services прочитайте этот отличный пост в блоге, в котором объясняется, как это работает .


1
На самом деле это не отвечает на вопрос, который сводится к тому, «как установить psql (и, возможно, другие утилиты postgres) БЕЗ установки postgres». Ответ @ PPS stackoverflow.com/a/49689589/2469559 является правильным.
Benjamin R

2
ИМО, это лучший вариант, потому что он не требует brew linkшага. Установление ссылки с помощью libpq необходимо из-за объявления keg_only в формуле. Учитывая эту конкретную сложность , я считаю, что этот ответ является «правильным» способом сделать то, что задает вопрос. Я понимаю, что многие пользователи по-прежнему предпочтут этот libpqподход.
Эндрю Бобульский

36

libpq 11.2
MacOS и zsh или bash

ниже работает

  1. установить libpq
brew install libpq
  1. обновить PATH

    если использовать zsh:

    echo 'export PATH="/usr/local/opt/libpq/bin:$PATH"' >> ~/.zshrc
    source ~/.zshrc

    если использовать bash:

    echo 'export PATH="/usr/local/opt/libpq/bin:$PATH"' >> ~/.bash_profile
    source ~/.bash_profile

1
echo 'export PATH="/usr/local/opt/libpq/bin:$PATH"' >> ~/.bash_profileесли вы используете bash.
HenryC

1
@HenryC Ага, спасибо, bash встречается гораздо чаще, мой ответ был основан на zsh.
CK

10

Установите libpq:

 brew install libpq

Затем создайте символическую ссылку:

ln -s /usr/local/opt/libpq/bin/psql /usr/local/bin/psql

Надеюсь, поможет.


10

Если вам действительно не нужен postgresql, вам даже не нужно менять свой путь для использования libra, просто сделайте ссылку libpq. В документации говорится, что единственная причина, по которой это не так, - избежать конфликтов с пакетом PostgreSQL.

brew uninstall postgresql
brew install libpq
brew link --force libpq

Мне нравится, что мне не нужно создавать символическую ссылку вручную. Это должен быть принятый ответ. Спасибо!
demisx

0

Я нашел все это действительно неудовлетворительным, особенно если вам нужно поддерживать несколько версий postgres. НАМНОГО более простое решение - загрузить двоичные файлы здесь:

https://www.enterprisedb.com/download-postgresql-binaries

И просто запустите исполняемую версию psql, соответствующую базе данных, с которой вы работаете, без каких-либо дополнительных действий.

пример:

./path/to/specific/version/bin/psql -c '\x' -c 'SELECT * FROM foo;'

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.