Как я устанавливал Firebird на Хакинтош

Для своего проекта понадобилось развернуть сервер Firebird на Macos под интеловский процессор. Для этого я установил в виртуалке Sequoia 15.4.1. Итак, пошагово:


1. Скачиваем пакет с дистрибутивом Firebird 5.0.2 отсюда
https://www.firebirdsql.org/en/firebird-5-0

2. Запускаем пакет на исполнение и сразу получаем отлуп


3. Идем System Setting --> Privacy & Security --> Security. Там видим наш заблокированный пакет


Жмем кнопку "Open Anyway", соглашаясь на установку пакета



Вводим пароль


Далее запускается стандартный мастер установки


Последовательно проходим все шаги, соглашаясь со всем и оставляя все пути установки по умолчанию, получаем в конце сообщение


По умолчанию сервер ставится сюда
/Library/Frameworks/Firebird.framework/Versions/A/Resources/

3. Добавляем пути в переменные окружения, чтобы сервер мог запускать утилиты без указания полного пути к ним

%  sudo nano /etc/paths

В открывшемся файле добавляем в конец файла строчку

/Library/Frameworks/Firebird.framework/Versions/A/Resources/bin

Затем последовательно жмем <Ctrl+O>, <Enter>, <Ctrl+X>. Это сохранит наши изменения и закроет файл.

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

4. Проверяем работоспособность свежеустановленного сервера, запустив утилиту isql.

% isql
Use CONNECT or CREATE DATABASE to specify a database
SQL>

Пишем строку коннекта с учетом того, что по умолчанию паролем для SYSDBA будет masterkey  

SQL> connect '127.0.0.1:employee' user SYSDBA password 'masterkey';
Database: '127.0.0.1:employee', User: SYSDBA
SQL>

Теперь можно поменять дефолтный пароль на какой-нибудь свой, например на cooladmin

SQL> ALTER USER SYSDBA SET PASSWORD 'cooladmin';
# сохраняем изменения
SQL> commit;
# закрываем утилиту
SQL> quit;

Проверяем смену пароля (сначала пытаемся коннектиться со старым паролем, потом с новым)

% isql
Use CONNECT or CREATE DATABASE to specify a database
SQL> connect '127.0.0.1:employee' user SYSDBA password 'masterkey';

# тут облом - пароль не подходит
Statement failed, SQLSTATE = 28000

Your user name and password are not defined. Ask your database administrator to set up a Firebird login.

# тут все в порядке
SQL> connect '127.0.0.1:employee' user SYSDBA password 'cooladmin';
Database: '127.0.0.1:employee', User: SYSDBA
SQL>

Выходим из утилиты и продолжаем конфигурять дальше.

5. Создадим папку для базы данных  

% mkdir test_db

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

% sudo chown -R :firebird ~/test_db

Чтобы текущий пользователь тоже мог работать с этой папкой, можно/нужно внести его в эту группу

% sudo dseditgroup -o edit -a leyba -t user firebird

Проверим, является ли текущий юзер членом этой группы

% id leyba 

uid=501(leyba)... <skiped>... 501(firebird) ...<skiped>...

6. Проверяем права доступа к нашей папке

% sudo -u firebird ls -la ~/test_db
Password:
total 0
drwxr-xr-x 2 leyba firebird 64 May 1 15:02 .
drwxrwxrwx@ 31 leyba staff 992 May 1 15:02 ..

7. Теперь можно создать тестовую базу в нашей папке (обратите внимание: путь к базе должен быть указан полностью(!), начиная от root-папки)
% isql
Use CONNECT or CREATE DATABASE to specify a database
SQL> CREATE DATABASE '127.0.0.1:/Users/leyba/test_db/test_db.fdb' user SYSDBA password 'cooladmin';

Если не указывать размер страницы и чарсет коннекта, то дефолтовые значения будут соответственно 8192 и NONE.

SQL> show db;
Database: 127.0.0.1:/Users/leyba/test_db/test_db.fdb
Owner: SYSDBA
PAGE_SIZE 8192
Number of DB pages allocated = 223
Number of DB pages used = 216
Number of DB pages free = 7
Sweep interval = 20000
Forced Writes are ON
Transaction - oldest = 1
Transaction - oldest active = 2
Transaction - oldest snapshot = 2
Transaction - Next = 5
ODS = 13.1
Database not encrypted
Wire crypt plugin: ChaCha64
Creation date: May 1, 2025 15:23:25
Replica mode: NONE
Protocol version = 18
Default Character set: NONE
Publication: Disabled
SQL>quit;

Еще раз проверим права на владение папкой и файлом БД

% sudo -u firebird ls -la ~/test_db
Password:
total 3568
drwxr-xr-x 3 leyba firebird 96 May 1 15:23 .
drwxrwxrwx@ 31 leyba staff 992 May 1 15:02 ..
-rw-rw---- 1 root firebird 1826816 May 1 15:33 test_db.fdb


8. Напоследок зададим переменную окружения FBLIB, которую используют для своих целей некоторые компоненты (например, IBX by Tony Whyman в Лазарусе)

% sudo nano /etc/environment

В открывшемся файле добавляем строку (путь с текущей клиентской библиотеке) 

FBLIB='/Library/Frameworks/Firebird.framework/Versions/A/Resources/lib/libfbclient.dylib'

Затем последовательно жмем <Ctrl+O><Enter><Ctrl+X>. Это сохранит наши изменения и закроет файл.

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

===================================
Конструктивная критика приветствуется :)

Популярные сообщения из этого блога

Как я устанавливал Firebird 3 на Debian 8

Как я ставил транковый fpc и lazarus на Debian 7.6 x32

Мемориальные заметки для Lazarus