Как установить firebird на ubuntu

Обновлено: 06.07.2024

В этой статье мы опишем минимальный набор действий, необходимых для оптимальной установки СУБД Firebird версии 3.0 на новые дистрибутивы Linux. Для примеров выбраны CentOS 8 и Ubuntu 19.

Для самых нетерпеливых — сразу в бой:

Быстрая установка

Редактируем файл /etc/sysctl.conf , добавляя строку:


Сохраняем файл и применяем настройку:


Дальнейшие инструкции различаются для CentOS 8 и Ubuntu 19, но ССЫЛКА и КАТАЛОГ обозначают ссылку с официального сайта проекта Firebird для загрузки дистрибутива и каталог, в который будет распакован дистрибутив в процессе загрузки.
На текущий момент (март 2020) актуален релиз Firebird 3.0.5 (вот ссылка на 64-битную версию).


Собственно установка СУБД Firebird:


Если вы хотите лучше понимать, что чего служат эти действия – читайте дальше.

Основная часть

Небольшая преамбула

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

Предполагается, что у читателя есть базовые знания о Linux и, СУБД Firebird.

Планирование

На сервере СУБД рекомендуется выделять отдельные разделы для временных файлов ( /tmp ), файлов баз данных и локальных бэкапов.

К временным относятся lock-файлы, файлы сортировок, файлы «материализации» глобальных временных таблиц (GTT) и таблиц мониторинга. Файлы сортировок и глобальных временных таблиц расположены в /tmp , файлы mon$-таблиц и lock-файлы – в /tmp/firebird .

Файлы сортировок «удаляются» ( unlink ) сразу после создания, поэтому их нельзя «увидеть» в листинге каталога – только в списке описателей (handles) процесса (помечены как deleted ):


В листинге псевдокаталога /proc/…/fd/ отображаются симлинки, а фактическую информацию о файле даёт:


где НОМЕР – описатель (дескриптор) интересующего файла.

Вместо вызова « pgrep исполняемый-файл » можно сразу подставить идентификатор интересующего процесса.

Временные файлы могут быть очень большими, поэтому для /tmp рекомендуется выделять не менее 20-30 ГБ. Следует учитывать, что размер файлов сортировок зависит только от объёма данных, явно или неявно сортируемых в запросе и один-единственный пользователь может «создать» гигабайты временных файлов.

Раздел для файлов баз данных должен вмещать файлы всех баз. плюс, как минимум, копию файла самой большой базы. Следует учитывать рост файлов баз в перспективе на несколько лет вперёд.

Раздел локальных бэкапов должен вмещать, как минимум, по одному архиву бэкапов всех баз плюс бэкап самой большой базы. Желательно, чтобы на этом разделе было и место для восстановления самой большой базы. Следует учитывать рост бэкапов и архивов бэкапов в перспективе на несколько лет вперёд.

Предварительная подготовка

Сервер СУБД Firebird 3.0 динамически выделяет и освобождает системную память, что может приводить к её фрагментации. Например, после единовременного отключения от суперсервера большого числа пользователей, могут возникают ошибки при новых подключениях.

Фрагментацию памяти контролирует системный параметр vm.max_map_count , по умолчанию – 64K. Рекомендуется увеличить его значение вчетверо:


Чтобы новое значение устанавливалось при перезагрузке системы, добавляем в файл /etc/sysctl.conf строчку:


Желательно сделать комментарий, чтобы была понятна причина изменения этого параметра. Можно сначала отредактировать файл, а затем применить сохранённые в нём установки:


Установка необходимых пакетов

Исполняемые файлы СУБД Firebird 3.0 Linux зависят от библиотек ncurses ( libncurses.so.5 ), ICU (без привязки к версии и без отображения в выводе ldd ) и tommath ( libtommath.so.0 ). Для загрузки и распаковки архива сборки потребуются утилиты gzip , tar и curl или wget . Версии ICU, gzip , tar и curl / wget – несущественны.

Работа с пакетами зависит от системы и от используемого в системе пакетного менеджера, поэтому рассмотрим их поочерёдно.

CentOS 8 использует новый пакетный менеджер – dnf и он же «прозрачно» вызывается по команде yum . Поскольку для наших целей между ними нет разницы – в примерах будет yum .

Обновляем кэш метаданных: sudo yum makecache

Пакет libtomath находится в отдельном E(xtra)P(ackages for)E(nterprise)L(inux) репозитории, поэтому проверяем, что он уже подключен:


Опция «только из кэша» ( -C или --cache-only ) используется, чтобы исключить ненужные проверки и загрузки, ускорив работу yum. Если в списке нет epel-репозитория – устанавливаем его и обновляем кэш метаданных:


