Firebird database development

Unfortunately, I couldn’t find an official Firebird 2.5 image. Probably because it’s no longer a supported version, but I still need this version due to the old software and mandatory data provision for a few years.

Why can’t the two versions be installed side by side? What is the reason for this exclusion? I don’t understand this at all… :frowning:

The volume and service file can be modified… I’ll have to look into it, but I remember testing this thoroughly and installing the 2.5-ss version with the settings made for 3.0.11 for testing.

Thank you for your help

Because they use for example different volumes.

The official firebird image uses /var/lib/firebird/data as data volume, see https://hub.docker.com/r/firebirdsql/firebird#start-a-firebird-server-instance.
The mlatenp87 image uses another data volume /data, see https://hub.docker.com/r/mladenp87/firebird-2.5-ss
They may also use different options so it’s difficult to use one service file for both images, at least I don’t know how to manage 1 service file for 2 images with different volumes/options.

Did you try setting legacy auth and DataTypeCompatibility in the official image? See https://hub.docker.com/r/firebirdsql/firebird#firebird_use_legacy_auth

Forgive me, but haven’t you misunderstood something about the Firebird libraries?

Since Firebird has been available for Linux, database files have always been installed in the /var/lib/firebird/data directory. Personally, I need version 3.0.11 and 2.5.x (no 1.5.6-ss).

Version 3.0.11 --volume looks like this:

-v ./data:/var/lib/firebird/data

Version 2.5-ss --volume looks like this:

-v /somehostdir/firebird/data/:/data/ 

The latter defines the directory flexibly, but “somehostdir” can be equal to the /var/lib directory. Are these the same thing, just spelled differently, or am I wrong? If I’m wrong, that’s a big deal… :frowning:

Meanwhile, it seems that version 3.0.11 has disappeared from the firebirdsql website… By the time the Firebird module is ready, will the Firebird 3 image no longer be available?

I haven’t tried it because, as far as I know, 2.5 and 3.x are very different from each other and my old databases can’t be converted.

I corrected the link.

See podman-run — Podman documentation

Different VOLUMEs are defined, see for example https://hub.docker.com/layers/mladenp87/firebird-2.5-ss/latest/images/sha256-eb8ab9790a0f45b0698762086b2e57ff92af205388aa6852977a931b3d018a95 and https://hub.docker.com/layers/firebirdsql/firebird/3.0.13/images/sha256-9ba7e58dfbb12cb0413baf0c9714e191f3f3c7d1a9c9ca4bd6db03e2058a8d91

@mrmarkuz Thank you very much for the explanation, I understand the problem now.

This is bad news for me, because then I really have to look for another solution, because I can’t find another Firebird 2.5.x image.

But if I understand you correctly, if it is not possible to create a module to install both Firebird (3.x and 2.x) versions, it could be solved with two separate modules. However, if this were the solution, the two different versions would have to be named in a way that makes them distinguishable, e.g. ns8-firebird2.x and ns8-firebird3.x, but this is not possible due to module naming rules.

The other, perhaps more serious problem is that even under Firebird 2.x, the database directory must be under /var/lib/firebird due to the client program, but this is contradicted by the image settings, which you also noted. Could this be modified?

If so, just copy-paste and the other Firebird module is ready, you just need to give it a name… :slight_smile: Am I wrong?

Thank you for your help

There must be no digit at the end of the name but you could name it ns8-firebirdthree or ns8-firebird2db or whatever comes to your mind.

You could create an own firebird container, see for example Build a Docker Container Image

https://hub.docker.com/layers/jacobalberty/firebird/2.5.8-sc-2366050/images/sha256-8c7d4de934c94dd4943c8fb28157b8b77f38635948927dab4cad9e62031b3e1a

https://hub.docker.com/r/mladenp87/firebird-2.5-ss

https://hub.docker.com/layers/mladenp87/firebird-2.5-ss/latest/images/sha256-eb8ab9790a0f45b0698762086b2e57ff92af205388aa6852977a931b3d018a95

