Ubuntu – Redmine 3.2.3-1 is half installed. Can neither be reinstalled nor removed

aptdpkgpackage-managementredmine

When I installed Redmine I had a problem in the middle of the database configuration. I think I ctrl C'ed in the middle of it because I tried to switch to Mysql after starting with sqlite3. Since then I can't remove it, install it, configure it, or reinstall it. The other question about fixing half installed package is returning an error 123.

sudo apt-get install redmine

 Do you want to continue? [Y/n] y
 dpkg: error processing package redmine (--configure):
 package redmine is not ready for configuration
 cannot configure (current status 'half-installed')
 Errors were encountered while processing:
 redmine
 E: Sub-process /usr/bin/dpkg returned an error code (1)

sudo apt-get remove redmine

Do you want to continue? [Y/n] y
dpkg: error processing package redmine (--remove):
 package is in a very bad inconsistent state; you should
 reinstall it before attempting a removal
Errors were encountered while processing:
 redmine
E: Sub-process /usr/bin/dpkg returned an error code (1)

sudo apt-get install –reinstall redmine

Preparing to unpack .../redmine_3.2.1-2_all.deb ...
Unpacking redmine (3.2.1-2) over (3.2.1-2) ...
ls: cannot access '/etc/redmine/*/database.yml': No such file or directory
dirname: missing operand
Try 'dirname --help' for more information.
basename: missing operand
Try 'basename --help' for more information.
dpkg: warning: subprocess old post-removal script returned error exit     status 123
dpkg: trying script from the new package instead ...
ls: cannot access '/etc/redmine/*/database.yml': No such file or directory
dirname: missing operand
Try 'dirname --help' for more information.
basename: missing operand
Try 'basename --help' for more information.
dpkg: error processing archive /var/cache/apt/archives    /redmine_3.2.1-2_all.deb (--unpack):
 subprocess new post-removal script returned error exit status 123
ls: cannot access '/etc/redmine/*/database.yml': No such file or directory
dirname: missing operand
Try 'dirname --help' for more information.
basename: missing operand
Try 'basename --help' for more information.
dpkg: error while cleaning up:
 subprocess new post-removal script returned error exit status 123
Errors were encountered while processing:
 /var/cache/apt/archives/redmine_3.2.1-2_all.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

Redmine seem to have specific reinstallation procedure that I tried, but it fail at the step where you call Redmine because it's not installed.

I've tried the solution in this question about half installed package and its still not working :

sudo dpkg –remove –force-remove-reinstreq redmine

dpkg: warning: overriding problem because --force enabled:
dpkg: warning: package is in a very bad inconsistent state; you should
 reinstall it before attempting a removal
(Reading database ... 409396 files and directories currently installed.)
Removing redmine (3.2.1-2) ...
ls: cannot access '/etc/redmine/*/database.yml': No such file or directory
dirname: missing operand
Try 'dirname --help' for more information.
basename: missing operand
Try 'basename --help' for more information.
dpkg: error processing package redmine (--remove):
 subprocess installed post-removal script returned error exit status 123
Errors were encountered while processing:
 redmine

Is there a way to fix this mess ? I don't care at all about what is in the mysql database or about the redmine configuration. I just want to start from scratch and be able to use redmine again.

Edit :
I thougth I solved the problem with :

sudo rm /var/lib/dpkg/info/redmine*

sudo dpkg –force-remove-reinstreq –remove redmine

 dpkg: warning: overriding problem because --force enabled:
 dpkg: warning: package is in a very bad inconsistent state; you should
  reinstall it before attempting a removal
 dpkg: warning: files list file for package 'redmine-sqlite' missing; assuming package has no files currently installed
 dpkg: warning: files list file for package 'redmine-mysql' missing; assuming package has no files currently installed
 (Reading database ... 409382 files and directories currently installed.)
 Removing redmine (3.2.1-2) ...

After an "apt-get purge –auto-remove redmine" to clean all the related packages, and to get rid of the configuration file, I was able to install redmine again… in theory. Because Rake is now failing (because of the ghost database configuration ?).

rake aborted!
Cannot load `Rails.application.database_configuration`:
Could not load database configuration. No such file - ["/usr/share/redmine/instances/default/config/database.yml"]

Then I still have the removal problem with apt-get remove :

ls: cannot access '/etc/redmine/*/database.yml': No such file or directory

Best Answer

I'm running 16.04 LTS and I had the exact same problem, but I proceeded in a different way.

Remove Redmine

I didn't remove the dpkg scripts, but instead what I did was open the redmine.postrm script and comment the lines that caused the post removal script to crash, so my file was left like:

$ cat /var/lib/dpkg/info/redmine.postrm
#!/bin/sh

set -e

. /usr/share/debconf/confmodule
if [ -f /usr/share/dbconfig-common/dpkg/postrm ]; then
  . /usr/share/dbconfig-common/dpkg/postrm

  # remove both current and old instances
# START OF THE COMMENTED SECTION TO AVOID CRASHES 
#  instances=$(ls -1 /etc/redmine/*/database.yml | xargs dirname | xargs -n 1 basename)
#  for inst in $instances; do
#    dbc_go redmine/instances/$inst "$@"
#  done
# END OF THE COMMENTED SECTION TO AVOID CRASHES
fi

if [ "$1" = purge ]; then
  rm -rf /var/log/redmine
  rm -rf /var/cache/redmine
  rm -rf /var/lib/redmine
  rm -rf /etc/redmine
