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
Попробуйте обновить;-)