1 Like

@LayLow thank you, but I need the ss (super server) version and the problem is with mladenp87’s image because he set the wrong volume when creating the image.

I looked all over github but couldn’t find another one.

I’m wondering if it would be understandable for others if I named them e.g. ns8-firebird3x and ns8-firebird2x. So there is a letter (x) at the end and this could indicate that they are versions 3.x and 2.x.

What do you think?

Then I need to somehow create an image from 2.5-ss with the same settings as 3.0.11, so that the database directory is under /var/lib/firebird for the client. Although if the new image is created, a firebird module could be enough?

Yes, that’s possible and understandable IMO.

Yes, if the images define the same volumes, it could work.

Have you tried contacting him to see what you two can cook up?

I hadn’t thought about this before, because he created the image quite a while ago, 2 years ago. It’s worth a try.

In the meantime, I figured it might be worth trying to convert the 2.5 databases to 3.0.11, although it’s not certain that it will be successful, according to the developer, for other reasons. If it succeeds, then things will be simpler.

@mrmarkuz I managed to convert the old Firebird 2.x databases to Firebird 3.x databases. I had to solve a lot of problems, but in the end I succeeded and now the Firebird 3.0.11 database manager runs the databases of the old program as well.

This way, it will be enough to install only one Firebird, which will be version the 3.0.11. The Firebird module needs to be reworked and finalized a bit, then it would be good to publish it…

The module maintenance still needs to be solved somehow, do you have any ideas for this?

I see that I managed to fix another problem before switching from NS7 to NS8, so I need to take stock again of what tasks and problems still remain.

1 Like

Could you explain the issue about the module maintenance? Sorry, the thread is long, I couldn’t find it…

I haven’t written about maintenance yet. I’m thinking that once the Firebird module is published, it may be necessary to update or modify the module for some unforeseen reason. I don’t know if I can take on the maintenance process in the long term.

I was thinking maybe you or someone else has an idea for this.

I’ll review what we have so far and try to finalize the module, if you have any suggestions on this I’d be happy to hear them. Then the question is how to display it in the official NS8 repository. How should this be done?

Thank you for your help

You could create your own repository or publish to NethForge.
If you’re unsure about maintenance, I think it’s better to create your own repository first.

@mrmarkuz Before I could test and publish the module I encountered a problem.

I managed to convert the Firebird 2 databases to Firebird 3 databases on my Nethserver 7 server and it works there.

Yesterday I did the same test on the NS8 server but I get an error message. Now the databases of both programs are accessible on the Firebird 3.0.11 server.

The Firebird module and the Firebird 3.0.11 server are running. The database owner and permissions are correct, I have configured them. I can connect to the Firebird server with Telnet. One of the programs (which worked before) works fine, the databases are accessible.

The other program whose databases I have just converted gives an error message when I test the connection:

Unable to complete network request to host. Failed to establish a connection.

SQL Error Code -902 IB Error Code 335544721

Since the other program works, is accessible via Telnet, etc. I don’t understand what the problem is under NS8, while everything is fine on NS7. Do you have any ideas?

Thank you for your help

I managed to find the cause of the problem. I changed the Firebird server port to the default 3050 TCP and the old client program was able to connect to the databases.

Unfortunately, as it turned out, there is a bug in the old client program that the developer will no longer fix, so I will only be able to use it on the default 3050 TCP port.

1 Like

I reverted to the original version, removed the source selection option because it was no longer needed.

I cleaned up the source code and released version 1.0.0.

Unfortunately, I can’t get the repo to be added to NS8 because I can’t add a fork. I get the message shown in the image:

What could be the reason for this? Am I doing something wrong? How should I solve this so that the repo is available under NS8?

Thank you for your help

Did you follow the instructions about creating your own repo? See Create a ns8 repository for developers

You don’t need to fork your app project, it’s about forking the ns8-nethforge github project. That fork will be your NS8 repository.