fi

## Automatically added by dh_installdebconf
if [ "$1" = purge ] && [ -e /usr/share/debconf/confmodule ]; then
    . /usr/share/debconf/confmodule
    db_purge
fi
# End automatically added section
#

Which allowed me to simply remove it with:

sudo apt-get remove redmine --purge

It will prompt you asking you if you want to delete the database redmine_default; I answered yes, but you should choose carefully.

After that it will purge all your installation with no warnings, so your first question is answered.

(To have more information about how dpkg scripts works, please have a look at: https://www.debian.org/doc/debian-policy/ch-maintainerscripts.html)

Reinstall Redmine

Now, how to install redmine and getting it running?

We'll start by doing

sudo apt-get update && sudo apt-get install redmine redmine-mysql

Probably it will crash again saying something like:

Configurando redmine (3.2.1-2) ...
Determining localhost credentials from /etc/mysql/debian.cnf: succeeded.
dbconfig-common: writing config to /etc/dbconfig-common/redmine/instances/default.conf
Not replacing deleted config file /etc/redmine/default/database.yml
granting access to database redmine_default for redmine/instance@localhost: already exists.
creating database redmine_default: already exists.
dbconfig-common: flushing administrative password
rake aborted!
Cannot load 'Rails.application.database_configuration':
Could not load database configuration. No such file - ["/usr/share/redmine/instances/default/config/database.yml"]
/usr/share/redmine/lib/plugins/acts_as_activity_provider/init.rb:2:in 'block in <top (required)>'
/usr/share/redmine/config/initializers/00-core_plugins.rb:12:in 'eval'
/usr/share/redmine/config/initializers/00-core_plugins.rb:12:in 'block in <top (required)>'
/usr/share/redmine/config/initializers/00-core_plugins.rb:2:in 'each'
/usr/share/redmine/config/initializers/00-core_plugins.rb:2:in '<top (required)>'
/usr/share/redmine/config/environment.rb:14:in '<top (required)>'
/var/lib/gems/2.3.0/gems/rake-11.3.0/exe/rake:27:in '<top (required)>'
/var/lib/gems/2.3.0/gems/bundler-1.13.1/lib/bundler/cli/exec.rb:74:in 'load'
/var/lib/gems/2.3.0/gems/bundler-1.13.1/lib/bundler/cli/exec.rb:74:in 'kernel_load'
/var/lib/gems/2.3.0/gems/bundler-1.13.1/lib/bundler/cli/exec.rb:27:in 'run'
/var/lib/gems/2.3.0/gems/bundler-1.13.1/lib/bundler/cli.rb:332:in 'exec'
/var/lib/gems/2.3.0/gems/bundler-1.13.1/lib/bundler/vendor/thor/lib/thor/command.rb:27:in 'run'
/var/lib/gems/2.3.0/gems/bundler-1.13.1/lib/bundler/vendor/thor/lib/thor/invocation.rb:126:in 'invoke_command'
/var/lib/gems/2.3.0/gems/bundler-1.13.1/lib/bundler/vendor/thor/lib/thor.rb:359:in 'dispatch'
/var/lib/gems/2.3.0/gems/bundler-1.13.1/lib/bundler/cli.rb:20:in 'dispatch'
/var/lib/gems/2.3.0/gems/bundler-1.13.1/lib/bundler/vendor/thor/lib/thor/base.rb:440:in `start'
/var/lib/gems/2.3.0/gems/bundler-1.13.1/lib/bundler/cli.rb:11:in 'start'
/var/lib/gems/2.3.0/gems/bundler-1.13.1/exe/bundle:34:in 'block in <top (required)>'
/var/lib/gems/2.3.0/gems/bundler-1.13.1/lib/bundler/friendly_errors.rb:100:in 'with_friendly_errors'
/var/lib/gems/2.3.0/gems/bundler-1.13.1/exe/bundle:26:in '<top (required)>'

Recreate database.yml

Where it clearly states that it

Could not load database configuration. No such file - ["/usr/share/redmine/instances/default/config/database.yml"]

Now we have 2 options:

Create one

For the 3.2 version you can find an example here: http://www.redmine.org/projects/redmine/repository/entry/branches/3.2-stable/config/database.yml.example. After a minor changes we can have something like:

cat /usr/share/redmine/instances/default/config/database.yml
# Setup is given for MySQL with ruby1.9.    
# Examples for PostgreSQL, SQLite3 and SQL Server can be found at the end.    
# Line indentation must be 2 spaces (no tabs).

production:    
  adapter: mysql2
  database: redmine_default
  host: localhost    
  username: root    
  password: "MySQLRootPassword"    
  encoding: utf8    
development:    
  adapter: mysql2    
  database: redmine_default
  host: localhost    
  username: root    
  password: ""
  encoding: utf8    
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".    
# Do not set this db to the same as development or production.    
test:    
  adapter: mysql2    
  database: redmine_test    
  host: localhost    
  username: root    
  password: ""    
  encoding: utf8

Be careful as the production database HAS TO BE redmine_default or at least is the one that is left created after installation. I didn't check whether it will work with another value.

Copy the one that was created during installation

You could move it where the configuration script is trying to find it:

sudo cp /usr/share/redmine/config/database.yml /usr/share/redmine/instances/default/config/database.yml

Now that we have all that you need, we can finish the install with:

sudo apt-get -f install 

Further information about installing redmine on Ubuntu is in this wiki in redmine.com.

Related Question