Redmine 3.2.3-1 установлен наполовину. Не может быть ни переустановлен, ни удален

Когда я установил Redmine, у меня возникла проблема в середине конфигурации базы данных. Я думаю, что ctrl C'ed в середине этого, потому что я пытался переключиться на Mysql после запуска с sqlite3. С тех пор я не могу его удалить, установить, настроить или переустановить. Другой вопрос об исправлении половины установленного пакета возвращает ошибку 123.

sudo apt-get устанавливает 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 удалить 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, кажется, имеет особую процедуру переустановки, которую я пробовал, но она не удалась на этапе, когда вы вызываете Redmine, потому что он не установлен.

Я попробовал решение в этом вопросе о половине установленного пакета, и он все еще не работает:

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

Есть ли способ исправить этот беспорядок? Меня не волнует, что находится в базе данных MySQL или о конфигурации Redmine. Я просто хочу начать с нуля и снова использовать Redmine.

Изменить: я решил проблему с:

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) ...

После "apt-get purge --auto-remove redmine", чтобы очистить все связанные пакеты и избавиться от файла конфигурации, я смог снова установить redmine… теоретически. Потому что Rake теперь не работает (из-за конфигурации базы данных-призрака?).

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

Тогда у меня все еще есть проблема удаления с помощью apt-get remove:

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

4 ответа

Решение

Я работаю 16.04 LTS и у меня была точно такая же проблема, но я поступил по-другому.

Удалить Redmine

Я не удалил dpkg сценарии, но вместо этого я открыл redmine.postrm Сценарий и комментарий строки, которые вызвали сбой сценария удаления сообщения, поэтому мой файл был оставлен как:

$ 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
#

Что позволило мне просто удалить его с помощью:

sudo apt-get remove redmine --purge

Он спросит вас, хотите ли вы удалить базу данных redmine_default; Я ответил да, но вы должны тщательно выбирать.

После этого он удалит всю вашу установку без предупреждений, поэтому на ваш первый вопрос будет дан ответ.

(Чтобы получить больше информации о том, как dpkg скрипты работает, пожалуйста, посмотрите на: https://www.debian.org/doc/debian-policy/ch-maintainerscripts.html)

Переустановите Redmine

Теперь, как установить Redmine и запустить его?

Мы начнем делать

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

Возможно, он снова рухнет, сказав что-то вроде:

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)>'

Воссоздать database.yml

Где это ясно заявляет, что это

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

Теперь у нас есть 2 варианта:

Создай

Для версии 3.2 вы можете найти пример здесь: http://www.redmine.org/projects/redmine/repository/entry/branches/3.2-stable/config/database.yml.example. После небольших изменений у нас может быть что-то вроде:

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

Будьте осторожны, поскольку производственная база данных ДОЛЖНА БЫТЬ redmine_default или, по крайней мере, является той, которая оставлена ​​созданной после установки. Я не проверял, будет ли оно работать с другим значением.

Скопируйте тот, который был создан во время установки

Вы можете переместить его туда, где скрипт конфигурации пытается его найти:

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

Теперь, когда у нас есть все, что вам нужно, мы можем завершить установку:

sudo apt-get -f install 

Дополнительная информация об установке Redmine в Ubuntu находится в этой вики на redmine.com.

На самом деле это известная ошибка в Redmine 3.2.3-1: в этой группе Google обсуждается эта проблема.