Подтверждаем запросы, при необходимости сверяя значения pgp-ключей с уже известными из доверенного источника.

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


Видим, что curl , gzip и ncurses размещены в псевдорепозитории установщика ( anaconda ), а tar – исключён из минимальной установки системы. Мажорные версии libncurses и libtommath больше, чем требуется: 6 и 1 вместо 5 и 0, соответственно. Если один и тот же пакет и установлен и доступен – для него выпущено обновление. Устанавливаем недостающие пакеты:

Для управления пакетами предназначены утилиты apt , apt‑get и apt‑cache . Первая рассчитана на интерактивную работу, а две последние – на использование в скриптах. Имена пакетов немного другие и включают версию.

Проверяем статус нужных пакетов (команда сложена, пример вывода сокращён и отфильтрованы 32-разрядные пакеты):


Пакеты, для которых в квадратных скобках указано installed / upgradable – установлены. Доступен, но не установлен ncurses5 , вместо curl установлен wget . Устанавливаем недостающие пакеты:

Поскольку libtommath.so.1 и libncurses.so.6 обратно совместимы с libtommath.so.0 и libncurses.so.5 , то для Firebird достаточно создать симлинки на имеющиеся версии библиотек.

Находим libtommath.so.1 ( libncurses.so.? расположены в этом же каталоге ):


Проверяем результат (команда сложена, примеры вывода сокращены):


Загрузка дистрибутива СУБД Firebird.

Официальные выпуски для линукса доступны в виде архивов (tar.gz) и пакетов deb/rpm, а сборки – только в виде архивов. Мы будем рассматривать «общий установщик» (generic installer из tar.gz).

Архив сборки требуется загрузить и распаковать, но мы совместим оба этих процесса. Распаковка делается в /tmp , URL обозначает ссылку на загружаемый архив.


По умолчанию curl посылает загружаемые данные на стандартный вывод, но не обрабатывает перенаправления и мы добавляем « ‑L », а wget , наоборот: обрабатывает перенаправления, но записывает данные в файл и мы ставим « ‑O‑ ». Для tar указываем использование gzip -фильтра и каталог, в который будет выполнена распаковка. По завершении процесса появится каталог вида Firebird‑3.0.5.33220‑0.amd64 с тремя файлами: install.sh , buildroot.tar.gz и manifest.txt .

Установка Firebird

В ходе предварительной подготовки мы отрегулировали значение системного параметра vm.max_map_count , проверили наличие и установили библиотеки ICU, ncurses и tommath. Убедились в правильности версий ncurses и tommath ( libncures.so.5 и libtommath.so.0 ) и создали необходимые симлинки.

Собственно установка делается очень просто. Переходим в каталог, куда был распакован архив дистрибутива Firebird, проверяем и, при необходимости, устанавливаем флаг «исполняемый» скрипту install.sh :


запускаем инсталяционный скрипт:


нажатием клавиши Enter подтверждаем начало установки, а по получении запроса – вводим пароль sysdba.

Скрипт установки автоматически запускает systemd -юнит firebird-superserver (умалчиваемая архитектура Firebird 3.0). Сервис Firebird будет работать с параметрами по умолчанию для суперсервера: страничный кэш в 2048 страниц (на базу), буфер сортировок в 64 МБ (общий) и подключение только клиентов третьей версии. Просмотр параметров firebird.conf :


Следует учитывать, что новые значения из firebird.conf будут активированы только после перезапуска сервиса Firebird.

При подборе значений параметров следует учитывать, что есть три основных «потребителя»: страничный кэш (для базы), буфер сортировок (общий) и память, выделенная сервером для клиентских подключений. Управлять можно только первыми двумя – объём памяти клиентских подключений зависит от количества и текста кэшированных запросов, их планов и задействованных в запросах объектов базы. Оценка памяти клиентских подключений делается только эмпирически и может меняться при изменении клиентских приложений и/или объектов базы.

Для суперсервера на хостах с малым объёмом памяти (до 12-16 ГБ) не следует выделять для страничного кэша и буфера сортировки более трети-четверти от общего объёма ОЗУ.

Если количество баз не фиксировано и может меняться – общий объём памяти страничного кэша следует делить на максимальное количество баз, которые могут быть на сервере. Размер страничного кэша задаётся в страницах и его надо отдельно пересчитывать в байты.

Для переключения на архитектуру классика требуется, как минимум, явно указать ServerMode в firebird.conf , уменьшить там же страничный кэш (не более 2K), уменьшить буфер сортировок (суммарный допустимый объём всех сортировок, поделённый на максимальное количество подключений), запретить и остановить юнит firebird-superserver , разрешить и запустить юнит firebird-classic.socket .

