[DRE-maint] Bug#1120894: redmine: dpkg-reconfigure/upgrade redmine recreates /usr/share/redmine/plugins

Alban Browaeys alban.browaeys at gmail.com
Tue Nov 18 04:12:37 GMT 2025


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 at 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



More information about the Pkg-ruby-extras-maintainers mailing list