Не забудьте создать файл /etc/redmine/*/database.yml во время настройки. Создание его позже, похоже, тоже не решает проблему.

Я наконец сделал это приблизительно через 8 часов, моя Redmine снова работает. Спасибо Мануэлю и десяткам других вопросов и ответов StackExchange.

Если принятый ответ не работает, удалите старый пакет и получите ошибку о том, что пакет действительно в плохом состоянии (dpkg: warning: package is in a very bad inconsistent state; you should reinstall it before attempting a removal) и не может быть удален с sudo apt-get remove redmine --purge как написано Мануэлем, сделайте следующее. Тем не менее обновите скрипт redmine.postrm, как написал Мануэль в своем ответе. Может быть, это работает для вас, но это не для меня. Загрузите пакет redmine вручную на packages.ubuntu.com и запустите sudo dpkg -i WHERE/THE/DOWNLOADED/PACKAGE/IS как предложено в этом комментарии.

Решение, которое сработало для меня

Если это не сработало, попробуйте следующее, что сработало для меня, как показано здесь: sudo dpkg --remove --force-remove-reinstreq redmine, Я тоже sudo dpkg --purge --force-remove-reinstreq redmine удалить файлы конфигурации. И после этого также sudo apt-get remove redmine а также sudo apt-get autoremove && sudo apt-get autoclean

Если вы получаете дополнительную ошибку при установке Redmine с sudo apt-get install redmine redmine-mysql около

/usr/local/bin/bundle:23:in 'load': cannot load such file -- /usr/share/rubygems-integration/all/gems/bundler-1.11.2/exe/bundle (LoadError)
        from /usr/local/bin/bundle:23:in '<main>'

Затем попробуйте и посмотрите, есть ли у вас gem доступная команда (если нет, не знаю, откуда она берется, но, скорее всего, пакет ruby, поэтому просто установите ее) и введите gem install bundler, Если у вас уже было это хорошо. Он будет установлен на INSTALLATION DIRECTORY что вы можете увидеть, когда вы бежите gem environment, в моем случае /var/lib/gems/2.3.0, Я не знаю почему, но у меня до сих пор не было bundler-1.11.2 в каталоге, который был упомянут выше, но все равно, он продолжал идти.

Следующая ошибка, которую я получил:

dbconfig-common: flushing administrative password
Could not find gem 'mysql2 (~> 0.4.0)' in any of the gem sources listed in your Gemfile or available on this machine.
Run `bundle install` to install missing gems.

Установите msyql2 gem

Прежде чем я смог установить с gem install mysql2 Я должен был установить sudo apt-get install libmysqlclient-dev (если это не работает, удалите redmine Пакет снова сначала, как показано выше, я должен был сделать это). Это должно быть установлено автоматически с redmineпакет, но да...

Если вы получаете сообщение об ошибке типа

Fetching: mysql2-0.4.4.gem (100%)
Building native extensions.  This could take a while...
ERROR:  Error installing mysql2:
        ERROR: Failed to build gem native extension.̀

И есть что-то в данном файле журнала ошибок, как gcc: error: unrecognized command line option тогда беги sudo apt-get install gcc make, Попробуйте еще раз с gem install mysql2̀,

Продолжить установку

После этого продолжайте с ответом Мануэля. И если вы получили ошибку при создании файла database.yml (у меня не было файла, созданного во время установки, кстати, и я не смог скопировать его, пришлось скопировать пример Мануэля, так что не волнуйтесь) и продолжил установку и что-то получил как это

[!] There was an error parsing 'Gemfile': undefined method 'values' for "Setup is given for MySQL with ruby1.9.":String. Bundler cannot continue.
 #  from /usr/share/redmine/Gemfile:67
 #  -------------------------------------------
 #    database_config = YAML::load(ERB.new(IO.read(database_file)).result)
 >    adapters = database_config.values.map {|c| c['adapter']}.compact.uniq
 #    if adapters.any?
 #  -------------------------------------------

Тогда не волнуйтесь, вы были слишком глупы, чтобы правильно скопировать файл database.yml, как я:D В моем случае я забыл начальный знак комментария #, Если у вас могут возникнуть другие проблемы, проверьте файл database.yml на http://www.yamllint.com/ наличие ошибок. Может быть, если у вас есть пароль, который содержит @ Вы должны избежать этого символа (не знаю как), потому что это зарезервированный символ yaml.

Я решил проблему, просто удалив и переустановив redmine и начиная apache2еще раз. Мне не нужно было очищать Redmine и жертвовать данными:

# apt remove redmine 
# apt install redmine
# systemctl start apache2

Когда вас спросят, нужно ли перенастроить базу данных (или что-то в этом роде), очевидно, выберите Нет, чтобы сохранить ваши данные.

Попробуй это:

Найдите и прокомментируйте строку удаления в этом файле: /var/lib/dpkg/info/redmine.postinst

Выглядеть так:

#rm -f /var/lib/redmine/Gemfile.lock

Сделайте символическую ссылку на /var/lib/redmine/Gemfile.lock в /usr/share/redmine

Попробуйте обновить;-)

Другие вопросы по тегам