Перераспределение инструментов командной строки PostgreSQL - PullRequest
1 голос
/ 28 ноября 2011

Кто-нибудь знает, существует ли правильный способ перераспределения инструментов командной строки PostgreSQL, таких как pg_dump и pg_restore?

Для Windows двоичные файлы доступны в установщиках «One-Click», но я только хочу перераспределить инструменты командной строки для автоматизации резервного копирования и восстановления, так что полезная нагрузка> 100 МБ полностью излишняя.

Очевидно, я мог бы просто попытаться скопировать всю папку bin, но я бы предпочел точно знать, что мне нужно.

1 Ответ

2 голосов
/ 28 ноября 2011

Официальных рассылок только для клиентов не существует. Когда этот вопрос появляется в списке рассылки, обычный ответ заключается в том, что вы должны взять дистрибутив .zip, а затем использовать Dependency Walker (зависимость.exe) , чтобы определить, какие DLL требуются для двоичных файлов, которые вы хотите распространять, свяжите их и включите в свое приложение.

Сервер PostgreSQL (postgres.exe) очень интенсивно использует dlopen () / LoadLibrary (), поэтому вы не можете полагаться на него, так как зависящий от него файл.exe. К счастью, клиентская часть проще, и вы можете просто использовать зависящий от нее файл.exe, чтобы определить, что ему нужно. Для pg_dump, pg_restore или psql не требуется никаких дополнительных скриптов, библиотек dlopen'd и т. Д.

Я никогда не был полностью удовлетворен этим ответом, но я никогда не хотел улучшать его настолько, чтобы тоже захотелось возиться с упаковкой. Это не помогает, что установщик EnterpriseDB одним щелчком мыши является закрытым исходным кодом, поэтому я не могу изменить его, чтобы предложить минимальный пакет только для клиента. На данный момент извлечение исполняемых файлов и связанных библиотек - лучшее, что вы получите.

Если вы подумаете об этом, на самом деле это не так уж отличается от того, что произошло бы, если бы вы скомпилировали его самостоятельно. Вы бы все равно вытащили только биты клиента для распространения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...