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.


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

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 .


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

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.


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

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;'

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.