Часто задаваемые вопросы по инсталляции / переинсталляции Interbase и Firebird Версия 1.06 от 29/01/2002 Выражаю благодарность Дмитрию Кузьменко (KDV) за создание и поддержку в рабочем состоянии русскоговорящего сообщества разработчиков IB/FB, а также сайта www.ibase.ru. Я не претендую на авторские права тех людей, чьи материалы включены в этот FAQ. Если вы являетесь автором ответа и ваш копирайт не указан, обращайтесь исправим ситуацию. Я лишь имею права на эти материалы как составитель. Дополнения, замечания по адресу vserd(at)yahoo.com, Владимир Сердюк Данный FAQ составлен по материалам конференций fido7.su.dbms.interbase, cps.inprise.ibdatabase, epsilon.public.interbase, InterBase 6 Operations Guide и других источников информации и документации (at) = @ в адресах почты Разрешается свободное распространение и использование этого документа. Все ссылки на Intebase (IB) можно автоматически заменять на Firebird (FB) или Yaffil, обратное преобразование не верно. Если одинаковая функциональность реализуется по разному, то это будет описано явно. ********************************************************************* Содержание 1 Какой вариант сервера выбрать Intebase или Firebird? 2 С удаленного клиента не получается подключиться к серверу. Что делать? 3 После установки сервера к БД можно подключиться локально, а по TCP/IP нет 4 Как отучить Windows вызывать DialUp при соединении с IB по TCP/IP? 5 Проблема с установкой гардиана в FB 6 Что нужно для установки клиента IB вручную (минимальная конфигурация)? 7 Что нужно для установки сервера IB вручную (минимальная конфигурация)? 8 Сайт посвященный инсталяционным скриптам по Interbase 9 Установка IB под Linux 10 IB 5.6 & FB На одной машине 11 После обновления IB 4.2 на IB 6.х никто не может соединиться с сервером ********************************************************************* Вопросы и Ответы 1Q: Какой вариант сервера выбрать Intebase или Firebird? A: Firebird - преимущества: сопровождение, развитие, исправление ошибок. (IMHO) 2Q: С удаленного клиента не получается подключиться к серверу. Что делать? A: Если подключаемся по протоколу TCP/IP, то 1. Проверяем работу TCP/IP. 2. Проверяем наличие в файле Services строчки gds_db 3050/tcp (после этой строки должен быть перевод строки () 3. Показывает ли на сервере netstat -a, что слушается порт 3050 3Q: После установки сервера к БД можно подключиться локально, а по TCP/IP нет. A: 1. Проверяем правильность пути к БД 2. Проверяем работу TCP/IP 3. Проверяем наличие в файле Services строчки gds_db 3050/tcp 4Q: Как отучить Windows вызывать DialUp при соединении с IB по TCP/IP? A: вариант 1. Прописать сервер в файле lmhost (с) Путилин Евгений (mail(at)avtodom.vrn.ru) вариант 2. Изменить ключ реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\ CurrentVersion\Internet Settings\EnableAutodial = 00 00 00 00 (с) Sergey Nikolaenko (serg(at)maximum.kursk.ru) 5Q: Проблема с установкой гардиана в FB A: Есть два пути инсталляции гардиана 1. Инсталлируем IB, затем в эту же директорию записываем файлы FB (с) Дмитрий Кузьменко 2. Добавляем необходимые ключи в реестр (с) Witaly Barmin c:\fb\ -- мой путь до firebird (если ключи писать через .reg-файл, то слеш нужно удвоить, т.е. c:\\fb\\) IMHO, instreg, к сожалению, здесь не помогает - он только ibserver прописывает. Для всех версий прописываем следюющие ключи: [HKEY_LOCAL_MACHINE\Software\Borland\InterBase\CurrentVersion] "RootDirectory"="c:\\fb\\" "Version"="WI-V6" "DefaultMode"="-r" "ServerDirectory"="c:\\fb\\bin" "GuardianOptions"="1" Для Win9X в реестр прописываем следующее: [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run] "RootDirectory"="c:\\fb\\bin\\ibguard.exe" Для NT, 2000 прописываем следующее: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\InterBaseGuardian] "Type"=dword:00000110 "Start"=dword:00000002 "ErrorControl"=dword:00000001 "DisplayName"="InterBase Guardian" "ObjectName"="LocalSystem" "ImagePath"="c:\\fb\\bin\\ibguard.exe" ! не рекомендуется сервисы прописывать руками. Напишите примитивную программку, вызывающую CreateService, или воспользуйтесь примером http://www.ibase.ru/download/ibguardinst.zip или http://www.ibase.ru/download/instguard.zip 6Q: Что нужно для установки клиента IB вручную (минимальная конфигурация)? A: 1) Файл gds32.dll в системном каталоге или в другом месте, где его будет надёжно находить система при старте приложения. В *nix называется libgds.so, принципы те же, с поправкой на специфику поиска библиотек в конкретной системе. 2) строчка "gds_db 3050/tcp" (не забыть перевод строки!) в файле SERVICES. %WINDIR%\services в Win9x, %SystemRoot%\system32\drivers\etc в NT всех видов, /etc/services в *nix. Формат везде идентичен (всё бы так :) (с) Dmitri Popov В последних билдах FB (1.0.0.338 и выше) клиент (gds32.dll) и сервер по умолчанию используют порт 3050 (не требуется запись в services), клиент (gds32.dll) может указать порт в строке коннекта - server/3050:c:\dir\data.gdb (с) KDV, http://www.ibase.ru. 3) В системном каталоге msvcrt.dll Версия 5.00.7303 или старше, в чистом Win95 его нет. (с) Witaly Barmin 4) В реестре прописать [HKEY_LOCAL_MACHINE\SOFTWARE\Borland\InterBase\CurrentVersion] "RootDirectory"= "Version" = <Версия gds32.dll> в положить interbase.msg Важно!!! interbase.msg должен быть от той-же версии что и IB/FB (с) Vladimir Vassiliev 5) Для FB RC2 начиная с 682 билда используется Windows Sokets 2 Если используется WIN95, то необходимо установить Windows Sokets 2 http://www.microsoft.com/windows/downloads/bin/W95ws2setup.exe (см. www.ibase.ru\v6\ib6faq.htm) 7Q: Что нужно для установки сервера IB вручную (минимальная конфигурация)? A: (с) Виталий Бармин 1. Вот что надо для IB5.x (для четверки - аналогично, сам сообразишь): Сервер - 5 файлов (в архиве 900 кил): C:\IB\ib_license.dat C:\IB\isc4.gdb C:\IB\BIN\gds32.dll C:\IB\BIN\gdsintl.dll C:\IB\BIN\ibserver.exe В реестр прописать веточку: HKEY_LOCAL_MACHINE\SOFTWARE\InterBase Corp\InterBase\CurrentVersion\ RootDirectory = "C:\IB" Все остальные настройки (маска подсети и IP-адреса, строчка "gds_db 3050/tcp" в файле services) - как обычно. 2. Для 6.х/FB: УСТАНОВКА "AS APPLICATION" ========================== Минимально необходимый набор файлов сервера: C:\FB\BIN\ibserver.exe C:\FB\INTL\gdsintl.dll C:\FB\interbase.msg C:\FB\isc4.gdb и ключи в реестре: ==начало файла app.reg=== REGEDIT4 [HKEY_LOCAL_MACHINE\SOFTWARE\Borland\InterBase\CurrentVersion] "RootDirectory"="C:\\FB\\" [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] "InterBaseServer"="C:\\FB\\BIN\\ibserver.exe -a" ==конец файла app.reg=== Это получилась установка "как приложение". В Win9x это единственно возможная установка, и обеспечивает хоть локальный, хоть сетевой доступ. УСТАНОВКА "AS SERVICE" ПОД WinNT, W2K ===================================== Набор файлов сервера: C:\FB\BIN\ibserver.exe C:\FB\BIN\ibguard.exe C:\FB\INTL\gdsintl.dll C:\FB\interbase.msg C:\FB\isc4.gdb ==начало файла srv.reg=== REGEDIT4 [HKEY_LOCAL_MACHINE\SOFTWARE\Borland\InterBase\CurrentVersion] "Version"="WI-T6" "DefaultMode"="-r" "RootDirectory"="C:\\FB\\" "GuardianOptions"="1" "ServerDirectory"="C:\\FB\\BIN\\" [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\InterBaseGuardian] "Type"=dword:00000110 "Start"=dword:00000002 "ErrorControl"=dword:00000001 "DisplayName"="InterBase Guardian" "ObjectName"="LocalSystem" "ImagePath"="C:\\FB\\BIN\\ibguard.exe" [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\InterBaseServer] "Type"=dword:00000110 "Start"=dword:00000003 "ErrorControl"=dword:00000001 "DisplayName"="InterBase Server" "ObjectName"="LocalSystem" "ImagePath"="C:\\FB\\BIN\\ibserver.exe" ==конец файла srv.reg=== Установка "как сервис" не дает возможности локального доступа из приложений, запускаемых другими сервисами, такими как IIS, Baikonur и т.п. Вместо локального следует использовать сетевой доступ, например localhost:c:\dir\data.gdb В последних билдах FB (от 1.0.0.338) клиент (gds32.dll) и сервер по умолчанию используют порт 3050 (не требуется запись в services), клиент (gds32.dll) может указать порт в строке коннекта - server/3050:c:\dir\data.gdb (с) KDV, http://www.ibase.ru. В системном каталоге msvcrt.dll, в чистом Win95 его нет. Еще там бывает старая comctl32.dll (в Win95-950B). Для FB RC2 начиная с 682 билда используется Windows Sokets 2 (см Q6.5) 8Q: Сайт посвященный инсталяционным скриптам по Interbase A: http://ibinstall.defined.net/ На английском 9Q: Установка IB под Linux В данном случае опишу Linux + glibc2, подо что обычно собираются современные версии IB и FB. Libc в Unix - стандартная библиотека C, но реально используется практически всеми приложениями, поскольку является стандартным интерфейсом к ядру. Glibc - libc от GNU. Полная версия glibc состоит из трёх цифр, сейчас текущие - 2.2.х, несколько месяцев назад были 2.1.x. Младшая цифра меняется достаточно часто. Так же, насколько мне известно, glibc используется в последних FreeBSD. В других системах, не основанных на glibc, номера версий будут однозначно другими, но общие принципы - похожими. При установке IB/FB крайне желательно, чтобы версия glibc, установленная в системе, была не ниже той, под которую собирался дистрибутив. Если всё же ниже, но только младшей цифрой, а две старших совпадают, то в большинстве случаев всё будет работать, хотя изредка возможны неожиданные глюки. Если же две какие-то из старших цифр ниже положенного, то на работоспособность можно не надеяться. Если имеющаяся в системе glibc устарела, то следует проапгрейдиться. Но самостоятельная сборка этой библиотеки - довольно трудоёмкое дело, более тяжёлое и длительное, чем даже сборка самого ядра. И в некотором смысле более опасная для стабильности системы, так как с glibc все приложения общаются непосредственно - ошибка может сделать неработоспособным всё. По-этому для большинства пользователей самое правильное - поискать обновление на сайте поставщика дистрибутива. Имена библиотек в Unix обычно имеют префикс lib и суффикс .so.n.n.n. Номера версий являются необязательными. Таким образом, если приложение скомпоновано с библиотекой xxx, то загрузчик будет искать файл libxxx.so. Если существенно, чтобы библиотека была версии 1, то будет искаться libxxx.so.1, если нужна более точная версия, скажем 1.2, то соответственно libxxx.so.1.2. По этому же принципу можно определить версию libc, установленную в системе - нужно заглянуть в /lib. Как правило, сам файл имеет полную версию (/lib/libc.so.2.2.3), а более короткие версии являются ссылками на него (libc.so.2 => libc.so.2.2.3). Версии часто нумеруют с нуля, так что текущая версия gds имеет вид libgds.so.0. Способ размещения зависит от версии IB. Старые дистрибутивы (4.0, 5.х) обычно держали файлы в своём каталоге lib (/usr/interbase/lib или /opt/interbase/lib), а в стандартном /usr/lib делали ссылки. Новые версии FB просто копируют файлы в /usr/lib. В любом случае детали можно найти в установочных скриптах. Поиск библиотек делается в следующих местах: - В стандартных каталогах /lib и /usr/lib. Вообще обычно в корне (/bin,/sbin,/lib,...) лежит то, что нужно на начальных стадиях загрузки системы, в то время как в /usr и /opt - сами приложения; допускается, что эти ветки будут смонтированы не сразу. - В каталогах, перечисленных в /etc/ld.so.conf. Этот файл, возможно, специфичен для Linux, в других системах надо уточнять. Прописанные там каталоги становятся для системы почти такими же стандартными, как и вышеупомянутая пара. В принципе, можно поставить IB, никуда библиотеки не копируя и не делая ссылок, просто прописав /opt/interbase/lib в данный файл. - В переменной окружения LD_LIBRARY_PATH. Это позволяет запускать программы с "особенностями" поиска библиотек. В любом случае после изменений в ld.so.conf или каталогах, содержащих стандартные библиотеки, нужно от имени root запустить ldconfig. Это индексатор библиотек, который просматривает стандартные каталоги и строит индекс, сохраняемый в /etc/ld.so.cache. Поиск стандартных библиотек ведётся по нему. Об этом не следует забывать при ручной (до)установке. С учётом вышеописанного обычно не сложно заставить приложения видеть libgds.so. Компоненты IB/FB кроме собственного gds и libc как правило требуют только ncurses. Это распространённая библиотека для поддержки консольного пользовательского интерфейса, как правило имеется во всех системах. Версию бывает тоже полезно уточнить по тем же принципам. Чего именно хочет конкретная программа (по крайней мере на уровне библиотек, ссылки на которые в ней прописаны статически и грузятся сразу при запуске), можно узнать командой ldd, которая входит в комплект всё того же glibc. В качестве параметра выдаётся имя исполняемого файла. На выходе имеем список желаемых библиотек, и где они найдены. Или сообщение о не найденных. По этой информации обычно несложно разобраться, что и где необходимо прописать или скопировать. Ещё один потенциальный источник проблем - libcrypt. Это часть libc, ответственная за шифрование паролей. Одно время в glibc 2.1 попытались перейти с шифрования DES на хеширование MD5, из-за чего возникали проблемы. IB/FB под Unix использует то, что предоставляет libcrypt, в то время как версии под Windows всегда используют DES, вкомпонованный непосредственно в эти версии. Бывает так, что с одной стороны соединения (чаще на сервере) оказывается библиотека с MD5, в то время как с другого конца - DES. В результате чего оказывается нарушенной аутентификация, порой даже невозможно войти под SYSDBA. В последних версиях glibc поставляется libcrypt, поддерживающий оба способа шифрования паролей. В этом случае IB/FB выбирает DES, и всё нормально работает. Но если попалась версия только с MD5, то следует проапгрейдиться. Если предполагается работать с последними версиями IB/FB, то лучше поставить glibc 2.2.x целиком. Если же с IB5.6, то можно к glibc 2.1.x найти libdescrypt - замена libcrypt с поддержкой DES. Достаточно доустановить только этот компонентик. -- (C) Дмитрий Попов, popov(at)krista.ru, http://ib.krista.ru/ 10Q: IB 5.6 & FB На одной машине На моей машине стоит IB 5.6 и захотелось мне посмотреть что такое FB... Как их поставит вместе? A: Я сделал так (для NT, для 9х может прийдется переделывать часть с сервисами): В каталоге Interbase Corp создал каталог FireBird. В сервисах (если NT) скопировать ключ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\InterBaseServer в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\FireBirdServer и изменить Interbase на FireBird. Скопировать gds32.dll текущего сервера в его bin. Сделать батник changeServer.bat ---------------- net stop "InterBase server" net stop "FireBird server" C:\Progra~1\InterB~1\%1\bin\instreg install C:\Progra~1\InterB~1\%1" copy /y C:\Progra~1\InterB~1\%1\bin\gds32.dll c:\win\system32 net start "%1 server" ---------------- Если запускается guardian, то нужно еще и его останавливать перед остановкой ib сервера. Запуск IB выглядит как changeServer InterBase, а FB как changeServer FireBird Единственное неудобство - нельзя поменять сервер при запущенных BCB или IBExpert-e - они держат gds32.dll Точнее сервер запускается, но вот как он будет работать с чужой gds - это вопрос. Я не проверял. -- До связи. (C) Алексей Бородай (oleksa(at)freemail.com.ua) 11Q: После обновления IB 4.2 на IB 6.х никто не может соединиться с сервером Если раньше на компе работал например IB4.2 то оставшийся от него ISC4.gdb не обновляется новым. В результате никто не может подключиться к серверу. A: Действительно, ISC4 от версии 4.х не работает, если ее использовать в IB6. Но совершенно спокойно она работает, если переносить ее в IB 5.6. Более того, напрямую скопированный ISC4 от IB 5.6 работает в шестой версии без проблем. Когда мне надо было перенести сервак на FB, я забэкапил старым backup'ом базу ISC4, а после установки новой версии сервера ресторил ее. (C) Defecator (designsoft(at)chat.ru)