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


99

На офіційній сторінці про такий випадок не згадується. Але багатьом користувачам потрібна лише psqlбез локальної бази даних (у мене на AWS). Варення не мають psql.


Чому, на вашу думку, існує "правильний спосіб" зробити це, враховуючи те, що ви посилаєтесь на офіційну сторінку завантаження, яка говорить, що немає способу?
Ssswift

Для тих, хто працює на MacPorts, ось що я зробив: superuser.com/questions/305031/…
sudo

4
@Ssswift Не сказано, що немає способу, просто не сказано, що є спосіб.
sudo

Відповіді:


250

Ви також можете використовувати 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
Engrost

20
Ви також можете це зробити, brew link --force libpqале це створить купу інших символічних посилань, які вам можуть не потрібні / потрібні.
Дейв

2
симлінк чергові 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демон не запущений, перевірте встановлені служби домашньої роботи:

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

Якщо у вас не встановлені служби Homebrew , просто

$ brew tap homebrew/services

... і ви отримаєте цю функціональність. Щоб отримати додаткову інформацію про послуги Homebrew , прочитайте цю чудову публікацію в блозі, яка пояснює, як це працює .


1
Це насправді не відповідає на запитання, яке зводиться до того, "як встановити psql (а можливо, і інші утиліти postgres) БЕЗ встановлення postgres". Відповідь @ PPS stackoverflow.com/a/49689589/2469559 є правильною.
Бенджамін Р,

2
IMO, це кращий варіант, оскільки він не вимагає 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

Сподіваюся, це допомагає.


9

Якщо вам справді не потрібен postgresql, то вам навіть не потрібно змінювати свій шлях для використання бібліотеки, просто посилайте 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.