Использование архитектуры суперклассик в Firebird 3.0 не имеет особого смысла: «надёжность» – как у суперсервера и такой же общий буфер сортировок. Нет общего страничного кэша и «потери» на синхронизацию разных подключений между собой такие же, как у классика.

В официальных репозиториях Ubuntu можно найти пакеты Firebird не самой первой свежести. Например для моего текущего LTS-релиза 10.04.4 Lucid Lynx (да-да, я ретроград, надух не переваривающий Unity и Gnome3) это будет Firebird 2.5.0.26074. В то время как последний официальный релиз — 2.5.2.26540 Security Update 1. Если нужен последний релиз, нужно либо собирать птицу из исходников, либо подключить сторонний репозиторий. Далее рассматривается второй вариант.

Добавляем ppa:

Обновляем список пакетов


Далее производим установку сервера. В процессе у вас запросят пароль супер-пользователя (SYSDBA):

Это архитектура супер-сервер. Если вы предпочитаете использовать альтернативные конфигурации классик или супер-классик, то команды на установку пакетов будут такие:
либо

Если вы не знаете, какая из трех архитектур нужна вам, ознакомьтесь с документацией (если на русском, то из Quick Start Guide старой версии 1.5), либо сразу начните с архитектуры супер-сервер.

Запустим конфигуратор установленной версии (подправьте имя пакета, если вы остановились на классик или супер-классик архитектуре):


Устанавливаем dev-пакет и примеры:

Эталонная (тестовая) база employee.fdb установится в виде архива в /usr/share/doc/firebird2.5-examples/examples/empbuild/
Распакуем и положим куда-нибудь поближе:


Подключимся к тестовой БД через консольную утилиту isql:

SQL> connect "localhost:/var/lib/firebird/2.5/data/employee.fdb" user 'SYSDBA' password 'SYSDBApassword';

Замените пароль на свой.
Не забываем оканчивать команды точкой с запятой.
Всегда добавляйте «localhost:» перед файловым путем к БД. В этом случае lock-файлы и сегменты разделяемой памяти будут во владении учетной записи 'firebird'. Другой вариант — добавить себя к группе 'firebird'

Вы можете запросить имеющиеся в базе таблицы:
SQL> show tables;
COUNTRY CUSTOMER
DEPARTMENT EMPLOYEE
EMPLOYEE_PROJECT JOB
PROJECT PROJ_DEPT_BUDGET
SALARY_HISTORY SALES

либо версию сервера:
SQL> show version;
ISQL Version: LI-V2.5.2.26508 Firebird 2.5
Server version:
Firebird/linux AMD64 (access method), version "LI-V2.5.2.26508 Firebird 2.5"
Firebird/linux AMD64 (remote server), version "LI-V2.5.2.26508 Firebird 2.5/tcp (arni-ubuntu)/P12"
Firebird/linux AMD64 (remote interface), version "LI-V2.5.0.26074 Firebird 2.5/tcp (arni-ubuntu)/P12"
on disk structure version 11.2

Создадим новую БД:
SQL> create database "/var/lib/firebird/2.5/data/first_database.fdb" user 'SYSDBA' password 'SYSDBApassword' default character set UTF8;
Commit current transaction (y/n)?y
Committing.
Удостоверимся, что мы подключены действительно к новой (пустой) БД:
SQL> show tables;
There are no tables in this database

Создадим таблицу и наполним её парой строк:
SQL> create table TEST(ID int not null primary key, NAME varchar(20));
SQL> show tables;
TEST
SQL> insert into TEST values (1, 'Firebird');
SQL> insert into TEST values (2, 'Hallo,Habr');
SQL> select * from TEST;
ID NAME

Не забываем коммитить свою работу:
SQL> commit;

Hе секрет, что rollback надо делать пореже,
Лучше делать почаще commit!
Я программой своей скоро сервер повешу — У админа пускай голова поболит.

Под крики о кастрации,
В обкуренной прострации,
Как следствие мутации
Рождается в момент
Rollback segment для маленькой,
Для маленькой такой транзакции,
Для скромной такой транзакции
Огромный такой сегмент!

Hе секрет, что rollback — это язва и грыжа,
Геморрой и чуть-чуть гайморит.
Если ты программист, а не ослик бесстыжий — Лучше делай почаще commit!

Hе секрет, что друзьям тоже надо ресурсы,
Hадо память, процессор и диск…
Так что делай commit, а иначе… ты в курсе,
Что rollback — для тебя неоправданный риск.

