Configure error zlib library not found

checking build system type... i686-pc-linux-gnu checking host system type... i686-pc-linux-gnu checking target system type... i686-pc-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c checking for -p flag to install... yes checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... no checking for mawk... mawk checking whether make sets $(MAKE)... yes
  • Home
  • Forum
  • The Ubuntu Forum Community
  • Ubuntu Specialised Support
  • Development & Programming
  • Packaging and Compiling Programs
  • configure: error: zlib not found.

  1. configure: error: zlib not found.

    Code:

    checking build system type... i686-pc-linux-gnu
    checking host system type... i686-pc-linux-gnu
    checking target system type... i686-pc-linux-gnu
    checking for a BSD-compatible install... /usr/bin/install -c
    checking for -p flag to install... yes
    checking whether build environment is sane... yes
    checking for a thread-safe mkdir -p... /bin/mkdir -p
    checking for gawk... no
    checking for mawk... mawk
    checking whether make sets $(MAKE)... yes
    checking whether NLS is requested... yes
    checking for msgfmt... /usr/bin/msgfmt
    checking for gmsgfmt... /usr/bin/msgfmt
    checking for xgettext... /usr/bin/xgettext
    checking for msgmerge... /usr/bin/msgmerge
    checking for style of include used by make... GNU
    checking for gcc... gcc
    checking for C compiler default output file name... a.out
    checking whether the C compiler works... yes
    checking whether we are cross compiling... no
    checking for suffix of executables... 
    checking for suffix of object files... o
    checking whether we are using the GNU C compiler... yes
    checking whether gcc accepts -g... yes
    checking for gcc option to accept ISO C89... none needed
    checking dependency style of gcc... gcc3
    checking for ld used by GCC... /usr/bin/ld
    checking if the linker (/usr/bin/ld) is GNU ld... yes
    checking for shared library run path origin... done
    checking for CFPreferencesCopyAppValue... no
    checking for CFLocaleCopyCurrent... no
    checking for GNU gettext in libc... yes
    checking whether to use NLS... yes
    checking where the gettext function comes from... libc
    checking for gcc... (cached) gcc
    checking whether we are using the GNU C compiler... (cached) yes
    checking whether gcc accepts -g... (cached) yes
    checking for gcc option to accept ISO C89... (cached) none needed
    checking dependency style of gcc... (cached) gcc3
    checking for g++... g++
    checking whether we are using the GNU C++ compiler... yes
    checking whether g++ accepts -g... yes
    checking dependency style of g++... gcc3
    checking how to run the C preprocessor... gcc -E
    checking how to run the C++ preprocessor... g++ -E
    checking for a BSD-compatible install... /usr/bin/install -c -p
    checking for a sed that does not truncate output... /bin/sed
    checking for grep that handles long lines and -e... /bin/grep
    checking for egrep... /bin/grep -E
    checking for ld used by gcc... /usr/bin/ld
    checking if the linker (/usr/bin/ld) is GNU ld... yes
    checking for /usr/bin/ld option to reload object files... -r
    checking for BSD-compatible nm... /usr/bin/nm -B
    checking whether ln -s works... yes
    checking how to recognise dependent libraries... pass_all
    checking for ANSI C header files... yes
    checking for sys/types.h... yes
    checking for sys/stat.h... yes
    checking for stdlib.h... yes
    checking for string.h... yes
    checking for memory.h... yes
    checking for strings.h... yes
    checking for inttypes.h... yes
    checking for stdint.h... yes
    checking for unistd.h... yes
    checking dlfcn.h usability... yes
    checking dlfcn.h presence... yes
    checking for dlfcn.h... yes
    checking for g77... no
    checking for xlf... no
    checking for f77... no
    checking for frt... no
    checking for pgf77... no
    checking for cf77... no
    checking for fort77... no
    checking for fl32... no
    checking for af77... no
    checking for xlf90... no
    checking for f90... no
    checking for pgf90... no
    checking for pghpf... no
    checking for epcf90... no
    checking for gfortran... no
    checking for g95... no
    checking for xlf95... no
    checking for f95... no
    checking for fort... no
    checking for ifort... no
    checking for ifc... no
    checking for efc... no
    checking for pgf95... no
    checking for lf95... no
    checking for ftn... no
    checking whether we are using the GNU Fortran 77 compiler... no
    checking whether  accepts -g... no
    checking the maximum length of command line arguments... 32768
    checking command to parse /usr/bin/nm -B output from gcc object... ok
    checking for objdir... .libs
    checking for ar... ar
    checking for ranlib... ranlib
    checking for strip... strip
    checking if gcc static flag  works... yes
    checking if gcc supports -fno-rtti -fno-exceptions... no
    checking for gcc option to produce PIC... -fPIC
    checking if gcc PIC flag -fPIC works... yes
    checking if gcc supports -c -o file.o... yes
    checking whether the gcc linker (/usr/bin/ld) supports shared libraries... yes
    checking whether -lc should be explicitly linked in... no
    checking dynamic linker characteristics... GNU/Linux ld.so
    checking how to hardcode library paths into programs... immediate
    checking whether stripping libraries is possible... yes
    checking for shl_load... no
    checking for shl_load in -ldld... no
    checking for dlopen... no
    checking for dlopen in -ldl... yes
    checking whether a program can dlopen itself... yes
    checking whether a statically linked program can dlopen itself... yes
    checking if libtool supports shared libraries... yes
    checking whether to build shared libraries... yes
    checking whether to build static libraries... yes
    configure: creating libtool
    appending configuration tag "CXX" to libtool
    checking for ld used by g++... /usr/bin/ld
    checking if the linker (/usr/bin/ld) is GNU ld... yes
    checking whether the g++ linker (/usr/bin/ld) supports shared libraries... yes
    checking for g++ option to produce PIC... -fPIC
    checking if g++ PIC flag -fPIC works... yes
    checking if g++ supports -c -o file.o... yes
    checking whether the g++ linker (/usr/bin/ld) supports shared libraries... yes
    checking dynamic linker characteristics... GNU/Linux ld.so
    checking how to hardcode library paths into programs... immediate
    checking whether stripping libraries is possible... yes
    checking for shl_load... (cached) no
    checking for shl_load in -ldld... (cached) no
    checking for dlopen... (cached) no
    checking for dlopen in -ldl... (cached) yes
    checking whether a program can dlopen itself... (cached) yes
    checking whether a statically linked program can dlopen itself... (cached) yes
    appending configuration tag "F77" to libtool
    checking whether to include debugging code... no
    checking whether to be pedantic... no
    checking whether to do profiling... no
    checking whether to enable GLUT... no
    checking whether to enable GTK... yes
    checking whether to enable Gnome... yes
    checking whether to enable KDE... no
    checking for gcc... (cached) gcc
    checking whether we are using the GNU C compiler... (cached) yes
    checking whether gcc accepts -g... (cached) yes
    checking for gcc option to accept ISO C89... (cached) none needed
    checking dependency style of gcc... (cached) gcc3
    checking how to run the C preprocessor... gcc -E
    checking whether we are using the GNU C++ compiler... (cached) yes
    checking whether g++ accepts -g... (cached) yes
    checking dependency style of g++... (cached) gcc3
    checking whether g++ supports -Wmissing-format-attribute... yes
    checking whether gcc supports -Wmissing-format-attribute... yes
    checking whether g++ supports -Wundef... yes
    checking whether g++ supports -Wno-long-long... yes
    checking whether g++ supports -Wnon-virtual-dtor... yes
    checking whether g++ supports -fno-exceptions... yes
    checking whether g++ supports -fno-check-new... yes
    checking whether g++ supports -fno-common... yes
    checking whether g++ supports -fexceptions... yes
    checking how to run the C++ preprocessor... g++ -E
    checking whether g++ supports -O0... yes
    checking whether g++ supports -Wl,--no-undefined... yes
    checking whether g++ supports -Wl,--allow-shlib-undefined... yes
    checking for X... no
    checking for deflate in -lz... no
    configure: error: zlib not found.

    As it says in the title when trying ./configure I’m getting configure: error: zlib not found. I have installed all packages zlib* from synaptic and am still getting this answer and am out of ideas of what to try.


  2. Re: configure: error: zlib not found.

    You need to have zlib1g-dev installed.
    If you do, then there may be a way to tell the configure script where to find it,
    using ./configure —help


  3. Exclamation Re: configure: error: zlib not found.

    you just need to install zlib1g-dev.

    PHP Code:


    apt-get install zlib1g-dev 



    ore

    PHP Code:


    apt-cache search zlib dev 



    Web 2.0 Be happy


  4. Re: configure: error: zlib not found.

    Quote Originally Posted by thijs
    View Post

    you just need to install zlib1g-dev.

    PHP Code:


    apt-get install zlib1g-dev 



    ore

    PHP Code:


    apt-cache search zlib dev 



    I have this and all the other zlib packages installed already and it is still giving me the error


  5. Re: configure: error: zlib not found.


Bookmarks

Bookmarks


Posting Permissions

Содержание

  1. Thread: problem: configure could not find the zlib library
  2. problem: configure could not find the zlib library
  3. Configure error no zlib found
  4. Установка PostgreSQL из исходных кодов

Thread: problem: configure could not find the zlib library

Thread Tools
Display

problem: configure could not find the zlib library

I’ve been trying to install some software with a zlib dependency (as well as a few others). The typical procedure for this is to install the packages: zlib1g and zlib1g-dev; however, once installed (and after I’ve rebooted for safe measure), the configuration script run with the necessary prefix

