PostgreSQL-9.5.1 из репозитория для TinyCoreLinux v7.2 запустить не удалось. Вместо этого можно установить PostgreSQL-9.6.6 (для TinyCoreLinux v8.x) или даже PostgreSQL-9.6.10 (для TinyCoreLinux v9.x)
PostgreSQL-9.6 с файлом зависимостей необходимо скопировать из соответствующего репозитория в локальный репозиторий для TinyCoreLinux v7.2
tc@box:/mnt/sdb1/repo-tce7-x86/$ wget "http://tinycorelinux.net/9.x/x86/tcz/postgresql-9.6.tcz"
tc@box:/mnt/sdb1/repo-tce7-x86/$ wget "http://tinycorelinux.net/9.x/x86/tcz/postgresql-9.6.tcz.dep"
Устанавливать придется вручную (удобнее написать скрипт для установки из локального репозитория)
- Скопировать файлы postgresql-9.6.tcz и postgresql-9.6.tcz.dep в соответствующую папку /etc/sysconfig/tcedir/optional
- Аналогичную рекурсивно процедуру проделать с каждым пакетом, от которого зависит postgresql-9.6.tcz
Добавить postgresql-9.6 в список пакетов, устанавливаемых при каждой загрузке системы
tc@box:~$ echo postgresql-9.6 | sudo tee -a /etc/sysconfig/tcedir/onboot.lst
Далее необходимо установить в систему файлы более поздних библиотек
Файлы ставятся из библиотек для TinyCoreLinux v8.x(!)
tc@box:~$ sudo mkdir /tmp/tcloop/readline7
tc@box:~$ mount /mnt/sdb1/repo-tce8-x86/readline.tcz /tmp/tcloop/readline7/ -t squashfs -o loop
tc@box:~$ cp -as /tmp/tcloop/readline7/usr/local/lib/lib*7* /usr/local/lib/
tc@box:~$ mkdir /tmp/tcloop/ncurses6
tc@box:~$ mount /mnt/sdb1/repo-tce8-x86/ncurses.tcz /tmp/tcloop/ncurses6/ -t squashfs -o loop
tc@box:~$ cp -as /tmp/tcloop/ncurses6/usr/local/lib/*6* /usr/local/lib/
Чтобы после перезагрузки системы они восстанавливались, нужно все эти команды поместить в файл /opt/bootlocal.sh
tc@box:~$ echo mkdir /tmp/tcloop/readline7 | sudo tee -a /opt/bootlocal.sh
....
Необходимо определить переменные окружения, чтобы PostgreSQL мог найти нужные библиотеки
tc@box:~$ echo export LD_LIBRARY_PATH=/usr/local/pgsql96/lib:/usr/local/lib:$LD_LIBRARY_PATH | tee -a ./.profile
tc@box:~$ echo PGDATA=/home/tc/postgres:$PGDATA | tee -a ./.profile
tc@box:~$ echo $LD_LIBRARY_PATH
/usr/local/pgsql96/lib:/usr/local/lib:
- /usr/local/pgsql96/lib необходима для работы самого PostgreSQL
- /usr/local/lib если не указана, то не сможет запуститься клиент psql (ошибка libreadline.so.7, libncurses.so.6)
Кроме того, psql будет ошибочно искать библиотеку libpq.so.5 в директории /usr/local/lib, а находится она в /usr/local/pgsql96/lib
В итоге, каждый раз создаем при загрузке символьную ссылку
tc@box:~$ echo ln -s /usr/local/pgsql96/lib/libpq.so.5 /usr/local/lib/ | sudo tee -a /opt/bootlocal.sh
Инициализация PostgreSQL. Если определена переменная $PGDATA, то директорию инициализации можно не указывать (ее можно не создавать заранее, PostgreSQL сделает это сам)
tc@box:~$ /usr/local/pgsql96/bin/pg_ctl init -D /home/tc/www/postgres
Запуск PostgreSQL. Путь к исполняемым файлам можно указать в переменной $PATH
tc@box:~$ pg_ctl start -l /var/log/postgres.log
Подключение к серверу утилитой psql с пользовательской базой по умолчанию
tc@box:~$ psql postgres
Linux-7.2 box 4.2.9-tinycore i686 Fri Jun 26 08:42:12 YEKT 2020