Poprawny sposób instalacji psql bez pełnego Postgres na macOS?

101

Oficjalna strona nie wspomina o takim przypadku. Ale wielu użytkowników potrzebuje tylko psqlbez lokalnej bazy danych (mam ją na AWS). Brew nie ma psql.

Witalij Zdaniewicz
źródło
Jak myślisz, dlaczego istnieje „właściwy sposób”, aby to zrobić, biorąc pod uwagę, że podałeś link do oficjalnej strony pobierania, która mówi, że nie ma sposobu?
Ssswift
Dla tych na MacPorts, oto co zrobiłem: superuser.com/questions/305031/ ...
sudo
4
@Ssswift Nie mówi, że nie ma sposobu, po prostu nie mówi, że jest sposób.
sudo

Odpowiedzi:

253

Możesz także użyć homebrew do zainstalowania libpq.

brew install libpq

Dałoby to psql, pg_dump i całą masę innych narzędzi klienckich bez instalowania Postgres.

Następnie dodaj katalog instalacyjny do swojej ścieżki. W moim przypadku lokalizacja katalogu to:

/usr/local/Cellar/libpq/10.3/bin
PPS
źródło
14
Działa jak urok po utworzeniu dowiązania symbolicznego: ln -s /usr/local/Cellar/libpq/10.3/bin/psql / usr / local / bin / psql
Engrost
20
Możesz także to zrobić, brew link --force libpqale spowoduje to utworzenie wielu innych linków symbolicznych, których możesz nie chcieć / potrzebować.
Dave
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
Linki symboliczne, które nie zależą od wersji libpq:for cmd in psql pg_dump pg_restore; do ln -s ../opt/libpq/bin/$cmd /usr/local/bin/$cmd; done
David Hull,
PATH=/usr/local/opt/libpq/bin:$PATHaby dodać wszystkie polecenia do ścieżki za jednym razem, używając nazwy katalogu, która nie zmienia się wraz z wersją libpq, którą instalujesz.
George Hawkins
42

Homebrew tak naprawdę ma tylko formułę postgres i nie ma żadnej określonej formuły, która tylko instaluje psqlnarzędzie.

Tak więc „poprawnym sposobem” uzyskania psqlaplikacji jest rzeczywiście zainstalowanie formuły postgres , a na dole sekcji „ostrzeżenia” zobaczysz, że w rzeczywistości nie uruchamia ona bazy danych, tylko umieszcza pliki w systemie :

$  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

Teraz możesz używać psqldo łączenia się ze zdalnymi serwerami Postgres i nie będziesz uruchamiać lokalnego, chociaż możesz, jeśli naprawdę chcesz.

Aby sprawdzić, czy lokalny postgresdemon nie działa, sprawdź zainstalowane usługi homebrew:

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

Jeśli nie masz zainstalowanych usług Homebrew , po prostu

$ brew tap homebrew/services

... a otrzymasz tę funkcjonalność. Aby uzyskać więcej informacji na temat usług Homebrew , przeczytaj ten doskonały wpis na blogu, który wyjaśnia, jak to działa .

Andrzej Bobulsky
źródło
1
To właściwie nie odpowiada na pytanie, które sprowadza się do "jak zainstalować psql (i być może inne narzędzia postgres) BEZ instalowania postgres". Odpowiedź @ PPS stackoverflow.com/a/49689589/2469559 jest poprawna.
Benjamin R
2
IMO, to lepsza opcja, ponieważ nie wymaga tego brew linkkroku. Wymuszenie linku za pomocą libpq jest konieczne ze względu na deklarację keg_only w formule. Biorąc pod uwagę tę specyficzną komplikację , uważam, że ta odpowiedź jest „prawidłową” drogą do zrobienia tego, o czym mówi pytanie. Zdaję sobie jednak sprawę, że wielu użytkowników nadal będzie preferować to libpqpodejście.
Andrew Bobulsky
36

libpq 11.2
MacOS i zsh lub bash

poniżej działa

  1. zainstalować libpq
brew install libpq
  1. zaktualizuj PATH

    jeśli używasz zsh:

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

    jeśli używasz bash:

    echo 'export PATH="/usr/local/opt/libpq/bin:$PATH"' >> ~/.bash_profile
    source ~/.bash_profile
CK
źródło
1
echo 'export PATH="/usr/local/opt/libpq/bin:$PATH"' >> ~/.bash_profilejeśli używasz basha.
HenryC
1
@HenryC tak, dzięki, bash jest znacznie bardziej powszechny, moja odpowiedź została oparta na zsh.
CK
10

Zainstaluj libpq:

 brew install libpq

Następnie utwórz łącze symboliczne:

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

Mam nadzieję, że to pomoże.

Virak
źródło
10

Jeśli naprawdę nie potrzebujesz postgresql, nie musisz nawet zmieniać ścieżki korzystania z biblioteki, po prostu połącz libpq. Dokumentacja podaje, że jedynym powodem, dla którego tak nie jest, jest unikanie konfliktów z pakietem PostgreSQL.

brew uninstall postgresql
brew install libpq
brew link --force libpq
Josh Goebel
źródło
Podoba mi się, że nie muszę ręcznie tworzyć łącza symbolicznego. To powinna być akceptowana odpowiedź. Dziękuję Ci!
demisx
0

Uważam, że wszystkie te rzeczy są naprawdę niezadowalające, zwłaszcza jeśli musisz obsługiwać wiele wersji postgresów. DUŻO łatwiejszym rozwiązaniem jest pobranie plików binarnych tutaj:

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

I po prostu uruchom wersję wykonywalną, psqlktóra pasuje do bazy danych, z którą pracujesz, bez żadnych dodatkowych kroków.

przykład:

./path/to/specific/version/bin/psql -c '\x' -c 'SELECT * FROM foo;'
J.Wolfe
źródło
-4

Możesz spróbować brew install postgresql

Ale zapewnia to przyjemny GUI do zarządzania bazami danych https://postgresapp.com

Saidur Rahman
źródło
1
brew install postgresqlzainstaluj psql z samą bazą danych :(
Witalij Zdanevich