В своих изысканиях я руководствовался различным материалом: раз, два, три.
Все действия выполняем из-под рута, либо через свою учетку из-под sudo.
Для FB 3.x.x на никсах, в отличие от FB 2.x.x, "системные суперсерверы" не нужны. Поэтому xinetd можно не устанавливать. Ниже будет описан способ установки полноценного сервера. Об установке "встроенного" (embedded) сервера можно почитать тут.
1. Подготовка системы к установке.
Есть первый нюанс. Операционная система уже имеет в составе дистрибутива библиотеки Firebird. Как правило, это предыдущие релизы. Например, Debian 8.7.1 i386 в папке /usr/lib/i386-linux-gnu (если у вас другая разрядность, то у папки /i386-linux-gnu будет соответственно и другое название) имеет две библиотеки FB 2.5и два симлинка (ссылки, аналоги "ярлыков" Windows).
Есть второй нюанс. После обновления репозиториев командой
# apt-get update
все ранее измененные или удаленные симлинки восстановятся в первозданном виде. И ниже описанные телодвижения придется повторять снова. Поэтому, после каждого обновления репов необходимо проводить ревизию всех симлинков заново.
При установке программ, использующих своей работе Firebird, иногда могут возникнуть сложности с использованием клиентских библиотек "нужной" версии. Это касается программ, в которых используется т.н. статическая линковка библиотек и создание "неправильных" ссылок на используемые клиентские библиотеки на этапе их установки. Суть проблемы в том, что программа разработчиком может быть "привязана" к системному симлинку с определенным именем, а вот сам симлинк может ссылаться на библиотеку от другой версии сервера. В результате приложение не сможет осуществить коннект к базе данных, несмотря на наличие единственного сервера FB в системе. Типичным примером такой программы под Linux является FlameRobin (суть и решение проблемы описаны здесь).
Поэтому я советую перед установкой FB3 сначала удалить все клиентские библиотеки от предыдущей, либо править симлинки вручную способом, описанным в ссылке в предыдущем абзаце.
Update(10.06.19):зеленым цветом будут обозначен аналогичный код для 64-битных систем
По умолчанию, поставленные из репов программы, сначала ищут симлинки в папке /usr/lib/i386-linux-gnu (для x64 соответственно /usr/lib/x86_64-linux-gnu), а затем в /usr/lib, если не будут найдены в предыдущей.
Проверим, где и что лежит (если хотите выводить содержимое консоли в лог-файл для анализа, то добавьте к команде содержимое квадратных скобок, естественно без самих скобок). Все действия выполняем из-под рута:
$ cd /usr/lib/i386-linux-gnu
$ ls -lH | tee [-a ~/temp/<ваше название лог-файла>.txt]
Просматриваем содержимое вывода консоли на наличие библиотек Firebird
lrwxrwxrwx 1 root root 20 Dec 13 2014 libfbclient.so.2 -> libfbclient.so.2.5.3
-rw-r--r-- 1 root root 853660 Dec 13 2014 libfbclient.so.2.5.3
lrwxrwxrwx 1 root root 19 Dec 13 2014 libfbembed.so.2.5 -> libfbembed.so.2.5.3
-rw-r--r-- 1 root root 5584332 Dec 13 2014 libfbembed.so.2.5.3
Видим две клиентских библиотеки (2-й и 4-й файлы) и два симлинка на них (соответственно 1-й и 3-й файлы). Удаляем симлинки
Клиентские библиотеки от FB2.5 можно оставить или удалить на ваше усмотрение. Я удалил во избежание:
rm -i /usr/lib/i386-linux-gnu/libfbclient.so.2.5.3 (тут с запросом подтверждения на удаление)rm /usr/lib/libfbembed.so.2.5.3/i386-linux-gnu
Проверим на всякий случай /usr/lib # cd /usr/lib # cd /usr/lib # ls -lH | tee [-a /home/leyba/temp/<ваше название лог-файла>.txt]
У меня на "чистой" системе ничего не нашлось, но здесь также могут симлинки. Если вы уверены, что ни одна из уже установленных программ не используется какую-либо версию Firebird, то можете смело удалить симлинки выше описанным способом.
Update(10.06.19): для Debain 10 выше указанные библиотеки (только версии 3.0) можно найти здесь /usr/lib64.
2. Собственно установка firebird.
Поставить Firebird можно установить двумя способами:
Первый способ.
Поскольку FB3 пока нет в стабильных репозиториях Дебиана, добавляем ссылки на тестовые репозитории в /etc/apt/sources.list следующим образом (забегая вперед, стоит упомянуть, что эти репозитории нужно будет удалить/закомментировать после окончания установки сервера, иначе при установке других программ и пакетов могут возникнуть проблемы). Увы, не всегда там бывает самый последний релиз. В этом недостаток этого способа. Итак, добавляем следующие ссылки:
deb-src http://ftp.ru.debian.org/debian/ testing main
deb http://ftp.ru.debian.org/debian/ testing main
вылезет окно с запросом пароля. В тройке изменен порядок установки пароля для SYSDBA (см. ниже), поэтому просто жмем "ОК", поскольку это окно не устанавливает пароль.
Получаем в консоли # adduser: Warning: The home directory `/var/lib/firebird' does not belong to the user you are
# currently creating.
# Created default security3.fdb
# Job for firebird3.0.service failed. See 'systemctl status firebird3.0.service' and 'journalctl -xn' for details.
# Firebird 3.0 server not enabled or unable to start
# Not setting SYSDBA password
# Please run 'dpkg-reconfigure firebird3.0-server'
# later to set the SYSDBA password
Теперь необходимо установить пароль. Также может понадобится внести другие необходимые другие правки в конфигурационные файлы firebird.conf и . Стопорим сервер # service firebird3.0 stop
В Firebird 3 пароль SYSDBA ставится вручную путем подключения isql через embedded-режим сервера (монопольное подключение, производится при отсутствии в строке коннекта названия сервера или loopback, обычно это localhost; при этом любой пароль игнорируется) # isql-fb -user sysdba security.db
Database: security.db, User: SYSDBA
SQL>
В строке приглашении SQL> последовательно вводим две команды, завершая ввод каждой нажатием <Enter> SQL> create or alter user SYSDBA password 'cooladmin';
SQL> commit;
Можно заодно добавить нового юзера SQL> create user user1 password 'user1';
В тройке имена могут быть регистрозависимы, если введены в разных регистрах в кавычках, т.е. user1 = USER1 = User1 <> "User1"
Если хотим, чтобы user1 мог создавать свои базы данных (подробности), то необходимо дать ему привилегии явно
SQL> grant create database to user user1;
SQL> commit;
SQL> quit;
Смотрим, где и что лежит.
Файлы конфигурации сервера лежат здесь /etc/firebird/3.0
Библиотеки и симлинки кладутся сюда /usr/lib/i386-linux-gnu
root@leyba:/usr/lib/i386-linux-gnu# ls -lH | tee
...
lrwxrwxrwx 1 root root 20 Mar 25 19:07 libfbclient.so.2 -> libfbclient.so.3.0.1
-rw-r--r-- 1 root root 1693360 Mar 25 19:07 libfbclient.so.3.0.
...
Открываем файл конфигурации, если хотим изменить какие-нибудь параметры # nano /etc/firebird/3.0/firebird.conf
Также можно добавить алиасы в /etc/firebird/3.0/databases.conf
Теперь стартуем сервис # service firebird3.0 start
Не забываем закомментировать ссылки на тестовые репозитории в /etc/apt/sources.list.
И напоследок, если хотим удалить только сервер, то # apt-get remove firebird3.0-server
если со всеми пакетами, то # apt-get purge firebird3.0-server
Update: на момент последней правки статьи актуальным релизом была версия FB 3.0.4
Распаковываем архив куда-нибудь, например в fb_304
$ cd ~/fb_304
============================================= Важное замечание: при установке на Debian 9 (и Debian 10) выявлен баг инсталлятора (CORE-5445), суть которого заключается в том, что создается некорректный симлинк на на библиотеку отсутствующую libtommath.so.0.
Created symlink /etc/systemd/system/multi-user.target.wants/firebird-superserver.service → /lib/systemd/system/firebird-superserver.service.
Please enter new password for SYSDBA user: <тут задается пароль>
/opt/firebird/bin/gsec: error while loading shared libraries: libtommath.so.0: cannot open shared object file: No such file or directory
Fatal error running 'systemctl --quiet start firebird-superserver.service' - exiting
Поэтому сначала необходимо установить пакет libtommath-dev
$ sudo apt-get install libtommath-dev
, затем создать симлинк libtommath.so.0, т.к. инсталлятор использует его
$ sudo ln -sf /usr/lib/i386-linux-gnu/libtommath.so.1.0.0 /usr/lib/i386-linux-gnu/libtommath.so.0
для Debian 10 amd64 лучше сделать так
$ sudo ln -sf /usr/lib/x86_64-linux-gnu/libtommath.so /usr/lib/x86_64-linux-gnu/libtommath.so.0поскольку libtommath.so является симлинком на libtommath.so.1.1.0 (который, очевидно, и используется 64-битным Firebird)
Важное замечание 2: при установке Firebird на Debian 10 amd64 встретилась еще одна ошибка:$ /opt/firebird/bin/gsec: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
Fatal error running 'systemctl --quiet start firebird-superserver.service' - exiting
Удаляем неудачный установленный firebird (если успели поставить)
$ sudo rm -Rf /opt/firebird
либо удалить его штатных деинсталлятором $ cd /opt/firebird/bin $ sudo ./FirebirdUninstall.sh
Теперь можно запускать установку (по умолчанию ставится суперсервер)
=============================================
# ~/fb_304$ sudo ./install.shFirebird 3.0.4.33054-0.i686 InstallationPress Enter to start installation or ^C to abort
Extracting install data
Please enter new password for SYSDBA user: cooladmin
Install completed
При этом способе мы получаем версию релиза, выбранную самими. Пароль для sysdba определяется в процессе установки.
Корневой каталог установки ставится сюда /opt/firebird. При запуске утилит можно указывать в консоли либо абсолютный путь ним, либо добавить пути к бинарникам в PATH $ sudo nano /etc/profile
пишем в конец файла PATH=$PATH:/opt/firebird:/opt/firebird/bin
Теперь перелогиниваемся.
Для смены пароля подключаемся в embedded-режиме сервера (без указания имени сервера или loopback в строке коннекта): leyba@leyba:~$ isql
Use CONNECT or CREATE DATABASE to specify a database
SQL> connect '/opt/firebird/examples/empbuild/employee.fdb' user sysdba password '1';
Database: '/opt/firebird/examples/empbuild/employee.fdb', User: SYSDBA
SQL> create or alter user SYSDBA password '111';
SQL> commit;
Update: если при попытке коннекта вдруг получаем ошибку
Statement failed, SQLSTATE = 08006
Can not access lock files directory /tmp/firebird/
то даем права на эту папку группе и пользователю firebird (а лучше добавить сначала в группу пользователя <user>, см .ниже, и затем добавить также и его)
$ sudo chown -R firebird:firebird /tmp/firebird
и перелогиниваемся
Теперь коннектимся обычным способом с указанием нового пароля
После установки сервера проделываем следующие манипуляции (добавляем sudo, если манипуляции производим не из-под root'а).
Создаем папку для базы в своей домашней папке $ mkdir /home/leyba/db_dir
Даем права группе firebird и пользователю firebird на эту папку и рекурсивно на все вложенные папки и файлы (ключ -R в строке) $ sudo chown -R firebird:firebird /home/leyba/db_dir
Чтобы логиниться к базе не-root юзеру, необходимо добавить учетку этого юзера в группу firebird $ sudo adduser <user> firebird
Можно проверить, все ли правильно $ grep firebird /etc/group
Все ОК $ firebird:x:126:leyba
Даем права на папку и ее содержимое любому юзеру из группы firebird (кратко и на примере о правах на папки и файлы) $ sudo chmod -R 775 /home/leyba/db_dir
Выходим из-под рута и пытаемся создать в указанной папке базу под своей учеткой от имени SYSDBA $ isql-fb (при установке сервера из репов) или $ isql (при установке сервера из архива)
Use CONNECT or CREATE DATABASE to specify a database
SQL> CREATE DATABASE 'localhost:/home/leyba/db_dir/sysdba_db.fdb' user sysdba password 'cooladmin' page_size 16384 DEFAULT CHARACTER SET UTF-8; SQL> commit;
Update 1: в случае запуска
- полноценного сервера правами на созданный файл базы данных обладает пользователь, от имени которого установлен сервер
- embedded сервера правами на созданный файл базы данных обладает пользователь, от имени которого запущен сервер
Update 2: некоторые приложения или компоненты (например, IBX by Tony Whyman в Лазарусе) требуют наличие переменной окружения FBLIB, которая бы указывала на клиентскую библиотеку libfbclient.so.3.0.1 Чтобы прописать ее для всех пользователей (удаленных и локальных), проще стразу отредактировать файл /etc/environment
$ sudo vi /etc/environment
Добавляем строку (имя файла может меняться в зависимости от версии)
FBLIB='/opt/firebird/lib/libfbclient.so.3.0.1'
сохраняем и закрываем файл, перелогиниваемся.
Для комфортной работы с базами через GUI ставим flamerobin
$ sudo apt-get install flamerobin
чтобы создать бд в нем, нужно в Database path выбрать папку и ввести там же имя БД.
Update: если ставить Firebird вторым способом (из архива), то соединение flamerobin'а с базой блокируется