returns the following:

as per the instructions here: https://www.lsc-group.phys.uwm.edu/d. l-install.html, though in this post I’m only concerned with solving the configuration problem I’m having. Once it’s resolved, the rest of the code is easily installed.

I’m not sure what to do from here. I’ve tried installing from the source code provided at www.zlib.net, which worked on my laptop after the apt-get method did not. For it to work on the laptop, though, I had to install from source as root, which made me little nervous. Sadly, this approach did not work on my desktop.

FYI, I’m running Kubuntu 13.10 on my laptop and desktop. This problem has arisen each time I’ve reinstalled on a new system (I’ve tried using Arch, Manjaro, and Kubuntu). Interestingly, after installing Arch Linux, I had to download all the dependencies from source to work. Those stored in the Arch repos gave me the same error message as those in debian’s apt-get repos. The same was required for two other dependencies, «libframe» and «metaio», which I had to install from the arch user repository instead of the lscsoft data analysis packages found at: www.lsc-group.phys.usm.edu/daswg/download/software/source.

I’ve been searching for a while on google and can’t seem to find anything but recommendations to install from source, and more often from the apt-get repos. If these won’t work, I hope someone else can help me find a method that will! Hopefully I’ve provided sufficient details.

Last edited by jmbell; April 17th, 2014 at 01:15 AM .

Источник

Configure error no zlib found

I’ve been trying to install some software with a zlib dependency (as well as a few others). The typical procedure for this is to install the packages: zlib1g and zlib1g-dev; however, once installed (and after I’ve rebooted for safe measure), the configuration script run with the necessary prefix
./configure —prefix=/opt/ lscsoft returns the following:

checking for ZLIB. no
checking for library containing compress. no
configure: error: could not find the zlib library
configure: error: ./configure failed for lal

I’ve attached the configuration log here: 252105 for the software I’m trying to configure. I’ve tried the lib32 versions of zlib in the repos with no success as well. Note, too, that I’ve installed most of the dependencies to /opt/lscsoft as instructed here: https://www.lsc-group.phys.uwm.edu/daswg/docs/howto/lscsoft-install.html. Once installed, I’m supposed to be able to run
./00boot && ./configure —prefix=/opt/lscsoft && make install as per the instructions here: https://www.lsc-group.phys.uwm.edu/daswg/docs/howto/lal-install.html, though in this post I’m only concerned with solving the configuration problem I’m having. Once it’s resolved, the rest of the code is easily installed.

