После обновления MongoDB это не запускается, и журнал пуст

Так как, по-видимому, мы отвечаем на этот вопрос теперь.

Демонстрационные данные

$ ls -1
afile1
afile2
afile3
filelist.txt

$ cat afile{1..3}
blah
blah
blah

Пример

$ cnt=0; for i in $(< filelist.txt);do \
   let cnt="cnt+$(wc -c $i | cut -d' ' -f1)";done; echo $cnt
15

В его расширенной форме:

$ cnt=0;
$ for i in $(< filelist.txt);do 
    let cnt="cnt+$(wc -c $i | cut -d' ' -f1)"
  done
$ echo $cnt

Метод derobert

Один из наших постоянных клиентов упомянул, что Ваш преподаватель, возможно, искал этот метод, о котором до сих пор я не знал. В более новых версиях wc команда там является a --files0-from= переключатель, который может взять список файлов и вычислить количество символов и соответствующего общего количества.

Затруднение подхода:

$ tr -s '\n' '\000' < filelist.txt | wc -c --files0-from=-

Пример

$ tr -s '\n' '\000' < filelist.txt | wc -c --files0-from=-
5 afile1
5 afile2
5 afile3
15 total

Это может, конечно, быть очищено так, чтобы результат был сохранен в значении. Что-то вроде этого:

$ tr -s '\n' '\000' < filelist.txt | \
     wc -c --files0-from=- | awk '/total/ {print $1}'
15

И наконец можно сохранить результаты в переменной как так:

$ cnt=$(tr -s '\n' '\000' < filelist.txt | \
     wc -c --files0-from=- | awk '/total/ {print $1}')
2
27.04.2015, 10:28
1 ответ

Вариант 1:

Поскольку вы, кажется, имеете полуконфигурированный mongodb-org-server и распакованный, но (не сконфигурированный) mongodb-org, пожалуйста, попробуйте следующую команду:

dpkg --configure mongodb-org-server mongodb-org

Если также не удаётся решить проблемы с зависимостями, попробуйте следующее:

dpkg --configure --force-depends mongodb-org-server mongodb-org

Вариант 2:

Так как настройка пакетов в вашем случае, похоже, не проходит нормально, я бы посоветовал в следующий раз попробовать очистить систему предыдущей установки, а затем выполнить свежую инсталляцию. Однако, это довольно грубый способ, и я предлагаю вам сначала прочитать его и иметь в виду, что я на самом деле не тестировал его.

Сначала получите список файлов, установленных пакетами mongodb-org:

dpkg-query -L mongodb-org mongodb-org-server mongodb-org-mongos mongodb-org-shell mongodb-org-tools | grep "^\/[^\.]" > mongo.files

Затем проверьте содержимое mongo.files (чтобы убедиться, что он содержит только пути, которые можно удалить), сделав:

less mongo.files

Затем удалите эти файлы из системы, выпустив:

 rm `cat mongo.files`

Затем сообщите менеджеру пакетов, что эти пакеты в настоящее время не установлены в системе, отредактировав вручную /var/lib/dpkg/status. Перед тем, как что-либо сделать с этим файлом, сделайте резервную копию на случай, если что-то пойдет не так (помните, что мы делаем операцию с внутренними данными менеджера пакетов...). Файл отформатирован в виде последовательных строк текста с разделами, разделенными пустой строкой. Найдите в файле все секции, начинающиеся с Package: mongodb-org и удалите их (удалите все строки из строки, начиная с 'Package' и заканчивая пустой строкой). После этого сохраните файл и запустите apt-get update, а затем apt-get install mongodb-org.

Я надеюсь, что это ничего не сломает и в конце концов вы получите работоспособную копию MongoDB.

2
27.01.2020, 22:13

Теги

Похожие вопросы