I m closing this bug report. I will open another for the duplicate plugin files loaded when symlinking /usr/share/redmine/plugins/<x> into /var/lib/redmine/default/plugins.
Le lundi 17 novembre 2025 à 20:32 -0700, Soren Stoutner a écrit : > On Monday, November 17, 2025 7:49:52 PM Mountain Standard Time Alban > Browaeys > wrote: > > I meant: > > rmdir /var/lib/redmine/default/plugin > > is the way advertised by the Debian README to have > > /usr/share/redmine/plugins activated when one do not want to use > > symlinks from /usr/share/redmine/plugins/ to > > /var/lib/redmine/default/plugins. > > The text of README.Debian has changed a bit from the version in > 6.0.5+ds-1 to > the current text, which reads: > > Plugins will be loaded from > /var/lib/redmine/instances/$REDMINE_INSTANCE/plugins/. If this > directory does > not exist, loading will fall back to the global plugins directory at > /usr/share/redmine/plugins/. The > /var/lib/redmine/instances/$REDMINE_INSTANCE/plugins/ directory is > automatically > created each time Redmine is upgraded. To enable a plugin for an > instance it > can be symlinked from the global plugins driectory. > > https://sources.debian.org/src/redmine/6.0.6%2Bds-2/debian/README.Debian > > Hopefully, this is a bit more express. > > > Fact is I cannot use symlinks from /usr/share/redmine/plugins/<x> > > to > > /var/lib/redmine/default/plugins because it crashes rails loading. > > THis > > is another bug. > > In the meantime I can workaround this issue by switching removing > > the > > /var/lib/redmine/default/plugins directory as advertised by the > > Debian > > README to have /usr/share/plugins fallback to work. > > That should be a bug that you file, as that is not behavior I have > noticed. > We should get to the bottom of why that is happening. > > > But /usr/share/redmine/bin/redmine-instances called on each > > upgrades/dpkg-reconfigure of redmine by redmine.postinst recreate > > teh > > deleted /var/lib/redmine/default/plugins directory (with an empty > > folder) thus the fallback to /usr/share/redmine/plugins is disabled > > and > > I have no plugins anymore. > > As stated in the README text above, that is the expected behavior, > which is > why it is not the recommended way of handling plugins, although it is > possible > if you want to manually re-delete it after every upgrade. > OK so indeed that is the expected behavior, but you might want to backport this doc fixup to stable (ie trixie). But maybe 6.0.6+ds-2is targeted to reach stable thus the doc issue is already fixed. The fallback not surviving an upgrade is unfortunate but so be it. > > I plan to bug report the symlinks to > > /var/lib/redmine/default/plugins > > from /usr/share/redmine/plugins/<x> breaks in a later bug report > > once I > > have redmine at least back on track with the fallback to > > /usr/share/redmine/plugins (this is my local prod redmine > > instance). > > Fact is currently I get redmine to work but it will breaks on each > > redmine upgrades. > > I think that is a good idea. You can either create a new bug report > or > retitle this one. > > > ie unircorn errors out this way when I use symlinks (same for `sudo > > -u > > www-data REDMINE_INSTANCE=default rackup -E production`) > > I am not familiar with Unicorn. In your other bug report (or this > one if you > retitle) you might want to provide some background on how it works > and the > configuration options you are using. > I doubt unicorn matters there (though probably my unstandard /usr/share/redmine/instances being a directory containing a default symlink to /var/lib/redmine/default does). This as as I reported I have the exact same issue with `rackup` when I spawn a test webserver. > > Note that I have /usr/share/redmine/instances/default a symlink to > > /var/lib/redmine/default. I don't know if it is vanilla. If I > > remove > > this symlink and dpkg-reconfigure or reinstall redmine a broken > > nearly > > empty (out of a log file) /usr/share/redmine/instances/default > > directory is created and redmine bundler errors out (because > > /usr/share/redmine/Gemfile > > `Dir['/usr/share/redmine/{config,instances/*/config}/database.yml'] > > .sel > > ect do |f| ` > > and there is not > > /usr/share/redmine/instances/default/config/database.yml because > > /usr/share/redmine/instances/default is nearly empty). > > It seems /usr/share/redmine/instances/default empty folder is > > created > > by redmine.postinst rake db:migrate. > > I don’t think that is a standard configuration. > /usr/share/redmine/instances > should be a symlink to /var/lib/redmine as shown in my original > email, but > inside of that "default" is not typically a symlink. > I don't know how I got that nonstandard setup of /usr/share/redmine/instances. I even tried moving this folder away but I had the same duplicate plugins files loaded and error. So I reverted it. Indeed now when remove /usr/share/redmine/instances and apt install -- reinstall redmine I get the /usr/share/redmine/instances symlink to /var/lib/redmine. But thte duplicate plugin file loaded error is still there. phn@uruk:/var/lib/redmine/default/plugins$ tail -f /var/log/redmine/default/unicorn.stderr.log I, [2025-11-18T05:03:49.677259 #1349] INFO -- : Refreshing Gem list I, [2025-11-18T05:04:21.183680 #1349] INFO -- : unlinking existing socket=/var/cache/redmine/default/sockets/redmine.socket I, [2025-11-18T05:04:21.185348 #1349] INFO -- : listening on addr=/var/cache/redmine/default/sockets/redmine.socket fd=8 I, [2025-11-18T05:04:21.186670 #1349] INFO -- : listening on addr=127.0.0.1:18083 fd=9 I, [2025-11-18T05:04:21.216671 #1349] INFO -- : master process ready I, [2025-11-18T05:04:21.272917 #1360] INFO -- : worker=0 ready sh: 1: gs: not found I, [2025-11-18T05:05:04.294631 #1349] INFO -- : reaped #<Process::Status: pid 1360 exit 0> worker=0 I, [2025-11-18T05:05:04.295004 #1349] INFO -- : master complete I, [2025-11-18T05:05:05.469626 #1434] INFO -- : Refreshing Gem list /usr/share/redmine/plugins/redmine_git_hosting/lib/redmine_git_hosting/file_logger.rb:7: warning: already initialized constant RedmineGitHosting::FileLogger::LOG_LEVELS /usr/share/redmine/instances/default/plugins/redmine_git_hosting/lib/redmine_git_hosting/file_logger.rb:7: warning: previous definition of LOG_LEVELS was here /usr/share/redmine/plugins/redmine_git_hosting/lib/redmine_git_hosting/git_access.rb:5: warning: already initialized constant RedmineGitHosting::GitAccess::DOWNLOAD_COMMANDS /usr/share/redmine/instances/default/plugins/redmine_git_hosting/lib/redmine_git_hosting/git_access.rb:5: warning: previous definition of DOWNLOAD_COMMANDS was here /usr/share/redmine/plugins/redmine_git_hosting/lib/redmine_git_hosting/git_access.rb:6: warning: already initialized constant RedmineGitHosting::GitAccess::PUSH_COMMANDS /usr/share/redmine/instances/default/plugins/redmine_git_hosting/lib/redmine_git_hosting/git_access.rb:6: warning: previous definition of PUSH_COMMANDS was here /usr/share/redmine/plugins/redmine_git_hosting/lib/redmine_git_hosting/mirror_keys_installer.rb:7: warning: already initialized constant RedmineGitHosting::MirrorKeysInstaller::GITOLITE_MIRRORING_KEYS_NAME /usr/share/redmine/instances/default/plugins/redmine_git_hosting/lib/redmine_git_hosting/mirror_keys_installer.rb:7: warning: previous definition of GITOLITE_MIRRORING_KEYS_NAME was here /usr/share/rubygems-integration/all/gems/activesupport-7.2.2.1/lib/active_support/concern.rb:162:in `included': Cannot define multiple 'included' blocks for a Concern (ActiveSupport::Concern::MultipleIncludedBlocks) from /usr/share/redmine/plugins/redmine_git_hosting/lib/redmine_git_hosting/patches/dashboard_content_project_patch.rb:8:in `<module:DashboardContentProjectPatch>' from /usr/share/redmine/plugins/redmine_git_hosting/lib/redmine_git_hosting/patches/dashboard_content_project_patch.rb:5:in `<module:Patches>' from /usr/share/redmine/plugins/redmine_git_hosting/lib/redmine_git_hosting/patches/dashboard_content_project_patch.rb:4:in `<module:RedmineGitHosting>' from /usr/share/redmine/plugins/redmine_git_hosting/lib/redmine_git_hosting/patches/dashboard_content_project_patch.rb:3:in `<top (required)>' from /usr/lib/ruby/3.3.0/bundled_gems.rb:69:in `require' from /usr/lib/ruby/3.3.0/bundled_gems.rb:69:in `block (2 levels) in replace_require' from /usr/share/rubygems-integration/all/gems/zeitwerk-2.6.8/lib/zeitwerk/kernel.rb:38:in `require' from /usr/lib/ruby/vendor_ruby/polyglot.rb:65:in `require' from /usr/share/rubygems-integration/all/gems/activesupport-7.2.2.1/lib/active_support/dependencies/require_dependency.rb:21:in `require_dependency' from /usr/share/redmine/instances/default/plugins/redmine_git_hosting/lib/redmine_git_hosting/redmine_plugin_loader.rb:127:in `block in autoload_libs!' from /usr/share/redmine/instances/default/plugins/redmine_git_hosting/lib/redmine_git_hosting/redmine_plugin_loader.rb:126:in `each' from /usr/share/redmine/instances/default/plugins/redmine_git_hosting/lib/redmine_git_hosting/redmine_plugin_loader.rb:126:in `autoload_libs!' from /usr/share/redmine/instances/default/plugins/redmine_git_hosting/lib/redmine_git_hosting/redmine_plugin_loader.rb:96:in `load_plugin!' from /usr/share/redmine/instances/default/plugins/redmine_git_hosting/init.rb:72:in `<top (required)>' from /usr/share/redmine/lib/redmine/plugin_loader.rb:31:in `load' from /usr/share/redmine/lib/redmine/plugin_loader.rb:31:in `run_initializer' from /usr/share/redmine/lib/redmine/plugin_loader.rb:67:in `each' from /usr/share/redmine/lib/redmine/plugin_loader.rb:67:in `block in load' from /usr/share/rubygems-integration/all/gems/activesupport-7.2.2.1/lib/active_support/callbacks.rb:407:in `instance_exec' from /usr/share/rubygems-integration/all/gems/activesupport-7.2.2.1/lib/active_support/callbacks.rb:407:in `block in make_lambda' from /usr/share/rubygems-integration/all/gems/activesupport-7.2.2.1/lib/active_support/callbacks.rb:179:in `block in call' from /usr/share/rubygems-integration/all/gems/activesupport-7.2.2.1/lib/active_support/callbacks.rb:668:in `block (2 levels) in default_terminator' from /usr/share/rubygems-integration/all/gems/activesupport-7.2.2.1/lib/active_support/callbacks.rb:667:in `catch' from /usr/share/rubygems-integration/all/gems/activesupport-7.2.2.1/lib/active_support/callbacks.rb:667:in `block in default_terminator' from /usr/share/rubygems-integration/all/gems/activesupport-7.2.2.1/lib/active_support/callbacks.rb:180:in `call' from /usr/share/rubygems-integration/all/gems/activesupport-7.2.2.1/lib/active_support/callbacks.rb:559:in `block in invoke_before' from /usr/share/rubygems-integration/all/gems/activesupport-7.2.2.1/lib/active_support/callbacks.rb:559:in `each' from /usr/share/rubygems-integration/all/gems/activesupport-7.2.2.1/lib/active_support/callbacks.rb:559:in `invoke_before' from /usr/share/rubygems-integration/all/gems/activesupport-7.2.2.1/lib/active_support/callbacks.rb:109:in `run_callbacks' from /usr/share/rubygems-integration/all/gems/activesupport-7.2.2.1/lib/active_support/reloader.rb:96:in `prepare!' from /usr/share/rubygems-integration/all/gems/railties-7.2.2.1/lib/rails/application/finisher.rb:74:in `block in <module:Finisher>' from /usr/share/rubygems-integration/all/gems/railties-7.2.2.1/lib/rails/initializable.rb:32:in `instance_exec' from /usr/share/rubygems-integration/all/gems/railties-7.2.2.1/lib/rails/initializable.rb:32:in `run' from /usr/share/rubygems-integration/all/gems/railties-7.2.2.1/lib/rails/initializable.rb:61:in `block in run_initializers' from /usr/lib/ruby/3.3.0/tsort.rb:231:in `block in tsort_each' from /usr/lib/ruby/3.3.0/tsort.rb:353:in `block (2 levels) in each_strongly_connected_component' from /usr/lib/ruby/3.3.0/tsort.rb:434:in `each_strongly_connected_component_from' from /usr/lib/ruby/3.3.0/tsort.rb:352:in `block in each_strongly_connected_component' from /usr/lib/ruby/3.3.0/tsort.rb:350:in `each' from /usr/lib/ruby/3.3.0/tsort.rb:350:in `call' from /usr/lib/ruby/3.3.0/tsort.rb:350:in `each_strongly_connected_component' from /usr/lib/ruby/3.3.0/tsort.rb:229:in `tsort_each' from /usr/lib/ruby/3.3.0/tsort.rb:208:in `tsort_each' from /usr/share/rubygems-integration/all/gems/railties-7.2.2.1/lib/rails/initializable.rb:60:in `run_initializers' from /usr/share/rubygems-integration/all/gems/railties-7.2.2.1/lib/rails/application.rb:435:in `initialize!' from /usr/share/redmine/config/environment.rb:16:in `<top (required)>' from config.ru:4:in `require_relative' from config.ru:4:in `block in <main>' from /usr/share/rubygems-integration/all/gems/rack-3.1.18/lib/rack/builder.rb:124:in `instance_eval' from /usr/share/rubygems-integration/all/gems/rack-3.1.18/lib/rack/builder.rb:124:in `initialize' from config.ru:1:in `new' from config.ru:1:in `<main>' from /usr/lib/ruby/vendor_ruby/unicorn.rb:54:in `eval' from /usr/lib/ruby/vendor_ruby/unicorn.rb:54:in `block in builder' from /usr/lib/ruby/vendor_ruby/unicorn/http_server.rb:790:in `build_app!' from /usr/lib/ruby/vendor_ruby/unicorn/http_server.rb:140:in `start' from /usr/bin/unicorn:129:in `<main>' The only way I can get redmine to start with a rails Concern derived class is with the /usr/share/redmine/plugins fallback. > root:/usr/share/redmine/instances# ls -la > total 20 > drwxr-xr-x 3 root root 4096 Oct 6 15:33 . > drwxr-xr-x 112 root root 4096 Sep 9 18:58 .. > drwxr-xr-x 5 root root 4096 Oct 6 15:33 default > -rw-r--r-- 1 www-data www-data 7367 Oct 6 15:33 Gemfile.lock > > Note that, in case it wasn’t clear from my original email, the > configuration > that has been tested is symlinking each plugin directory. I have not > tested > symlinking the entire parent plugin directory, which one of your > comments made > me think perhaps you have tried. Not that I have a second redmine instance leftover for "test" instance because I tried to create a second instance while trying to sort out why my plugins were not loaded. Then I run dpkg-reconfigure redmine with only default an instance. But the test instance leftovers are still there. Best Regards, Alban