I’m not sure what to do from here. I’ve tried installing from the source code provided at www.zlib.net (http://www.zlib.net), which worked on my laptop after the apt-get method did not. For it to work on the laptop, though, I had to install from source as root, which made me little nervous. Sadly, this approach did not work on my desktop.

FYI, I’m running Kubuntu 13.10 on my laptop and desktop. This problem has arisen each time I’ve reinstalled on a new system (I’ve tried using Arch, Manjaro, and Kubuntu). Interestingly, after installing Arch Linux, I had to download all the dependencies from source to work. Those stored in the Arch repos gave me the same error message as those in debian’s apt-get repos. The same was required for two other dependencies, «libframe» and «metaio», which I had to install from the arch user repository instead of the lscsoft data analysis packages found at: www.lsc-group.phys.usm.edu/daswg/download/software/source (http://www.lsc-group.phys.usm.edu/daswg/download/software/source).

I’ve been searching for a while on google and can’t seem to find anything but recommendations to install from source, and more often from the apt-get repos. If these won’t work, I hope someone else can help me find a method that will! Hopefully I’ve provided sufficient details.

Источник

Установка PostgreSQL из исходных кодов

Когда-то я рассказал про установку Ubuntu на VirtualBox. Настала пора рассказать про установку PostgreSQL из исходных кодов.

Сразу приступаем (считаю, что виртуальная или реальная машина с Ubuntu у вас уже имеется).

Уфф, сам удивился, что получилось очень много. Погнали!

1. ИНФОРМАЦИЯ О СТЕНДЕ

Для чистоты эксперимента еще покажу, какая у меня ВМка получилась по характеристикам: кратко — основной пользователь test, имя компьютера testPC , xUbuntu 20.04.01, 2 Гб ОЗУ, 1 ядро процессора, 20 ГБ жесткий диск SSD.

Хм, команды (почерпнутые из интернета) на моём стенде говорят, что мой диск — HDD. Странно, но разбираться сейчас не буду. Он точно SSD 🙂

2. НАСТРОЙКА ОПЕРАЦИОННОЙ СИСТЕМЫ

После установки ОС нужно выполнить еще несколько шагов.

Сейчас образы (как минимум Ubuntu, но, наверное, и других дистрибутивов) стараются сделать поменьше размером и не включают многие нужные пакеты, особенно для компиляции из исходных кодов (так, отсутствуют GCC и MAKE, которые нам нужны).

Чтобы не устанавливать все нужные пакеты по отдельности, поставим один пакет-справочник build-essential, все нужное для компиляции подтянется при его установке (G++, GCC, dpkg-dev, make ) и другие пакеты:

После завершения установки, снова проверим версии:

Теперь всё в порядке и можно продолжать.

3. ПОЛУЧЕНИЕ ИСХОДНОГО КОДА POSTGRESQL

Устанавливать будем из исходного кода, а его нужно где-то взять. Для этого воспользуемся официальным репозитарием на GitHub`e (сервисе онлайн-хранения кода с контролем версий): https://github.com/postgres/postgres/

Можно прямо с этой страницы код нужной ветки скачать, но мы поступим по другому:

Сначала установим специальную утилиту GIT, с помощью которой можно отслеживать изменения в онлайн-репозитарии на GitHub`e, скачивать-закачивать изменения. Проверим, может она уже есть (так и называется git):

Отсутствует. Поэтому установим, как и рекомендуют:

Теперь можно скачивать с помощью этой утилиты исходный код из официального репозитария следующей командой:

Клонируем (копируем себе) данный репозитарий. Клонирование занимает некоторое время (минут пять), поэтому, пока оно идет — можете быстро посмотреть полезный сайт с информацией о GIT`e: https://git-scm.com/book/ru/v2. Там много интересного материала по работе с GIT и GitHub.

Была создана директория postgres, перейдем туда:

В ней лежит много разных директорий (и файлов), о которых сейчас знать не обязательно:

Нужно проверить, в какой ветке мы находимся. Для этого используется команда:

Мы в ветке по умолчанию (master), но устанавливать будем последнюю на данный момент стабильную версию — 13-ю. Посмотреть все ветки в репозитарии можно либо командой:

большой список выводится. Либо можно и на веб-странице репозитария в GitHub`e посмотреть:

Теперь нужно переключиться на нужную ветку. Для этого существует команда git checkout, которой передается название ветки:

Теперь всё так, как нам нужно — активна тринадцатая ветка, именно эту версию и будем устанавливать.

4. ДО УСТАНОВКИ POSTGRESQL

Рекомендую почитать страницу документации с требованиями при установке из исходного кода.

На этой странице нужно обратить внимание на следующие несколько моментов:

По умолчанию при сборке используется библиотека GNU Readline. Она позволяет запоминать все вводимые команды в psql (SQL-интерпретатор командной строки для PostgreSQL) и затем, пользуясь клавишами-стрелками, возвращаться к ним и редактировать их.

Если вы не желаете использовать эту возможность, вы должны добавить указание —without-readline для configure.

Если не указать —wihout-readline, при выполнении команды ./configure появится следующая ошибка:

Если не устанавливать эту возможность, тогда в psql`е будет не очень удобно работать. Например, выполняем отображение версии сервера, затем хотим повторить эту команду — если нажать на стрелку вверх (как это обычно делаем в терминале) появляются вот такие цифробуквы, которые нам ничем не помогут (^[[A):

В интернете рекомендуют ставить libreadline-dev.

Еще момент со страницы документации:

По умолчанию для сжатия данных используется библиотека zlib.

Если вы не хотите её использовать, вы должны передать configure указание —without-zlib.

А если не указать —wihout-zlib, при выполнении команды ./configure появится вот такая ошибка:

Если не устанавливать эту возможность, тогда не получиться заархивировать дамп базы данных (при использовании pg_dump). При выполнении данной команды с параметром установки сжатия данных (-Z 0..9) появится следующее сообщение:

В интернете рекомендуют ставить zlib1g-dev.

И заключительный момент:

Если вы хотите скомпилировать код из дерева Git, а не из специального пакета исходного кода, либо вы хотите работать с этим кодом, вам также понадобятся следующие пакеты:

Flex и Bison потребуются для сборки из содержимого Git или если вы меняете собственно файлы определений анализа и разбора.

Flex — средством для генерации программ. которые распознают шаблоны в тексте.

Bison — является генератором парсеров, генерирует программу, которая анализирует структуру текстовых файлов.

Мы ставим именно из дерева Git, поэтому сначала нужно поставить еще и их.

Итого — нужно доставить следующие пакеты:

следующим стандартным образом:

После завершения установки этих пакетов проверьте, чтобы вы находились в директории postgres, так как далее команды будем выполнять именно оттуда.

5. УСТАНОВКА POSTGRESQL

Процесс установки из исходного кода состоит из трех этапов:

  1. Конфигурирование — запуск команды ./configure . Эта команда ищет необходимые библиотеки и заголовочные файлы, осуществляет настройку особых параметров и подключается дополнительные библиотеки (описанные выше —without-параметры из этой области). В результате работы создается файлы Makefiles, содержащий всю необходимую информацию для сборки, его можно просмотреть в текстовом редакторе.
  2. Сборка (компиляция) — запуск команды make . Запускается компиляция программы из исходного кода. При работе используется Makefiles, в которых описаны все параметры сборки приложения. Результат работы — собранная программа в текущей директории.
  3. Установка — команда make install . Запускается непосредственная установка собранного приложения. Результат — работоспособная программа (если не было ошибок).

Пройдем эти шаги (в документации они тоже описаны):

Запускаем конфигурирование. Так как я установил и readline и gzip, я просто запускаю команду:

Выполнение этой команды у меня занимается около пятнадцати секунд. Последние пять строк вывода:

Опять же, если вы поставили и bizon, и flex — тогда ошибок не будет. Но, если этих программ не хватает, ошибки будут выглядеть следующим образом:

Не установлен bison:

Не установлен flex:

Если произошли такие ошибки, можно откатиться к начальному состоянию и запустить конфигурирование и установку заново. Для этого используется команда:

После нее снова нужно запускать ./configure с указанием необходимых параметров (если они есть). И потом — опять make.

Кстати, если вы хотите сохранить всё, что выводит команда make, её вывод можно отправить в файл следующим образом:

А если вы хотите собрать всё, что может быть собрано, включая документацию (страницы HTML и man) и дополнительные модули (contrib), выполните команду:

Финальное сообщение будет следующим:

На моей виртуальной машине сборка шла около семи минут (плюс-минус минута). Если сборка завершилась успешно, вы увидите следующее сообщение:

Далее можно запустить команду make check. С помощью этой команды можно протестировать собранный сервер до его установки с помощью регрессионных тестов. Регрессионные тесты — это комплект тестов, проверяющих, что PostgreSQL работает на вашем компьютере так, как задумано разработчиками. Давайте проверим:

По видимому, всё хорошо (проверка длилась около минуты). Идем дальше.

Установка — запускаем команду:

И через пару секунд я получил сообщение:

Ура! Установка PotsgreSQL 13-й версии успешно завершена!

Но пользоваться данной СУБД еще не получиться… Нужно произвести настройки (и в документации об этом говориться: Подготовка к работе и сопровождение сервера, ссылку даю на оглавление раздела).

6. НАСТРОЙКИ ДЛЯ РАБОТЫ С POSTGRESQL

Если кратко — нужно создать отдельного пользователя для PostgreSQL, инициализировать кластер баз данных, проверить работоспособность сервера, создать и сохранить переменные окружения и установить дополнительные модули (contrib).

А теперь — подробнее.

Не рекомендуется запускать сервер PostgreSQL от имени суперпользователя ОС. Поэтому — создадим для этого отдельного пользователя с помощью следующей команды:

Нужно будет указать пароль и дополнительные параметры.

Далее нужно создать директорию, где PostgreSQL будет хранить файлы баз данных и дополнительную информацию. Выполним команду создания директории:

/usr/local/pgsql/data — каталог с данными, можно указать любой. Я использую именно эту директорию.

И теперь нужно поменять владельца этой директории, ведь PostgreSQL у нас работать будет под пользователем postgres:

После этого работаем от пользователя postgres. Переключиться на него можно с помощью следующей команды:

Перед началом использования сервера, необходимо инициализировать кластер БД (подсказать PostgreSQL, что созданная выше директория будет являеться каталогом с данными сервера). Для этого используется утилита initdb.

При моих настройках, нужно перейти в директорию, где находятся исполняемые файлы PostgreSQL (можно руками поменять этот путь, но мы ничего не меняли и оставили значение по умолчанию):

Все нужные нам команды — initdb, psql, pg_dump и другие.

Но запускать эти команды просто так нельзя (без доп.настроек). Нужно зайти в эту директорию и запускать через точку: ./initdb; ./psql

Чтобы было удобнее, необходимо настроить переменную окружения $PATH.

$PATH — это переменная окружения, используемая для указания оболочке, где искать исполняемые файлы.

Но — сначала убедимся, что (ну мало ли?) ничего не настроена. Попробуем выполнить команду инициализации кластера. В документации описаны ключи этой команды, самый главный здесь D — путь до директории с данными, которую создали на предыдущем шаге:

Не настроено ничего. Но настроить довольно просто:

Данной командой мы к переменной $PATH добавляем в начало путь до нашей директории с программами.

А теперь снова проверим команду инициализации кластера:

Всё отлично! Теперь можно запускать сервер (даже команду нам подсказали). Но я воспользуюсь самой минимальной записью этой команды:

Ой… Не заработало. Не сработала эта команда потому, что я важный ключ -D не указал (каталог с данными). Можно его руками прописать, в ключе. А можно настроить переменную окружения $PGDATA. Если она заполнена — то pg_ctl будет оттуда информацию забирать. Ну и наличие такой переменной — это удобно. Настроим следующим образом:

И снова попробуем запустить сервер:

Сервер запустился. Подключимся к серверу с помощью psql`a:

Всё работает! Установлена версия PostgreSQL 13.1. Если стрелку вверх нажать в psql — будут подставляться предыдущие команды, удобно.

7. УСТАНОВКА РАСШИРЕНИЙ

Давайте еще попробуем проверить, какие расширения сейчас доступны:

Всего одно расширение. Не густооооааа, так ведь расширения (лично я) и не ставил никакие!

Давайте вы уже сами всё поставите. Команды такие:

  • Возвращаемся в суперпользователя ОС
  • cd

/postgres/contrib

  • make
  • sudo make install
  • А теперь вернемся в пользователя postgres:

    8. СОХРАНЕНИЕ ПЕРЕМЕННЫХ ОКРУЖЕНИЯ

    И проверим доступные расширения. Запускаем psql:

    Ну что ж такое! Только что всё работало! Проверим ка мы переменную $PATH:

    Нет нашего адреса! Как так?

    А вот так — когда мы же создавали переменную окружения, мы создали её для текущего сеанса пользователя. Закрыли терминал — переменная исчезла. Нужно её создать и сохранить. Я использую следующий способ — сохранение переменных в файле .bashrc (это файл с командами, которые выполняются при запуске оболочки bash).

    Перейдите в домашнюю директорию пользователя postgres (для других пользователей можно сделать то же самое, так как .bashrc — это файл для конкретного пользователя) и проверьте, какие скрытые файлы там есть, точка в начале означает, что это скрытый файл:

    У меня вывод получился такой:

    Не помню уже, кто и когда создал этот файл. Ну и ничего страшного. Если у вас такого файл нет — создайте его:

    Открываем его любым удобным редактором на изменение (я использую nano):

    И добавляем туда (в самый конец, если в файле уже что-то есть) объявление двух наших переменных окружения:

    Нажимаем Ctrl + x для выхода с сохранением, подтверждаем сохранения.

    Чтобы переменные применились — нужно повторно запустить bash — я вернулся в моего пользователя test, а потом снова зашел в postgres и запустил команду psql:

    И проверим доступные расширения (ранее у нас было только одно, но вы же установили всё из папки /contrib?):

    Сорок одно доступное расширение! Вот теперь всё работает так, как я и хотел.

    Мы поставили необходимые библиотеки для корректной установки PostgreSQL, установили сервер, осуществили необходимые настройки (стрелка вверх в psql работает), убедились в работоспособности PostgreSQL, установили все доступные расширения.

    Источник

    PostgreSQLКогда-то я рассказал про установку Ubuntu на VirtualBox. Настала пора рассказать про установку PostgreSQL из исходных кодов.

    Сразу приступаем (считаю, что виртуальная или реальная машина с Ubuntu у вас уже имеется).

    Что нас ждет:

    1. Информация о стенде
    2. Настройка операционной системы
    3. Получение исходного кода PostgreSQL
    4. До установки PostgreSQL
    5. Установка PostgreSQL
    6. Настройки для работы с PostgreSQL
    7. Установка расширений
    8. Сохранение переменных окружения
    9. Итоги

    Уфф, сам удивился, что получилось очень много. Погнали!

    1. ИНФОРМАЦИЯ О СТЕНДЕ

    Для чистоты эксперимента еще покажу, какая у меня ВМка получилась по характеристикам: кратко — основной пользователь test, имя компьютера testPC, xUbuntu 20.04.01, 2 Гб ОЗУ, 1 ядро процессора, 20 ГБ жесткий диск SSD.

    Больше информации о стенде:

    test@testPC:~$ lscpu | head -n 17
    Architecture:                	x86_64
    CPU op-mode(s):              	32-bit, 64-bit
    Byte Order:                  	Little Endian
    Address sizes:               	39 bits physical, 48 bits virtual
    CPU(s):                      	1
    On-line CPU(s) list:         	0
    Thread(s) per core:          	1
    Core(s) per socket:          	1
    Socket(s):                   	1
    NUMA node(s):                	1
    Vendor ID:                   	GenuineIntel
    CPU family:                  	6
    Model:                       	142
    Model name:                  	Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz
    Stepping:                    	12
    CPU MHz:                     	1799.959
    BogoMIPS:                    	3599.91
    
    test@testPC:~$ free -h
    total    		used    free  		shared  	buff/cache   available
    Mem:      	1,9Gi   		1,1Gi   	188Mi    	32Mi   		674Mi   	683Mi
    Swap:     	923Mi      	0B   	923Mi
    
    
    test@testPC:~$ sudo fdisk -l | grep '^/dev'
    [sudo] password for test:
    /dev/sda1  *   	2048  1050623  1048576  512M  b W95 FAT32
    /dev/sda2   	1052670 41940991 40888322 19,5G  5 Extended
    /dev/sda5   	1052672 41940991 40888320 19,5G 83 Linux
    
    test@testPC:~$ sudo lshw -class display
      *-display            	 
       	description: VGA compatible controller
       	product: VirtualBox Graphics Adapter
       	vendor: InnoTek Systemberatung GmbH
       	physical id: 2
       	bus info: pci@0000:00:02.0
       	version: 00
       	width: 32 bits
       	clock: 33MHz
       	capabilities: vga_controller rom
       	configuration: driver=vboxvideo latency=0
       	resources: irq:18 memory:e0000000-e0ffffff memory:c0000-dffff
    
    test@testPC:~$ lsb_release -a
    No LSB modules are available.
    Distributor ID:    Ubuntu
    Description:    Ubuntu 20.04.1 LTS
    Release:    20.04
    Codename:    focal
    
    

    Хм, команды (почерпнутые из интернета) на моём стенде говорят, что мой диск — HDD. Странно, но разбираться сейчас не буду. Он точно SSD 🙂

    [свернуть]

    2. НАСТРОЙКА ОПЕРАЦИОННОЙ СИСТЕМЫ

    После установки ОС нужно выполнить еще несколько шагов.

    Сейчас образы (как минимум Ubuntu, но, наверное, и других дистрибутивов) стараются сделать поменьше размером и не включают многие нужные пакеты, особенно для компиляции из исходных кодов (так, отсутствуют GCC и MAKE, которые нам нужны).

    Давайте проверим:

    test@testPC:~$ gcc --version
    Command 'gcc' not found, but can be installed with:
    sudo apt install gcc
    
    test@testPC:~$ make --version
    Command 'make' not found, but can be installed with:
    sudo apt install make    # version 4.2.1-1.2, or
    sudo apt install make-guile  # version 4.2.1-1.2
    

    Чтобы не устанавливать все нужные пакеты по отдельности, поставим один пакет-справочник build-essential, все нужное для компиляции подтянется при его установке (G++, GCC, dpkg-dev, make) и другие пакеты:

    sudo apt update
    sudo apt install build-essential
    

    После завершения установки, снова проверим версии:

    test@testPC:~$ gcc --version
    gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0
    Copyright (C) 2019 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    
    test@testPC:~$ make --version
    GNU Make 4.2.1
    Built for x86_64-pc-linux-gnu
    Copyright (C) 1988-2016 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.
    


    Теперь всё в порядке и можно продолжать.

    3. ПОЛУЧЕНИЕ ИСХОДНОГО КОДА POSTGRESQL

    Устанавливать будем из исходного кода, а его нужно где-то взять. Для этого воспользуемся официальным репозитарием на GitHub`e (сервисе онлайн-хранения кода с контролем версий): https://github.com/postgres/postgres/

    Можно прямо с этой страницы код нужной ветки скачать, но мы поступим по другому:

    PG-DownloadZip

    Сначала установим специальную утилиту GIT, с помощью которой можно отслеживать изменения в онлайн-репозитарии на GitHub`e, скачивать-закачивать изменения. Проверим, может она уже есть (так и называется git):

    test@testPC:~$ git --version
    Command 'git' not found, but can be installed with:
    sudo apt install git
    


    Отсутствует. Поэтому установим, как и рекомендуют:

    sudo apt install git
    

    Теперь можно скачивать с помощью этой утилиты исходный код из официального репозитария следующей командой:

    git clone https://github.com/postgres/postgres
    

    Клонируем (копируем себе) данный репозитарий. Клонирование занимает некоторое время (минут пять), поэтому, пока оно идет — можете быстро посмотреть полезный сайт с информацией о GIT`e: https://git-scm.com/book/ru/v2. Там много интересного материала по работе с GIT и GitHub.

    test@testPC:~$ git clone https://github.com/postgres/postgres
    Cloning into 'postgres'...
    remote: Enumerating objects: 25, done.
    remote: Counting objects: 100% (25/25), done.
    remote: Compressing objects: 100% (25/25), done.
    remote: Total 811101 (delta 0), reused 1 (delta 0), pack-reused 811076
    Receiving objects: 100% (811101/811101), 504.15 MiB | 2.96 MiB/s, done.
    Resolving deltas: 100% (665498/665498), done.
    Updating files: 100% (5794/5794), done.
    


    Была создана директория postgres, перейдем туда:

    cd postgres

    В ней лежит много разных директорий (и файлов), о которых сейчас знать не обязательно:

    test@testPC:~/postgres$ ls
    aclocal.m4  configure contrib doc         HISTORY   README  src
    config  configure.ac  COPYRIGHT  GNUmakefile.in  Makefile  README.git
    

    Нужно проверить, в какой ветке мы находимся. Для этого используется команда:

    test@testPC:~/postgres$ git status
    On branch master
    Your branch is up to date with 'origin/master'.
    nothing to commit, working tree clean
    

    Мы в ветке по умолчанию (master), но устанавливать будем последнюю на данный момент стабильную версию — 13-ю. Посмотреть все ветки в репозитарии можно либо командой:

    git branch -a

    Вывод git branch -a:

    test@testPC:~/postgres$ git branch -a
    * master
      remotes/origin/HEAD -> origin/master
      remotes/origin/REL2_0B
      remotes/origin/REL6_4
      remotes/origin/REL6_5_PATCHES
      remotes/origin/REL7_0_PATCHES
      remotes/origin/REL7_1_STABLE
      remotes/origin/REL7_2_STABLE
      remotes/origin/REL7_3_STABLE
      remotes/origin/REL7_4_STABLE
      remotes/origin/REL8_0_STABLE
      remotes/origin/REL8_1_STABLE
      remotes/origin/REL8_2_STABLE
      remotes/origin/REL8_3_STABLE
      remotes/origin/REL8_4_STABLE
      remotes/origin/REL8_5_ALPHA1_BRANCH
      remotes/origin/REL8_5_ALPHA2_BRANCH
      remotes/origin/REL8_5_ALPHA3_BRANCH
      remotes/origin/REL9_0_ALPHA4_BRANCH
      remotes/origin/REL9_0_ALPHA5_BRANCH
      remotes/origin/REL9_0_STABLE
      remotes/origin/REL9_1_STABLE
      remotes/origin/REL9_2_STABLE
      remotes/origin/REL9_3_STABLE
      remotes/origin/REL9_4_STABLE
      remotes/origin/REL9_5_STABLE
      remotes/origin/REL9_6_STABLE
      remotes/origin/REL_10_STABLE
      remotes/origin/REL_11_STABLE
      remotes/origin/REL_12_STABLE
      remotes/origin/REL_13_STABLE
      remotes/origin/Release_1_0_3
      remotes/origin/WIN32_DEV
      remotes/origin/ecpg_big_bison
      remotes/origin/master
    

    [свернуть]

    большой список выводится. Либо можно и на веб-странице репозитария в GitHub`e посмотреть:

    PG_Branches

    Теперь нужно переключиться на нужную ветку. Для этого существует команда git checkout, которой передается название ветки:

    test@testPC:~/postgres$ git checkout REL_13_STABLE
    Branch 'REL_13_STABLE' set up to track remote branch 'REL_13_STABLE' from 'origin'.
    Switched to a new branch 'REL_13_STABLE'
    test@testPC:~/postgres$ git status
    On branch REL_13_STABLE
    Your branch is up to date with 'origin/REL_13_STABLE'.
    
    nothing to commit, working tree clean
    

    Теперь всё так, как нам нужно — активна тринадцатая ветка, именно эту версию и будем устанавливать.

    4. ДО УСТАНОВКИ POSTGRESQL

    Рекомендую почитать страницу документации с требованиями при установке из исходного кода.

    На этой странице нужно обратить внимание на следующие несколько моментов:

    По умолчанию при сборке используется библиотека GNU Readline. Она позволяет запоминать все вводимые команды в psql (SQL-интерпретатор командной строки для PostgreSQL) и затем, пользуясь клавишами-стрелками, возвращаться к ним и редактировать их.

    Если вы не желаете использовать эту возможность, вы должны добавить указание —without-readline для configure.

    Если не указать —wihout-readline, при выполнении команды ./configure появится следующая ошибка:

    ...
    configure: error: readline library not found
    If you have readline already installed, see config.log for details on the 
    failure.  It is possible the compiler isn't looking in the proper directory.
    Use --without-readline to disable readline support.
    

    Если не устанавливать эту возможность, тогда в psql`е будет не очень удобно работать. Например, выполняем отображение версии сервера, затем хотим повторить эту команду — если нажать на стрелку вверх (как это обычно делаем в терминале) появляются вот такие цифробуквы, которые нам ничем не помогут (^[[A):

    postgres@testPC:~$ psql
    psql (12.5)
    Type "help" for help.
    
    postgres=# select version();
                                               	version                     	 
                     	 
    ----------------------------------------------------------------------------------------------------
     PostgreSQL 12.5 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 9.3.0-17ubuntu1
    ~20.04) 9.3.0, 64-bit
    (1 row)
    
    postgres=# ^[[A
    

    В интернете рекомендуют ставить libreadline-dev.

    Еще момент со страницы документации:

    По умолчанию для сжатия данных используется библиотека zlib.

    Если вы не хотите её использовать, вы должны передать configure указание —without-zlib.

    А если не указать —wihout-zlib, при выполнении команды ./configure появится вот такая ошибка:

    ...
    configure: error: zlib library not found
    If you have zlib already installed, see config.log for details on the
    failure.  It is possible the compiler isn't looking in the proper directory.
    Use --without-zlib to disable zlib support.
    

    Если не устанавливать эту возможность, тогда не получиться заархивировать дамп базы данных (при использовании pg_dump). При выполнении данной команды с параметром установки сжатия данных (-Z 0..9) появится следующее сообщение:

    postgres@testPC:/usr/local/pgsql/data$ pg_dump -d postgres -F c -Z 2 -f mydump
    pg_dump: warning: requested compression not available in this installation -- archive will be uncompressed
    

    В интернете рекомендуют ставить zlib1g-dev.

    И заключительный момент:

    Если вы хотите скомпилировать код из дерева Git, а не из специального пакета исходного кода, либо вы хотите работать с этим кодом, вам также понадобятся следующие пакеты:

    Flex и Bison потребуются для сборки из содержимого Git или если вы меняете собственно файлы определений анализа и разбора.

    Flex — средством для генерации программ. которые распознают шаблоны в тексте.

    Bison — является генератором парсеров, генерирует программу, которая анализирует структуру текстовых файлов.

    Мы ставим именно из дерева Git, поэтому сначала нужно поставить еще и их.

    Итого — нужно доставить следующие пакеты:

    • libreadline-dev
    • zlib1g-dev
    • flex
    • bison

    следующим стандартным образом:

    sudo apt install libreadline-dev
    sudo apt install zlib1g-dev
    sudo apt install flex
    sudo apt install bison
    

    После завершения установки этих пакетов проверьте, чтобы вы находились в директории postgres, так как далее команды будем выполнять именно оттуда.

    5. УСТАНОВКА POSTGRESQL

    Процесс установки из исходного кода состоит из трех этапов:

    1. Конфигурирование — запуск команды ./configure. Эта команда ищет необходимые библиотеки и заголовочные файлы, осуществляет настройку особых параметров и подключается дополнительные библиотеки (описанные выше —without-параметры из этой области). В результате работы создается файлы Makefiles, содержащий всю необходимую информацию для сборки, его можно просмотреть в текстовом редакторе.
    2. Сборка (компиляция) — запуск команды make. Запускается компиляция программы из исходного кода. При работе используется Makefiles, в которых описаны все параметры сборки приложения. Результат работы — собранная программа в текущей директории.
    3. Установка — команда make install. Запускается непосредственная установка собранного приложения. Результат — работоспособная программа (если не было ошибок).

    Пройдем эти шаги (в документации они тоже описаны):

    Запускаем конфигурирование. Так как я установил и readline и gzip, я просто запускаю команду:

    ./configure

    Выполнение этой команды у меня занимается около пятнадцати секунд. Последние пять строк вывода:

    config.status: linking src/backend/port/tas/dummy.s to src/backend/port/tas.s
    config.status: linking src/backend/port/posix_sema.c to src/backend/port/pg_sema.c
    config.status: linking src/backend/port/sysv_shmem.c to src/backend/port/pg_shmem.c
    config.status: linking src/include/port/linux.h to src/include/pg_config_os.h
    config.status: linking src/makefiles/Makefile.linux to src/Makefile.port
    

    Далее — сборка:

    make

    Опять же, если вы поставили и bizon, и flex — тогда ошибок не будет. Но, если этих программ не хватает, ошибки будут выглядеть следующим образом:

    Не установлен bison:

    ERROR: `bison' is missing on your system. It is needed to create the
    file `gram.c'. You can either get bison from a GNU mirror site
    or download an official distribution of PostgreSQL, which contains
    pre-packaged bison output.
    ***
    make[2]: *** [../../../src/Makefile.global:750: gram.c] Error 1
    make[2]: Leaving directory '/home/test/postgres/src/backend/parser'
    make[1]: *** [Makefile:137: parser/gram.h] Error 2
    make[1]: Leaving directory '/home/test/postgres/src/backend'
    make: *** [src/Makefile.global:388: submake-generated-headers] Error 2
    

    Не установлен flex:

    ERROR: `flex' is missing on your system. It is needed to create the
    file `bootscanner.c'. You can either get flex from a GNU mirror site
    or download an official distribution of PostgreSQL, which contains
    pre-packaged flex output.
    ***
    make[3]: *** [../../../src/Makefile.global:745: bootscanner.c] Error 1
    make[3]: Leaving directory '/home/test/postgres/src/backend/bootstrap'
    make[2]: *** [common.mk:39: bootstrap-recursive] Error 2
    make[2]: Leaving directory '/home/test/postgres/src/backend'
    make[1]: *** [Makefile:42: all-backend-recurse] Error 2
    make[1]: Leaving directory '/home/test/postgres/src'
    make: *** [GNUmakefile:11: all-src-recurse] Error 2
    

    Если произошли такие ошибки, можно откатиться к начальному состоянию и запустить конфигурирование и установку заново. Для этого используется команда:

    make distclean

    После нее снова нужно запускать ./configure с указанием необходимых параметров (если они есть). И потом — опять make.

    Кстати!

    Кстати, если вы хотите сохранить всё, что выводит команда make, её вывод можно отправить в файл следующим образом:

    make > make.txt

    [свернуть]

    И на счет дополнительных режимов установки

    А если вы хотите собрать всё, что может быть собрано, включая документацию (страницы HTML и man) и дополнительные модули (contrib), выполните команду:

    make world

    Финальное сообщение будет следующим:

    PostgreSQL, contrib and documentation successfully made. Ready to install.
    

    [свернуть]

    На моей виртуальной машине сборка шла около семи минут (плюс-минус минута). Если сборка завершилась успешно, вы увидите следующее сообщение:

    All of PostgreSQL successfully made. Ready to install.
    

    Далее можно запустить команду make check. С помощью этой команды можно протестировать собранный сервер до его установки с помощью регрессионных тестов. Регрессионные тесты — это комплект тестов, проверяющих, что PostgreSQL работает на вашем компьютере так, как задумано разработчиками. Давайте проверим:

    make check
    
    =======================
     All 201 tests passed.
    =======================
    

    По видимому, всё хорошо (проверка длилась около минуты). Идем дальше.

    Установка — запускаем команду:

    sudo make install

    И через пару секунд я получил сообщение:

    PostgreSQL installation complete.

    Ура! Установка PotsgreSQL 13-й версии успешно завершена!

    Но пользоваться данной СУБД еще не получиться… Нужно произвести настройки (и в документации об этом говориться: Подготовка к работе и сопровождение сервера, ссылку даю на оглавление раздела).

    6. НАСТРОЙКИ ДЛЯ РАБОТЫ С POSTGRESQL

    Если кратко — нужно создать отдельного пользователя для PostgreSQL, инициализировать кластер баз данных, проверить работоспособность сервера, создать и сохранить переменные окружения и установить дополнительные модули (contrib).

    А теперь — подробнее.

    Не рекомендуется запускать сервер PostgreSQL от имени суперпользователя ОС. Поэтому — создадим для этого отдельного пользователя с помощью следующей команды:

    test@testPC:~/postgres$ sudo adduser postgres
    Adding user `postgres' ...
    Adding new group `postgres' (1001) ...
    Adding new user `postgres' (1001) with group `postgres' ...
    Creating home directory `/home/postgres' ...
    Copying files from `/etc/skel' ...
    New password:
    Retype new password:
    passwd: password updated successfully
    Changing the user information for postgres
    Enter the new value, or press ENTER for the default
        Full Name []:
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
    Is the information correct? [Y/n] y
    

    Нужно будет указать пароль и дополнительные параметры.

    Далее нужно создать директорию, где PostgreSQL будет хранить файлы баз данных и дополнительную информацию. Выполним команду создания директории:

    sudo mkdir /usr/local/pgsql/data

    /usr/local/pgsql/data — каталог с данными, можно указать любой. Я использую именно эту директорию.

    И теперь нужно поменять владельца этой директории, ведь PostgreSQL у нас работать будет под пользователем postgres:

    sudo chown postgres /usr/local/pgsql/data/

    После этого работаем от пользователя postgres. Переключиться на него можно с помощью следующей команды:

    sudo su - postgres

    Перед началом использования сервера, необходимо инициализировать кластер БД (подсказать PostgreSQL, что созданная выше директория будет являеться каталогом с данными сервера). Для этого используется утилита initdb.

    При моих настройках, нужно перейти в директорию, где находятся исполняемые файлы PostgreSQL (можно руками поменять этот путь, но мы ничего не меняли и оставили значение по умолчанию):

    cd /usr/local/pgsql/bin
    ls
    
    postgres@testPC:/usr/local/pgsql/bin$ ls
    clusterdb   pg_archivecleanup  pg_dump     	pg_rewind    	postmaster
    createdb	pg_basebackup  	pg_dumpall  	pg_test_fsync	psql
    createuser  pgbench        	pg_isready  	pg_test_timing   reindexdb
    dropdb  	pg_checksums   	pg_receivewal   pg_upgrade   	vacuumdb
    dropuser	pg_config      	pg_recvlogical  pg_verifybackup
    ecpg    	pg_controldata 	pg_resetwal 	pg_waldump
    initdb  	pg_ctl         	pg_restore  	postgres
    

    Все нужные нам команды — initdb, psql, pg_dump и другие.

    Но запускать эти команды просто так нельзя (без доп.настроек). Нужно зайти в эту директорию и запускать через точку: ./initdb; ./psql

    Чтобы было удобнее, необходимо настроить переменную окружения $PATH.

    $PATH — это переменная окружения, используемая для указания оболочке, где искать исполняемые файлы.

    Но — сначала убедимся, что (ну мало ли?) ничего не настроена. Попробуем выполнить команду инициализации кластера. В документации описаны ключи этой команды, самый главный здесь D — путь до директории с данными, которую создали на предыдущем шаге:

    initdb -k -D /usr/local/pgsql/data/
    
    postgres@testPC:/usr/local/pgsql/bin$ initdb -k -D /usr/local/pgsql/data/
    initdb: command not found
    

    Не настроено ничего. Но настроить довольно просто:

    export PATH=/usr/local/pgsql/bin/:$PATH

    Данной командой мы к переменной $PATH добавляем в начало путь до нашей директории с программами.

    А теперь снова проверим команду инициализации кластера:

    Вывод команды initdb:

    postgres@testPC:/usr/local/pgsql/bin$ initdb -k -D /usr/local/pgsql/data/
    The files belonging to this database system will be owned by user "postgres".
    This user must also own the server process.
    
    The database cluster will be initialized with locales
      COLLATE:  en_US.UTF-8
      CTYPE:	en_US.UTF-8
      MESSAGES: en_US.UTF-8
      MONETARY: ru_RU.UTF-8
      NUMERIC:  ru_RU.UTF-8
      TIME: 	ru_RU.UTF-8
    The default database encoding has accordingly been set to "UTF8".
    The default text search configuration will be set to "english".
    
    Data page checksums are enabled.
    
    fixing permissions on existing directory /usr/local/pgsql/data ... ok
    creating subdirectories ... ok
    selecting dynamic shared memory implementation ... posix
    selecting default max_connections ... 100
    selecting default shared_buffers ... 128MB
    selecting default time zone ... Europe/Moscow
    creating configuration files ... ok
    running bootstrap script ... ok
    performing post-bootstrap initialization ... ok
    syncing data to disk ... ok
    
    initdb: warning: enabling "trust" authentication for local connections
    You can change this by editing pg_hba.conf or using the option -A, or
    --auth-local and --auth-host, the next time you run initdb.
    
    Success. You can now start the database server using:
    
    	pg_ctl -D /usr/local/pgsql/data/ -l logfile start
    

    [свернуть]

    Всё отлично! Теперь можно запускать сервер (даже команду нам подсказали). Но я воспользуюсь самой минимальной записью этой команды:

    postgres@testPC:/usr/local/pgsql/bin$ pg_ctl start
    pg_ctl: no database directory specified and environment variable PGDATA unset
    Try "pg_ctl --help" for more information.
    

    Ой… Не заработало. Не сработала эта команда потому, что я важный ключ -D не указал (каталог с данными). Можно его руками прописать, в ключе. А можно настроить переменную окружения $PGDATA. Если она заполнена — то pg_ctl будет оттуда информацию забирать. Ну и наличие такой переменной — это удобно. Настроим следующим образом:

    export PGDATA=/usr/local/pgsql/data/

    И снова попробуем запустить сервер:

    postgres@testPC:/usr/local/pgsql/bin$ pg_ctl start
    waiting for server to start....2020-11-15 00:22:43.215 MSK [44295] LOG:  starting PostgreSQL 13.1 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0, 64-bit
    2020-11-15 00:22:43.218 MSK [44295] LOG:  listening on IPv4 address "127.0.0.1", port 5432
    2020-11-15 00:22:43.224 MSK [44295] LOG:  listening on Unix socket "/tmp/.s.PGSQL.5432"
    2020-11-15 00:22:43.230 MSK [44296] LOG:  database system was shut down at 2020-11-15 00:12:50 MSK
    2020-11-15 00:22:43.234 MSK [44295] LOG:  database system is ready to accept connections
     done
    server started
    

    Сервер запустился. Подключимся к серверу с помощью psql`a:

    postgres@testPC:/usr/local/pgsql/bin$ psql
    psql (13.1)
    Type "help" for help.
    
    postgres=# select version();
                                               	version                     	 
                     	 
    ------------------------------------------------------------------------------------------------------
     PostgreSQL 13.1 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 9.3.0-17ubuntu1
    ~20.04) 9.3.0, 64-bit
    (1 row)
    
    postgres=#
    

    Всё работает! Установлена версия PostgreSQL 13.1. Если стрелку вверх нажать в psql — будут подставляться предыдущие команды, удобно.

    7. УСТАНОВКА РАСШИРЕНИЙ

    Давайте еще попробуем проверить, какие расширения сейчас доступны:

    postgres=# select * from pg_available_extensions order by name;
      name   | default_version | installed_version |       	comment       	 
    ---------+-----------------+-------------------+------------------------------
     plpgsql | 1.0         	| 1.0           	| PL/pgSQL procedural language
    (1 row)
    

    Всего одно расширение. Не густооооааа, так ведь расширения (лично я) и не ставил никакие!

    Давайте вы уже сами всё поставите. Команды такие:

    • Возвращаемся в суперпользователя ОС
    • cd ~/postgres/contrib
    • make
    • sudo make install

    А теперь вернемся в пользователя postgres:

    sudo su - postgres

    8. СОХРАНЕНИЕ ПЕРЕМЕННЫХ ОКРУЖЕНИЯ

    И проверим доступные расширения. Запускаем psql:

    postgres@testPC:~$ psql
    
    Command 'psql' not found, but can be installed with:
    
    apt install postgresql-client-common
    Please ask your administrator.
    

    Ну что ж такое! Только что всё работало! Проверим ка мы переменную $PATH:

    postgres@testPC:~$ echo $PATH
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
    

    Нет нашего адреса! Как так?

    А вот так — когда мы же создавали переменную окружения, мы создали её для текущего сеанса пользователя. Закрыли терминал — переменная исчезла. Нужно её создать и сохранить. Я использую следующий способ — сохранение переменных в файле .bashrc (это файл с командами, которые выполняются при запуске оболочки bash).

    Перейдите в домашнюю директорию пользователя postgres (для других пользователей можно сделать то же самое, так как .bashrc — это файл для конкретного пользователя) и проверьте, какие скрытые файлы там есть, точка в начале означает, что это скрытый файл:

    cd ~
    ls -a
    

    У меня вывод получился такой:

    postgres@testPC:~$ ls -a
    .   .bash_history  .bashrc  .local	.psql_history  .xscreensaver
    ..  .bash_logout   .config  .profile  .Xdefaults
    

    Не помню уже, кто и когда создал этот файл. Ну и ничего страшного. Если у вас такого файл нет — создайте его:

    touch .bashrc

    Открываем его любым удобным редактором на изменение (я использую nano):

    nano .bashrc

    И добавляем туда (в самый конец, если в файле уже что-то есть) объявление двух наших переменных окружения:

    export PATH=/usr/local/pgsql/bin/:$PATH
    export PGDATA=/usr/local/pgsql/data/
    

    Нажимаем Ctrl + x для выхода с сохранением, подтверждаем сохранения.

    Чтобы переменные применились — нужно повторно запустить bash — я вернулся в моего пользователя test, а потом снова зашел в postgres и запустил команду psql:

    test@testPC:~/postgres/contrib$ sudo su - postgres
    [sudo] password for test:
    postgres@testPC:~$ psql
    psql (13.1)
    Type "help" for help.
    
    postgres=#
    

    И проверим доступные расширения (ранее у нас было только одно, но вы же установили всё из папки /contrib?):

    postgres=# select count(1) from pg_available_extensions;
     count
    -------
    	41
    (1 row)
    

    Сорок одно доступное расширение! Вот теперь всё работает так, как я и хотел.

    9. ИТОГИ

    Мы поставили необходимые библиотеки для корректной установки PostgreSQL, установили сервер, осуществили необходимые настройки (стрелка вверх в psql работает), убедились в работоспособности PostgreSQL, установили все доступные расширения.

    Получилось очень много, но в одном месте.

    when installing Postgres-9.0.1 on CentOS-5../configure — output checking for inflate in -lz… no configure: error: zlib library not found

    When we are  installing Postgres-9.0.1 on CentOS-5. 

    Below is the error we are encountering —

    ./configure -- output
    checking for inflate in -lz... no
    configure: error: zlib library not found 

    If you have zlib already installed, see config.log for details on the

    failure.  It is possible the compiler isn’t looking in the proper directory.

    Use —without-zlib to disable zlib support.

    Inside the config.log, below is what we see —

    configure:8204: checking for inflate in -lz
    configure:8239: gcc -o conftest -O2 -Wall -Wmissing-prototypes
    -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels
    -fno-strict-aliasing -fwrapv  -D_GNU_SOURCE    conftest.c -lz  -lreadline
    -ltermcap -lcrypt -ldl -lm  >&5
    /usr/bin/ld: skipping incompatible /usr/lib/libz.a when searching for -lz
    /usr/bin/ld: cannot find -lz

    Zlib rpms are installed and below is the rpm -qa output —

    [root(at)localhost postgresql-9.0.1]# rpm -qa | grep zlib
    zlib-1.2.3-4.el5
    jzlib-1.0.7-4jpp.1
    zlib-devel-1.2.3-4.el5
    
    zlib-1.2.3-3

    Popular posts from this blog

    How to find the server is whether standby (slave) or primary(master) in Postgresql replication ?

    Method 1 You can check the mode of the server using «pg_controldata». [pgsql@test~]$ pg_controldata /usr/local/pgsql/data84/ Database cluster state: in archive recovery —> This is Standby Database Database cluster state: in production —> This is Production Database [Master] Method 2 You can use pg_is_in_recovery() which returns True if recovery is still in progress(so the server is running in standby mode or slave) postgres=# select pg_is_in_recovery(); pg_is_in_recovery ——————- t (1 row) If Return    false   so the server is running in primary mode or master postgres=# select pg_is_in_recovery(); pg_is_in_recovery ——————- f (1 row)

    How to Return a Result Set from a PostgreSQL Stored Procedure

    Image

    Both stored procedures and user-defined functions are created with CREATE FUNCTION statement in PostgreSQL. To return one or more result sets (cursors in terms of PostgreSQL), you have to use  refcursor  return type. Quick Example : — Procedure that returns a single result set (cursor) CREATE OR REPLACE FUNCTION show_cities ( ) RETURNS refcursor AS $$ DECLARE ref refcursor; — Declare a cursor variable BEGIN OPEN ref FOR SELECT city , state FROM cities; — Open a cursor RETURN ref; — Return the cursor to the caller END ; $$ LANGUAGE plpgsql; Overview : Return Multiple Result Sets Cursor Lifetime Until the  end  of transaction Auto-commit Must be  off Transaction must be active so the caller can see a result set Important Note : The cursor remains open until the end of transaction, and since PostgreSQL works

    PostgreSQL New version upgrade

    Image

    In this blog we are going to upgrade the postgresql server from 9.5 to 11.3 . We are upgraded the postgres server by using pg_upgrade utility as well as logical backup method , you can follow anyone  of the method . Collect the server details before proceed  upgrade activity.  Title PostgreSQL VERSION 9.5 PostgreSQL VERSION 11.3 DATA DIRECTORY /data_9.5 /data_11.3 BIN path /opt/postgresql/9.5 /opt/postgresql/11.3 PORT 50000 5432 PREREQUEST : =========== Step 1. Check the application backend connection if any application connected , Disconnect the application from DB server. Below command will be helpful to checking backend connection : template1=# select datname, count(*) from pg_stat_activity group by datname; datname | count ————+——- testdb | 1 template1 | 0 (2 rows) template1=# select datname, numbackends from pg_stat_database; datname | numbackends ————+————- testdb | 1 template1 | 0 templ

    How to Get Table Size, Database Size, Indexes Size, schema Size, Tablespace Size, column Size in PostgreSQL Database

    In this post, I am sharing few important function for finding the size of database, table and index in PostgreSQL. Finding object size in postgresql database is very important and common. Is it very useful to know the exact size occupied by the object at the tablespace. The object size in the following scripts is in GB. The scripts have been formatted to work very easily with PUTTY SQL Editor. 1. Checking table size excluding table dependency: SELECT pg_size_pretty(pg_relation_size(‘mhrordhu_shk.mut_kharedi_audit’)); pg_size_pretty —————- 238 MB (1 row) 2. Checking table size including table dependency: SELECT pg_size_pretty(pg_total_relation_size(‘mhrordhu_shk.mut_kharedi_audit’)); pg_size_pretty —————- 268 MB (1 row) 3. Finding individual postgresql database size SELECT pg_size_pretty(pg_database_size(‘db_name’)); 4. Finding individual table size for postgresql database -including dependency index: SELECT pg_size_pretty(pg_total_rel

    Linux ctime,mtime,atime,cmin,amin,mmin

    Unix and therefore Linux uses (at least) 3 different timestamps on modern file systems (see File systems Table for info) in order to date any files. You can use these information to search for files, check logs, manage your backup and more… that’s why it is a must  for any sysadmin to clearly understand this mechanism. This page is aimed at exposing basics knowledge to understand and use files timestamps. 1) Definitions Here are some time stamps related definitions. 1.1 atime This is the Access time : atime is updated whenever file’s data is accessed (a read, write or any other access); this could be done by a system process, interactively by CLI or by a script. 1.2 mtime This is the Modification time : mtime is updated whenever the file’s content changes. This time stamp is not updated by a change of files permissions (e.g : through a chown command). It is usually used for tracking the file content changes (see the Linux time related tools section below for more inf

    PostgreSQL can be installed by means of two ways

    1. Installing from source
    2. Installing binary packages

    NOTE: PostgreSQL 13 Installation on RedHat 7 and everything about PostgreSQL that root can do is found here

    In this tutorial, you will learn how to install PostgreSQL in Linux using source code.

    Step by Step PostgreSQL installation using binary packages is found here

    There are two steps involved in creating a PostgreSQL server.

    1. Preparing the setup with prerequisites.
    2. How to install PostgreSQL server.

    Preparing the setup with prerequisites

    Before we get into actual installation of PostgreSQL server we shall have to check the pre-requisites that are defined for PostgreSQL installation.

    The machine I am using for the entire tutorial is el6-64 Bit.

    [root@postgreshelp ~]# uname -a

    Linux postgreshelp 2.6.39400.17.1.el6uek.x86_64 #1 SMP Fri Feb 22 18:16:18 PST 2013 x86_64 x86_64 x86_64 GNU/Linux

    [root@postgreshelp ~]#

    Pre-requisite check to install PostgreSQL

    A basic installation of Linux would sufficiently enough to install PostgreSQL on Linux, however, we check the basic requirements.

    1. Make sure the GNU make version 3.80.

    [root@postgreshelp ~]# make —version

    GNU Make 3.81

    Copyright (C) 2006  Free Software Foundation, Inc.

    This is free software; see the source for copying conditions.

    There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A

    PARTICULAR PURPOSE.

    This program built for x86_64unknownlinuxgnu

    [root@postgreshelp ~]#

    2. A GNU C compiler. Recent versions of GCC are recommended.

    [root@postgreshelp ~]# rpm -qa gcc*

    gcc4.4.718.el6.x86_64

    gccc++4.4.718.el6.x86_64

    [root@postgreshelp ~]#

           3. tar is required to unpack the source distribution, in addition to either gzip or bzip2.

    Apart from these, there are two additional pre-requisites libraries which are recommended to have.

    They are.

    The GNU Readline library

    It allows psql (the PostgreSQL command line SQL interpreter) to remember each command you type, and allows you to use arrow keys to recall and edit previous commands. This is very helpful and is strongly recommended.

    If you don’t want to use it then you must specify the —without-readline option to configure

    [root@postgreshelp ~]# rpm -qa readline

    readline6.04.el6.x86_64

    [root@postgreshelp ~]#

    The zlib compression library

    zlib is a software library used for data compression

    If you don’t want to use it then you must specify the —without-zlib option to configure.

    [root@postgreshelp ~]# rpm -qa zlib

    zlib1.2.329.el6.x86_64

    [root@postgreshelp ~]#

    How to install a PostgreSQL database server – step by step:

    There are few advantages of installing PostgreSQL server using binaries. The main advantages include

    1. Split the binary and library directories and make sure that PostgreSQL does not integrate tightly into the existing OS and OS directories.
    2. Custom configure options, or some other options, to enable dtrace.
    3. Highly customizable.

    How to install PostgreSQL server

    Note: This below mentioned steps are applicable for any version you download from PostgreSQL site including PostgreSQL Version 13, Read more about PostgreSQL v13 Master Guide here.

    Step 1: Download the source code.

    Download PostgreSQL-9.6.8 binaries from the official PostgreSQL site or Click Here to download the source code.

    You should get a file named postgresql-9.6.8.tar.gz

    Step 2: Extract the tar archive

    gunzip postgresql9.6.8.tar.gz

    tar xvf postgresql9.6.8.tar

    This will create a directory called postgresql-9.6.8 containing the PostgreSQL source code.

    Go to the directory and open the file INSTALL which gives you insights on how to install postgresql in Linux.

    Following the steps mentioned in the INSTALL file will install the postgresql server, let’s have a look at the steps:

    Short Version

    ./configure

    make

    su

    make install

    adduser postgres

    mkdir /usr/local/pgsql/data

    chown postgres /usr/local/pgsql/data

    su postgres

    /usr/local/pgsql/bin/initdb D /usr/local/pgsql/data

    /usr/local/pgsql/bin/postgres D /usr/local/pgsql/data >logfile 2>&1 &

    /usr/local/pgsql/bin/createdb test

    /usr/local/pgsql/bin/psql test

    Now, we will try to understand each step in the document while doing the installation.

    Step 3: configure

    [root@postgreshelp postgresql9.6.8]# ./configure

    configure check your system to see if all libraries you need are present. It generates vital parts of the build infrastructure.

    The default configuration will build the server and utilities, as well as all client applications and interfaces that require only a C compiler.

    All files will be installed under /usr/local/pgsql by default.

    You can customize the build and installation process by supplying one or more commands mentioned here.

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    [root@postgreshelp postgresql9.6.8]# ./configure

    checking build system type... x86_64pclinuxgnu

    checking host system type... x86_64pclinuxgnu

    checking which template to use... linux

    checking whether to build with 64bit integer date/time support... yes

    checking whether NLS is wanted... no

    checking for default port number... 5432

    checking for block size... 8kB

    checking for segment size... 1GB

    checking for WAL block size... 8kB

    ..

    ..

    ..

    config.status: linking src/backend/port/dynloader/linux.h to src/include/dynloader.h

    config.status: linking src/include/port/linux.h to src/include/pg_config_os.h

    config.status: linking src/makefiles/Makefile.linux to src/Makefile.port

    [root@postgreshelp postgresql9.6.8]#

    [root@postgreshelp postgresql9.6.8]#

    The successful configure should end as described above.

    In some cases, you might find that our operating system lacks libraries needed to compile PostgreSQL properly. Some of the most common candidates are libreadline-dev and zlib-dev (of course there are some more).

    In that case, the configure will show error as shown below.

    configure: error: readline library not found

    If you have readline already installed, see config.log for details on the

    failure.  It is possible the compiler isn‘t looking in the proper directory.

    Use —without-readline to disable readline support.

    [root@postgreshelp postgresql-9.6.8]#

    [OR]

    configure: error: zlib library not found

    If you have zlib already installed, see config.log for details on the

    failure.  It is possible the compiler isn’t looking in the proper directory.

    Use withoutzlib to disable zlib support.

    [root@postgreshelp postgresql9.6.8]#

    Step 4: Build a PostgreSQL.

    We can move forward and actually compile PostgreSQL, using the following commands one by one with root user.

    4.1 make

    [root@postgreshelp postgresql9.6.8]# su

    [root@postgreshelp postgresql9.6.8]# make

    make C src all

    make[1]: Entering directory `/root/postgresql9.6.8/src

    make -C common all

    ..

    ..

    make[1]: Leaving directory `/root/postgresql-9.6.8/config’

    <strong>All of PostgreSQL successfully made. Ready to install.</strong>

    4.2 make install

    [root@postgreshelp postgresql9.6.8]# make install

    make C src install

    make[1]: Entering directory `/root/postgresql9.6.8/src

    ..

    ..

    make[1]: Leaving directory `/root/postgresql-9.6.8/config’

    <strong>PostgreSQL installation complete.</strong>

    [root@postgreshelp postgresql9.6.8]

    This completes the PostgreSQL server installation.

    The build will take a few minutes depending on your hardware.

    If you want to scale out the build process to many CPU cores, you can use –j, shown as follows:

    make -j 8

    The -j 8 command will tell make to do up to 8 things in parallel, if possible. Adding parallelism to the build process will definitely speed up the process.

    Now we will move on to creating and configuring PostgreSQL database instance.

    Step 1: Add postgres user at OS level.

    [root@postgreshelp postgresql9.6.8]# adduser postgres

    [root@postgreshelp postgresql9.6.8]#

    Step 2: Create required directory for database files and assign required permissions.

    mkdir /u02/pgsql/data

    chown postgres /u02/pgsql/data

    [root@postgreshelp data]# mkdir /u02/pgsql/data

    [root@postgreshelp data]# chown postgres /u02/pgsql/data

    Step 3: initialize the database cluster

    create a new PostgreSQL database cluster using initdb command.

    syntax: initdb [option…] [—pgdata | -D] directory

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    [postgres@postgreshelp ~]$ /usr/local/pgsql/bin/initdb D /u02/pgsql/data

    The files belonging to this database system will be owned by user «postgres».

    This user must also own the server process.

    The database cluster will be initialized with locale «en_US.UTF-8».

    The default database encoding has accordingly been set to «UTF8».

    The default text search configuration will be set to «english».

    Data page checksums are disabled.

    fixing permissions on existing directory /u02/pgsql/data ... ok

    creating subdirectories ... ok

    selecting default max_connections ... 100

    selecting default shared_buffers ... 128MB

    selecting dynamic shared memory implementation ... posix

    creating configuration files ... ok

    running bootstrap script ... ok

    performing postbootstrap initialization ... ok

    syncing data to disk ... ok

    WARNING: enabling «trust» authentication for local connections

    You can change this by editing pg_hba.conf or using the option A, or

    authlocal and authhost, the next time you run initdb.

    Success. You can now start the database server using:

        <strong>/usr/local/pgsql/bin/pg_ctl D /u02/pgsql/data l logfile start</strong>

    [postgres@postgreshelp ~]$

    The above command initializes the postgres database cluster and installs reqired files under the data directory specified.

    Step 4: Start the database cluster:

    As given in the above step, we can now start the database cluster using the below command.

    [postgres@postgreshelp ~]$ /usr/local/pgsql/bin/pg_ctl D /u02/pgsql/data l logfile start

    server starting

    [postgres@postgreshelp ~]$

    This completes the PostgreSQL server installation along with PostgreSQL database cluster initialization.

    On the successful start of the database cluster, the following processes will run by default.

    [postgres@postgreshelp ~]$ ps ef | grep postgres

    root      20082   4435  0 20:28 pts/2    00:00:00 su postgres

    postgres  20083  20082  0 20:28 pts/2    00:00:00 bash

    postgres  20127      1  0 20:28 pts/2    00:00:00 /usr/local/pgsql/bin/postgres D /u02/pgsql/data

    postgres  20129  20127  0 20:28 ?        00:00:00 postgres: checkpointer process

    postgres  20130  20127  0 20:28 ?        00:00:00 postgres: writer process

    postgres  20131  20127  0 20:28 ?        00:00:00 postgres: wal writer process

    postgres  20132  20127  0 20:28 ?        00:00:00 postgres: autovacuum launcher process

    postgres  20133  20127  0 20:28 ?        00:00:00 postgres: stats collector process

    postgres  20137  20083  0 20:29 pts/2    00:00:00 ps ef

    postgres  20138  20083  0 20:29 pts/2    00:00:00 grep postgres

    [postgres@postgreshelp ~]$

    You will learn more about the processes here.

    We can then login to the default database called postgres with a default database user postgres using the following command

    $ psql

    [postgres@postgreshelp ~]$  /usr/local/pgsql/bin/psql

    psql (9.6.8)

    Type «help» for help.

    postgres=#

    postgres=#

    Further Reading:

    What actually happens when you do configure, make and make install?

    The entire process of behind the scenes is described here.

    Bonus: PostgreSQL 13 New Features Practical Master Guide is here.

    Words from postgreshelp

    Thank you for giving your valuable time to read the above information. I hope the content served your purpose in reaching out the blog.
    Suggestions for improvement of the blog are highly appreciable. Please contact us for any information/suggestion/feedback.

    If you want to be updated with all our articles

    please follow us on Facebook | Twitter
    Please subscribe to our newsletter.

    to sdima75
    Primo, юзая pkgs.org, вы не решаете вопрос с зависимостями для тех пакетов, что пытаетесь ставить вручную. На скриншоте (последнем) вам об этом явно намекают, ага…
    Secundo, Astra Linux текущей версии (что SE, что CE) базируются на Debian 9. И бинарно не полностью совместима с Debian 10. Что ж вы пытаетесь Debian 10 то пихать туда, куда не следует? Об этом в прошлой теме уже вам говорил — да вы разорались как дите малое предпочли не обращать внимание…
    Tertio, репозиторий для Stretch от Yandex давно превратился в тыкву. Юзайте репозиторий mirror.mephi.ru, чтобы получить актуал пакетов для Debian 9. И, если чего-то не хватает в репозитории Astra Linux (того же zlib-dev, ага), то подключайте mephi-репозиторий и будет счастье…
    Quatro, учитесь читать выхлопы команд. Тем более, что он русифицирован: <Обновление из этого репозитория нельзя выполнить безопасным способом, и поэтому по умолчанию он отключён>. А дальше учитесь гуглить на предмет безопасности репозиториев, их GPG-ключей и вообще конструкции типа <wget … keys/…asc>…
    Last, по умолчанию apt берет версию пакета по привязке к приоритету репозитория. Читай, если дать ему команду apt install postgresql-12, то будет зависимость от postgresql-common, который по версии (175astra) ниже, чем требуемая (182). Учитесь запускать установку нужного софта из нужного репозитория, добавленного в базу apt, через ключ «-t репозиторий» (см. ниже)….

    Как вариант:

    • разверните чистую систему заново (чтобы исключить ваши прошлые игрища, в которых сам черт ногу сломит);
    • добавьте репозиторий PostgreSQL вручную в /etc/apt/source.list (причем без lsb-release, а с явным указанием stretch-pgdg, потому что PostgreSQL-репозиторий знать не знает про ОС под именем «orel», ага);
    • пропишите ему параметр «trust», чтобы не париться с GPG-ключами (или можете погуглить, чего вам не хватило в первом случае для добавления GPG-ключа);
    • сделайте sudo apt update;
    • при установке postgresql-12 и проч. используйте указание на добавленный репозиторий через ключ apt install -t stretch-pgdg наименование_пакетов.

    А лучше юзайте PostgreSQL, доступный в штатном репозитории Astra Linux и/или Debian 9. Модуль экстрасенсорики подсказывает, что PostgreSQL-12 вам нужен исключительно «на поиграццо». Потому как в противном случае половины вышеозначенных вопросов и проблем бы не было (смогли бы решить самостоятельно)…

    ЗЫ Astra Linux построена на Debian, а Debian в своей stable ветке никогда самое свежее не юзает. Зато работает бесперебойно. Если хотите «быть в тренде» по незнанию или по совету всяких ламеров — меняйте дистрибутив и не пытайтесь свой самовар в чужой монастырь тащить…

    Понравилась статья? Поделить с друзьями:
  • Configure error xml2 config not found please check your libxml2 installation
  • Configure error x window system libraries and header files are required
  • Configure error can t find asterisk h
  • Configure error c preprocessor lib cpp fails sanity check
  • Configure error c compiler cc is not found