Needs perl v5.30.0

Now when I run:

sudo docker-compose up musicbrainz

I get:

musicbrainz_1  | ! Installing the dependencies failed: Your Perl (5.022001) is not in the range 'v5.30.0'
musicbrainz_1  | ! Bailing out the installation for ..
musicbrainz_1  | --> Working on .
musicbrainz_1  | Configuring /musicbrainz-server ... OK
musicbrainz_1  | Needs perl v5.30.0, you have 5.022001

Then:

musicbrainz-docker_musicbrainz_1 exited with code 1

Do you confirm that I can no longer run a local test MB server if I don’t find a way to update my perl version on my Debian 10 machine?

Its latest installable apt perl package is v5.28 (apt list perl):

perl/oldstable,now 5.28.1-6+deb10u1 amd64  [installé]

I guess someday I should upgrade my PC to Debian 11, but it looked quite complex to me.*

Anyone would have a hint for me being able to run MBS?

* I started doing a little bit of research, I think Debian 10 is… Buster? I can never remember those silly names.
It does seem to be buster according to perl version I see in perl package : Debian
I don’t really what is this page, though.

I found Debian stable perl version is now 5.32, so it’s good for MBS: Debian -- Package Search Results -- Perl

But I’m afraid to upgrade to Debian 11 (I guess by stable they mean 11).

Raah, just for these silly version name I want to use something else than Debian, they can’t stick to version 11, they also call that buster? sid? jessie? stable? many names for same things!
It’s really too complex for me.

There must be a way to simply force update perl to 5.30, maybe?

Apparently so:

I will try that ActiveState Perl thing.
Oh no, I don’t know what it is but it requires an account, it looks fishy.

Or can I downgrade a config file somewhere in MBS so it does not require perl 5.30?
For what feature did MBS want 5.30, suddenly?

Apparently I found three methods to try:

I only know wget. :thinking:

I don’t like very much installing stuff manually without apt because I should keep note of them for the day I would like to uninstall.
I think already had to do for some other thing in the past. But it didn’t keep track indeed.

No. The Perl installed on your host has nothing to do with the Perl used in the container musicbrainz-docker_musicbrainz_1, that’s one of the main points for using Docker here: Not having to deal with dependencies.

That doesn’t resolve your issue though, but you gave very little information to allow identifying it.

Please check the configuration overview of your instance:

./admin/configure show

My guess is that you might be using musicbrainz-dev handle but that you didn’t rebuilt musicbrainz’s both image and container for a while, because the only docker-compose command you are showing is up.

If that is correct, then you will have to rebuild the image and replace the container - implying that files stored inside the container (such as replication logs, shell history…) will be lost (if that matters) - as follows:

sudo docker-compose up --build musicbrainz

Otherwise, if I made a wrong guess, please share the output of the following commands:

echo MusicBrainz Docker: `git describe --always --broken --dirty --tags`
echo Docker Compose: `docker-compose version --short`
sudo docker version -f 'Docker Client/Server: {{.Client.Version}}/{{.Server.Version}}'
sudo docker ps --all --filter name=musicbrainz-docker
./admin/configure show
cat .env
3 Likes

Woaw!! I love this!! :love_you_gesture: :heart_eyes:

It’s being building now (I already update both musicbrainz-docker and musicbrainz-server.

No problem, if I just need to redo this and that.


Ah, the build is now over but I got this, now, when I try to start it:

musicbrainz_1  | ListUtil.c: loadable library and perl binaries are mismatched (got handshake key 0xdb00080, needed 0xcd00080)
musicbrainz_1  | ListUtil.c: loadable library and perl binaries are mismatched (got handshake key 0xdb00080, needed 0xcd00080)
musicbrainz_1  | ListUtil.c: loadable library and perl binaries are mismatched (got handshake key 0xdb00080, needed 0xcd00080)
musicbrainz-docker_musicbrainz_1 exited with code 1

So here is the result of the commands you told me:

$ echo MusicBrainz Docker: `git describe --always --broken --dirty --tags`

MusicBrainz Docker: v-2022-08-25
$ echo Docker Compose: `docker-compose version --short`

Docker Compose: 1.27.4
$ sudo docker version -f 'Docker Client/Server: {{.Client.Version}}/{{.Server.Version}}'

Docker Client/Server: 20.10.17/20.10.17
$ sudo docker ps --all --filter name=musicbrainz-docker

CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
$ ./admin/configure show

COMPOSE_FILE is defined by '/home/bob/git/musicbrainz-docker/.env' file.

COMPOSE_FILE=docker-compose.yml:compose/musicbrainz-dev.yml:compose/publishing-all-ports.yml

Referred-to compose file(s):
[HANDLE]                PATH:                              DESCRIPTION
[default]               docker-compose.yml:                Default compose file, with host port for musicbrainz
[musicbrainz-dev]       compose/musicbrainz-dev.yml:       Build and run local development copy of MusicBrainz Server
[publishing-all-ports]  compose/publishing-all-ports.yml:  Publish all service ports on the host
$ cat .env

MUSICBRAINZ_SERVER_LOCAL_ROOT=/home/bob/git/musicbrainz-server
MUSICBRAINZ_WEB_SERVER_HOST=192.168.0.99

COMPOSE_FILE=docker-compose.yml:compose/musicbrainz-dev.yml:compose/publishing-all-ports.yml
1 Like

Some Perl dependencies have to be reinstalled after some Perl upgrades. Not sure which ones, so in doubt remove theses all as follows:

# In your musicbrainz-server directory
sudo rm -fr perl_modules

To run in the background:

# In your musicbrainz-docker directory
sudo docker-compose up --detach musicbrainz
1 Like

You don’t need to redo it as these files are not stored in the container’s filesystem.

1 Like

I guess it’s --detach, not --daemon to run docker-compose up in the background.
But whoa it means you know all that by heart?!

It’s starting, apparently, I will tell you.

This is what happens after writing the 16 occurrences of up -d in README file. :laughing:

1 Like
  • You can follow musicbrainz container logs with:

    sudo docker-compose logs --tail 42 --timestamps --follow musicbrainz
    

    Strike keys Ctrl and c to stop following logs.

  • To stop all the containers without removing these so it starts faster next time:

    sudo docker-compose stop
    
1 Like

I prefer not using detach and see everything directly in the terminal that launched it.
There is no drawbacks to this, is there?

Wow it took about 20 minutes to build but now apparently runs!!!

I’m so sorry I’m so clumsy each time I try to run local MBS again!
Now here is the error I get when I query the homepage, either as localhost:5000, as 127.0.0.1:5000 or as my own 192.168.0.99:5000:

musicbrainz_1  | fatal: detected dubious ownership in repository at '/musicbrainz-server'
musicbrainz_1  | To add an exception for this directory, call:
musicbrainz_1  | 
musicbrainz_1  | 	git config --global --add safe.directory /musicbrainz-server
musicbrainz_1  | fatal: detected dubious ownership in repository at '/musicbrainz-server'
musicbrainz_1  | To add an exception for this directory, call:
musicbrainz_1  | 
musicbrainz_1  | 	git config --global --add safe.directory /musicbrainz-server
musicbrainz_1  | 172.19.0.1 - - [30/Aug/2022:17:08:45 +0000] "GET / HTTP/1.1" 500 0 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0"
musicbrainz_1  | [error] Couldn't connect to the renderer. (URL: http://192.168.0.99:5000/)
musicbrainz_1  | 172.19.0.1 - - [30/Aug/2022:17:09:31 +0000] "GET / HTTP/1.1" 500 0 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0"
musicbrainz_1  | [error] Couldn't connect to the renderer. (URL: http://localhost:5000/)
musicbrainz_1  | 192.168.0.16 - - [30/Aug/2022:17:22:28 +0000] "GET / HTTP/1.1" 500 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.105 Safari/537.36"

(the first 2 are Debian 10 Firefox 91, and the last 1 is Windows 10 Vivaldi 5)

And the browser gets nothing (blank page) but an internal server error 500, in return:

GET http://192.168.0.99:5000/
HTTP/1.1 500 Internal Server Error 31235ms

:bowing_woman:
Sorry @yvanzo but even if now docker is running, I cannot see MBS pages. :cry:

1 Like

It makes perfectly sense and that is the original way to use Docker: short-living containers.

It is slightly slower when starting up, but it is a really minor drawback compared to usage comfort.

This time you found a bug. Sorry for the inconvenience and thank you for having reported! I just pushed commit f60e305 to fix it. To apply and try again, use the following commands:

git pull --ff-only
sudo docker-compose up --build musicbrainz
2 Likes

Oh it works now, almost!

I did not do your command yet (docker-compose, not just docker I guessed), I will try, in case it solves the following.

I can log in, I can see the home page.
Even the search works! http://localhost:5000/search?query=bowie&type=artist&limit=25&method=direct

BUT

But http://localhost:5000/artist/5441c29d-3602-4898-b1a1-b77fa23b8e50 says (directly in the browser, now):

Internal Server Error

Oops, something went wrong!

Error:

DBD::Pg::st execute failed: ERROR:  relation "area_containment" does not exist
LINE 1: SELECT 1 FROM area_containment LIMIT 1
                      ^ [for Statement "SELECT 1 FROM area_containment LIMIT 1"] at lib/MusicBrainz/Server/Connector.pm line 50
Sql::select_single_value(?, ?) called at lib/MusicBrainz/Server/Data/Utils.pm line 262
MusicBrainz::Server::Data::Utils::get_area_containment_join(?) called at lib/MusicBrainz/Server/Data/Area.pm line 75
MusicBrainz::Server::Data::Area::load_containment(?, ?, ?, ?) called at lib/MusicBrainz/Server/Controller/Artist.pm line 157
Catalyst::dispatch(?) called at lib/MusicBrainz/Server.pm line 388
MusicBrainz::Server::__ANON__ at lib/MusicBrainz/Server.pm line 353
MusicBrainz::Server::with_translations(?, ?) called at lib/MusicBrainz/Server.pm line 389
Class::MOP::Method::Wrapped::__ANON__(?) called at lib/MusicBrainz/Server.pm line 403
Class::MOP::Method::Wrapped::__ANON__(?) called at lib/MusicBrainz/Server.pm line 488

Time: 2022-08-30T18:40:17.965Z

Host: 379f22553c61

Interface language: en

URL: http://localhost:5000/artist/5441c29d-3602-4898-b1a1-b77fa23b8e50

Request data:

{
  "body_parameters": {},
  "query_parameters": {}
}

And http://localhost:5000/user/jesus2099 says (in the browser):

Internal Server Error

Oops, something went wrong!

Error:

DBD::Pg::st execute failed: ERROR:  relation "place_rating_raw" does not exist
LINE 1: ...w WHERE editor = '285909' UNION ALL SELECT 1 FROM place_rati...
                                                             ^ [for Statement "SELECT count(*) FROM (SELECT 1 FROM artist_rating_raw WHERE editor = ? UNION ALL SELECT 1 FROM event_rating_raw WHERE editor = ? UNION ALL SELECT 1 FROM place_rating_raw WHERE editor = ? UNION ALL SELECT 1 FROM release_group_rating_raw WHERE editor = ? UNION ALL SELECT 1 FROM label_rating_raw WHERE editor = ? UNION ALL SELECT 1 FROM recording_rating_raw WHERE editor = ? UNION ALL SELECT 1 FROM work_rating_raw WHERE editor = ?) x" with ParamValues: 1='285909', 2='285909', 3='285909', 4='285909', 5='285909', 6='285909', 7='285909'] at lib/MusicBrainz/Server/Connector.pm line 50
Sql::select_single_value(?, ?, ?, ?, ?, ?, ?, ?, ?) called at lib/MusicBrainz/Server/Data/Editor.pm line 770
MusicBrainz::Server::Data::Editor::secondary_counts(?, ?, ?) called at lib/MusicBrainz/Server/Controller/User.pm line 472
Catalyst::dispatch(?) called at lib/MusicBrainz/Server.pm line 388
MusicBrainz::Server::__ANON__ at lib/MusicBrainz/Server.pm line 353
MusicBrainz::Server::with_translations(?, ?) called at lib/MusicBrainz/Server.pm line 389
Class::MOP::Method::Wrapped::__ANON__(?) called at lib/MusicBrainz/Server.pm line 403
Class::MOP::Method::Wrapped::__ANON__(?) called at lib/MusicBrainz/Server.pm line 488

Time: 2022-08-30T18:39:31.739Z

Host: 379f22553c61

Interface language: en

URL: http://localhost:5000/user/jesus2099

Request data:

{
  "body_parameters": {},
  "query_parameters": {}
}

It seems I have problems with the database content.
Maybe I should remove everything and retry a new install of musicbrainz-docker?

I tried:

git pull --ff-only
sudo docker-compose up --build musicbrainz

But I still have those DB errors, like for http://localhost:5000/search?query=the&type=release_group&limit=25&method=direct it says:

Internal Server Error

Oops, something went wrong!

Error:

DBD::Pg::st execute failed: ERROR:  column ac.gid does not exist
LINE 2: ...tist.ended, ac.edits_pending AS ac_edits_pending, ac.gid AS ...
                                                             ^
HINT:  Perhaps you meant to reference the column "ac.id". [for Statement "SELECT artist, artist_credit_name.name AS ac_name, join_phrase, artist_credit,
                artist.id, artist.gid, artist.name COLLATE musicbrainz, artist.sort_name COLLATE musicbrainz, artist.type, artist.area, artist.begin_area, artist.end_area, gender, artist.edits_pending, artist.comment, artist.last_updated, artist.begin_date_year, artist.begin_date_month, artist.begin_date_day, artist.end_date_year, artist.end_date_month, artist.end_date_day,artist.ended, ac.edits_pending AS ac_edits_pending, ac.gid AS ac_gid
                FROM artist_credit_name
                JOIN artist ON artist.id=artist_credit_name.artist
                JOIN artist_credit ac ON ac.id = artist_credit_name.artist_credit
                WHERE artist_credit IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
                ORDER BY artist_credit, position" with ParamValues: 1='531923', 2='66', 3='24138', 4='854602', 5='192470', 6='11214', 7='226435', 8='1757', 9='299', 10='2333', 11='192', 12='434620', 13='100472', 14='1596440', 15='67938', 16='1464285', 17='1', 18='2147', 19='2403507', 20='43157', 21='88971', 22='2131043', 23='926', 24='347'] at lib/MusicBrainz/Server/Connector.pm line 50
Sql::select_list_of_hashes(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) called at lib/MusicBrainz/Server/Data/ArtistCredit.pm line 45
MusicBrainz::Server::Data::ArtistCredit::get_by_ids(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) called at lib/MusicBrainz/Server/Data/Role/EntityCache.pm line 42
MusicBrainz::Server::Data::ArtistCredit::get_by_ids(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) called at lib/MusicBrainz/Server/Data/Utils.pm line 155
MusicBrainz::Server::Data::Utils::load_subobjects(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) called at lib/MusicBrainz/Server/Data/ArtistCredit.pm line 79
MusicBrainz::Server::Data::ArtistCredit::load(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) called at lib/MusicBrainz/Server/Controller/Search.pm line 197
Catalyst::forward(?, ?) called at lib/MusicBrainz/Server/Controller/Search.pm line 61
Catalyst::dispatch(?) called at lib/MusicBrainz/Server.pm line 388
MusicBrainz::Server::__ANON__ at lib/MusicBrainz/Server.pm line 353
MusicBrainz::Server::with_translations(?, ?) called at lib/MusicBrainz/Server.pm line 389
Class::MOP::Method::Wrapped::__ANON__(?) called at lib/MusicBrainz/Server.pm line 403
Class::MOP::Method::Wrapped::__ANON__(?) called at lib/MusicBrainz/Server.pm line 488

Time: 2022-08-30T18:50:08.052Z

Host: 59e7261425cb

Interface language: en

URL: http://localhost:5000/search?query=the&type=release_group&limit=25&method=direct

Request data:

{
  "body_parameters": {},
  "query_parameters": {
    "query": "the",
    "type": "release_group",
    "limit": "25",
    "method": "direct"
  }
}

And for http://localhost:5000/search?query=the&type=recording&limit=25&method=direct it says:

Internal Server Error

Oops, something went wrong!

Error:

DBD::Pg::st execute failed: ERROR:  relation "medium_track_durations" does not exist
LINE 1: ...gth, cdtoc_track_lengths, data_track_lengths FROM medium_tra...
                                                             ^ [for Statement "SELECT medium, pregap_length, cdtoc_track_lengths, data_track_lengths FROM medium_track_durations WHERE medium = any(?)" with ParamValues: 1='{{"63217","1250594","618231","1591365","1591428","1499745","281830","2568306","281835","1591427","1145969","1499744"}}'] at lib/MusicBrainz/Server/Connector.pm line 50
Sql::select_list_of_hashes(?, ?, ?) called at lib/MusicBrainz/Server/Data/Medium.pm line 77
MusicBrainz::Server::Data::Medium::load_track_durations(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) called at lib/MusicBrainz/Server/Data/Medium.pm line 113
MusicBrainz::Server::Data::Medium::load_for_releases(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) called at lib/MusicBrainz/Server/Controller/Search.pm line 160
Catalyst::forward(?, ?) called at lib/MusicBrainz/Server/Controller/Search.pm line 61
Catalyst::dispatch(?) called at lib/MusicBrainz/Server.pm line 388
MusicBrainz::Server::__ANON__ at lib/MusicBrainz/Server.pm line 353
MusicBrainz::Server::with_translations(?, ?) called at lib/MusicBrainz/Server.pm line 389
Class::MOP::Method::Wrapped::__ANON__(?) called at lib/MusicBrainz/Server.pm line 403
Class::MOP::Method::Wrapped::__ANON__(?) called at lib/MusicBrainz/Server.pm line 488

Time: 2022-08-30T18:49:28.817Z

Host: 59e7261425cb

Interface language: en

URL: http://localhost:5000/search?query=the&type=recording&limit=25&method=direct

Request data:

{
  "body_parameters": {},
  "query_parameters": {
    "method": "direct",
    "limit": "25",
    "type": "recording",
    "query": "the"
  }
}
1 Like
  1. Which data do you need on your server?
    • Sample data (based on Nine Inch Nails, Kanye West, and Пётр Ильич Чайковский)?
    • Replicated data?
  2. Which version of MusicBrainz Server do you need?
    • Latest stable production branch?
    • beta branch?
    • master development branch?

Oh instead of David Bowie, I tried Nine Inch Nails.
But same relation "area_containment" does not exist error.

I just want to test a mini change to the production code before I can submit a (tested) code change suggestion (pull request).

I tried to create a test release but the http://localhost:5000/release/add release editor AJAX request to /ws/js/edit/create got:

{"error":"42703 DBD::Pg::st execute failed: ERROR: column ac.gid does not exist\nLINE 2: ...tist.ended, ac.edits_pending AS ac_edits_pending, ac.gid AS ...\n ^\nHINT: Perhaps you meant to reference the column \"ac.id\". [for Statement \"SELECT artist, artist_credit_name.name AS ac_name, join_phrase, artist_credit,\n artist.id, artist.gid, artist.name COLLATE musicbrainz, artist.sort_name COLLATE musicbrainz, artist.type, artist.area, artist.begin_area, artist.end_area, gender, artist.edits_pending, artist.comment, artist.last_updated, artist.begin_date_year, artist.begin_date_month, artist.begin_date_day, artist.end_date_year, artist.end_date_month, artist.end_date_day,artist.ended, ac.edits_pending AS ac_edits_pending, ac.gid AS ac_gid\n FROM artist_credit_name\n JOIN artist ON artist.id=artist_credit_name.artist\n JOIN artist_credit ac ON ac.id = artist_credit_name.artist_credit\n WHERE artist_credit IN (?)\n ORDER BY artist_credit, position\" with ParamValues: 1='2865605']"}

Okay then I suggest you to fetch and load the latest sample data dump as follows:

sudo docker-compose run --rm musicbrainz recreatedb.sh -fetch -sample
# the default password is musicbrainz
sudo docker-compose up musicbrainz
2 Likes

You are a true magician, @yvanzo!
It works!!!

1 Like