Чтобы выйти из консольного инструмента:
SQL> quit;

либо более традиционно: ^D

Под конец установим GUI-инструмент для администрирования баз данных Firebird: FlameRobin

После установки ищите его в меню: Приложения => Программирование => FlameRobin.

Регистрируем нашу БД:
И используем:

Инструмент нельзя назвать продвинутым. Из windows (а также, говорят, из wine) можно подключаться и администрировать БД с помощью IBExpert. Это уже мощнейшая IDE, которая даст фору многим проприетарным продуктам для таких коммерческих СУБД как MsSQL или Oracle. Но самое главное — для exUSSR она бесплатна:

IB Expert — The Most Expert for InterBase, Firebird and Yaffil
Copyright © 2000-2012 IBExpert KG
All rights reserved.

Раз Вы читаете этот текст, значит на Вашем компьютере установлена
кодовая страница WIN1251. А это в свою очередь означает, что Вы вправе
использовать этот продукт совершенно бесплатно.

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

С правами администратора на целевой машине, введите следующую команду:

Система отслеживания зависимостей Apt будет автоматически предлагать все пакеты, необходимые для полной установки со следующим выводом:


Нажмите клавишу “Ввод” и необходимые пакеты будут загружены и установлены на целевую систему. Также будет создан новый пользователь “firebird” для запуска сервера, но сервер пока не будет запускаться автоматически:


Если вы хотите чтобы сервер Firebird запускался автоматически при старте системы, запустите настройку dpkg-reconfigure на данном пакете и нажмите “Да” при соответствующем вопросе. Затем вам будет предложено ввести пароль SYSDBA:



После кажатия кнопки “Ок” сервер FireBird будет запущен.

Вы опытный пользователь Unix, но новичек в Ubuntu, тогда вы удивитесь, как удобно расположились все файлы Firebird в иерархии каталогов. Чтобы увидеть, где все файлы были установлены при помощи Apt, выполните следующую команду:

Сейчас вы можете переключится на пользователя “firebird”, используя команду su, если потребуется.

Установка примеров и файлов для разработчика:

Запустите интерактивную оболочку isql-fb и в SQL> строке запроса введите команду подключения к созданной базе данных employee:


Теперь из SQL> строки запроса, вы можете просматривать базу данных employee. Например, вы можете получить список таблиц и проверить версию сервера:



Если вы хотите использовать GUI (графический) инструмент администрирования, вы можете попробовать FlameRobin, который включен в репозиторий Ubuntu. Он может быть установлен очень просто:

Если вы дошли до этого пункта и сделали все правильно, ваш Firebird сервер успешно установлен на Ubuntu. Успехов вам!

Данный перевод был составлен при помощи Google Documents и веб-браузера FireFox
Для тестирования установки сервера использовалась виртуальная машина Ubuntu 11.04 на VirtualBox.

Как установить FireBird на Ubuntu 20.04 LTS

Установите FireBird на Ubuntu 20.04 LTS Focal Fossa

Шаг 1. Во-первых, убедитесь, что все ваши системные пакеты обновлены, выполнив следующие apt команды в терминале.

Шаг 2. Установка FireBird на Ubuntu 20.04.

По умолчанию FireBird доступен в репозитории Ubuntu по умолчанию. Выполните следующую команду, чтобы установить его:

Во время установки вам будет предложено установить пароль базы данных Firebird, как показано ниже:

Как установить FireBird на Ubuntu 20.04 LTS 1

После установки Firebird в вашей системе выполните следующую команду, чтобы обновить базу данных безопасности:

Шаг 3. Настройте базу данных FireBird.

Firebird может хранить и получать доступ к вашим базам данных из любого места в стиле SQLite, но также может ограничивать их местоположение. Выполните следующую команду для редактирования : firebird . conf

Добавьте следующие файлы:

Сохраните изменения и закройте файл. Затем, чтобы применить изменения, просто перезапустите службу:

Шаг 4. Создание баз данных FireBird.

Сначала войдите в базу данных Firebird, используя следующую команду:

Приступаем к созданию новой базы данных со следующим синтаксисом:

Затем создайте базу данных « testdb » с пользователем « » и паролем « »: computerfreaks - user Your - Strong - Password

После этого подключение к созданной базе данных:

Поздравляю! Вы успешно установили FireBird. Благодарим за использование этого руководства по установке базы данных FireBird в системе Ubuntu 20.04 LTS Focal Fossa. Для получения дополнительной помощи или полезной информации мы рекомендуем вам посетить официальный сайт FireBird .

Читайте также: