В этой статье я покажу как собрать PostgreSQL 13 версии из исходников, инициализировать кластер и запустить его на сервере Debian 10. А также установим из исходников одно из расширений PostgreSQL.
Источником для этой статьи служит данное видео.
Установка PostgreSQL из исходников
Работаем из под пользователя root, поэтому будьте осторожны!
Прежде всего скачаем и распакуем архив:
# mkdir pg # cd pg/ # wget https://ftp.postgresql.org/pub/source/v13.3/postgresql-13.3.tar.gz # tar xf postgresql-13.3.tar.gz # cd postgresql-13.3/
Далее, установим необходимые пакеты, соберем из исходников postgresql и установим его:
# apt install gcc make # apt install libreadline-dev # apt install zlibc zlib1g-dev # ./configure # make # make install
В результате, PostgreSQL у нас установится в каталог /usr/local/pgsql/, здесь лежат сами бинарники.
Теперь нам нужно создать каталог для хранения данных. В PostgreSQL он называется PGDATA по имени переменной $PGDATA в которой содержится путь к каталогу кластера PostgreSQL. Создадим такой каталог а также пользователя «postgres«. Дополнительно сделаем этого пользователя владельцем этого каталога и установим права (750):
Компиляция и установка программ из исходников в Linux. htop, make, configure
# mkdir /usr/local/pgsql/data # adduser postgres # chown postgres /usr/local/pgsql/data/ # chmod 750 /usr/local/pgsql/data/
Создание переменных окружения
Для удобства работы с сервером нужно создать две переменные:
- PGDATA — путь к каталогу кластера (/usr/local/pgsql/data/);
- PATH — нужно добавить к существующей переменной путь /usr/local/pgsql/bin/, чтобы облегчить работу с утилитами postges.
Чтобы эти переменные появились у всех пользователей отредактируем /etc/profile, добавив строки в конец файла:
# nano /etc/profile PATH=/usr/local/pgsql/bin:$PATH export PGDATA=/usr/local/pgsql/data
Далее применим изменения:
# . /etc/profile
Создание кластера БД
Дальнейшие действия нужно проделывать под пользователем postgres
# su — postgres
Инициализируем кластер баз данных:
Опцию -k мы использовали, чтобы включить подсчет контрольной суммы страниц, что позволяет своевременно обнаружить повреждение данных. Остальные опции можете посмотреть тут!
После инициализации кластера у нас заполнился каталог PGDATA:
В этом каталоге лежат конфигурационные файлы кластера, и в подкаталоге base лежат базы данных. Но о содержимом этого каталога мы поговорим позже.
Запуск и останов сервера
Запустим сервер баз данных указав файл логов:
Здесь мы использовали две опции:
- -w заставляет сервер запуститься полностью и только потом отдать управление, то-есть не будет происходить продолжение старта в фоне;
- -l — указывает путь к логам.
Подробнее о работе pg_ctl можете почитать тут.
Теперь проверим что PostgreSQL запустился и работает. Для этого выполним запрос select now() к СУБД:
В примере выше, функция now() показывает текущее время.
Компиляция и установка программ из исходников
Останавливать и запускать сервер в последующем можно следующими командами:
$ pg_ctl stop $ pg_ctl -w -l /home/postgres/logfile start
Установка расширений из исходников
Расширение — это специальная программа, расширяющая функциональность сервера баз данных. Например модуль pgcrypto добавляет криптографические функции.
Следующим шагом научимся устанавливать расширения. Для этого перейдем в каталог с исходниками и найдём подкаталог contrib. В каталоге contrib лежат исходники расширений. Найдем каталог pgcrypto, перейдём в него и скомпилируем расширение:
Проверим что расширение установилось. Все установленные расширения можем посмотреть в представлении «pg_available_extensions«:
В листинге выше с помощью утилиты psql мы подключаемся к СУБД, а с помощью команды q отключаемся от него.
Создание второго кластера
На одном сервере может работать два кластера, для этого создаём каталог для второго кластера. И инициализируем его:
При инициализация кластера, если путь к каталогу PGDATA отличается от переменной $PGDATA или если такая переменная не задана. То нужно с помощью ключа -D указать путь к этому каталогу.
Чтобы запустить второй кластер одновременно с первым, нужно поменять порт, на котором работает PostgreSQL. По умолчанию порт — 5432. Изменим этот порт для второго кластера:
Теперь можем запустить второй кластер:
Посмотрим на процессы:
Первый кластер запущен без ключа -D и используется переменная PGDATA, а во втором кластере путь к PGDATA прописан в строке запуска.
Источник: sysadminium.ru
Компиляция и установка программ из исходников в Linux. htop, make, configure
Музыка Jason Shaw – Clouds Установим необходимое ПО: sudo apt-get install build-essential Скачаем исходники. wget hisham.hm/htop/releases/1.0.3/htop-1.0.3.tar.gz Раcпаковываем исходники: tar zxvf htop-1.0.3.tar.gz Перед установкой всегда читаем файлы README и INSTALL. Там всегда написана инструкция по установке, а так же зависимости, которые необходимо удовлетворить. Разные программы ставятся по разному, поэтому читаем всегда!
Теперь приступим к компиляции и установке программы. Перейдем в папку с исходниками: cd htop-1.0.3/ Сконфигурируем сборку программы: ./configure У нас ошибка — неудовлетворенная зависимость, отсутствует необходимый пакет. Программа подсказывает нам, что мы может собрать её использовав ключ disable-unicode ./configure disable-unicode В принципе , можно было попытаться удовлетворить зависимость командой: sudo apt-get build-dep htop и собрать пакет командой ./configure Проверяем наличие ошибок. Если таких неимеется, то приступаем к сборке: make Так же смотрим наличие ошибок и если таких не имеется, установим командой: sudo make install Программа установлена, проверим её работу: htop Для удаления программы заходим в папку с исходниками и выполняем команду: sudo make uninstall
Источник: www.euglobe.ru
Компиляция и установка Linux из исходников в Debian
Для начала, следует установить пакеты, необходимые для сборки ядра:
apt-get install fakeroot kernel-package build-essential zlib1g-dev
Если вам потребуется перенастроить ядро средствами menuconfig, нужно будет также установить пакет libncurses5-dev .
2. Получение и распаковка исходников Linux
Исходники текущей версии ядра можно скачать с www.kernel.org, они выложены там под названием linux-.tar.bz2 (к примеру, linux-2.6.31.tar.bz2 ). Распаковать их:
tar -xjf linux-*.tar.bz2
После чего перейти в созданный при распаковке каталог.
3. Настройка компилятора
Данные шаги выполнять в том же терминале, где в дальнейшем будет запущена сборка ядра.
Для того, чтобы ускорить компиляцию на многоядерных (или многопроцессорных) системах, можно задать количество одновременно запускаемых процессов для сборки не зависящих друг от друга частей ядра:
export CONCURRENCY_LEVEL=`grep -m1 cpu cores /proc/cpuinfo | cut -d : -f 2`
При желании использовать для сборки ядра версию gcc , отличающуюся от установленной в системе по умолчанию (например — новее, чтобы получить преимущества от добавленных в ней возможностей, либо старее, чтобы избежать проблем с совместимостью), перед вызовом make-kpkg следует также выполнить (к примеру, для версии gcc 4.4):
export MAKEFLAGS=»CC=gcc-4.4″
Если же собираем ядро для архитектуры, отличающейся от текущей (к примеру, для 32-битных x86-машин, находясь в системе amd64), следует указать желаемую архитектуру в переменной окружения ARCH:
export ARCH=i386
…и непосредственно при запуске make-kpkg , добавить соответствующий ключ:
make-kpkg —arch i386 .
4. Настройка будущего ядра
Прежде всего, стоит удостовериться, что в текущем каталоге с исходниками не осталось никаких старых временных файлов и прочего мусора:
make clean mrproper make-kpkg clean
Если у вас нет заранее сохранённых .config -файлов, но вы не хотите конфигурировать ядро с нуля, можно взять настройки, использовавшиеся при компиляции текущего ядра:
cp /boot/config-`uname -r` .config
Либо скачать настроечные файлы официальных ядер Debian вот отсюда.
Запускаем утилиту настройки:
make oldconfig
Значения всех уже существовавших в прошлой версии опций ядра будут взяты из старого настроечного файла. Для завершения процесса, достаточно лишь принять решение по опциям, появившимся в версиях новее её.
5. Компиляция ядра и создание deb-пакетов
Для создания пакетов c ядром и заголовочными файлами, нужно выполнить следующее:
fakeroot make-kpkg —initrd —append-to-version=-custom kernel_image kernel_headers
Вместо -custom , в качестве обозначения вашего ядра можно указать что угодно, от вашего имени или псевдонима (чтобы не забыть, что это ядро собиралось именно вами), до сугубо технически-полезной информации (что-нибудь в духе -foobarfs-patch8-debug1 ).
6. Установка deb-пакетов
Пакеты по умолчанию кладутся одним уровнем выше текущего каталога с исходниками (в котором вы находились, запуская компиляцию). Таким образом, сразу же после компиляции их можно установить командой:
dpkg -i ../linux-*.deb
7. Решение проблемы с созданием initrd.img
С недавнего времени в Debian появился баг, заключающийся в том, что после установки пакетов с собранными описанным здесь способом ядрами, не создаётся соответствующий им файл /boot/initrd.img . Для исправления применительно к уже установленному ядру, придётся создать initrd.img вручную:
update-initramfs -c -k
Для решения проблемы “на будущее” – закомментировать вторую из процитированных ниже строк в файле /etc/kernel/postinst.d/initramfs-tools :
# kernel-package passes an extra arg; hack to not run under kernel-package [ -z «$2» ] || exit 0
Источник: romanrm.net