Восстановление emerge

Добавил(а) Илья Еремеев больше 16 лет назад

Calculate CLD 10.0

Выполнил emerge portage, потом попытался запустить emerge и получил вот что:

calculate bin # emerge
Traceback (most recent call last):
  File "/usr/bin/emerge", line 40, in <module>
    retval = _emerge.emerge_main()
  File "/usr/lib/portage/pym/_emerge/__init__.py", line 15464, in emerge_main
    portdb = trees[settings["ROOT"]]["porttree"].dbapi
  File "/usr/lib/portage/pym/portage/util.py", line 1117, in __getitem__
    result = lazy_item.func(*pargs, **kwargs)
  File "/usr/lib/portage/pym/portage/dbapi/porttree.py", line 1121, in __init__
    settings["PORTDIR"], mysettings=settings)
  File "/usr/lib/portage/pym/portage/dbapi/porttree.py", line 293, in __init__
    self.auxdbmodule = self.mysettings.load_best_module("portdbapi.auxdbmodule")
  File "/usr/lib/portage/pym/portage/__init__.py", line 2011, in load_best_module
    mod = load_mod(best_mod)
  File "/usr/lib/portage/pym/portage/__init__.py", line 171, in load_mod
    mod = __import__(modname)
  File "/usr/lib/portage/pym/portage/cache/sqlite.py", line 14, in <module>
    from pysqlite2 import dbapi2 as db_module
ImportError: No module named pysqlite2
calculate bin #

То есть emerge не работает и не запускается. Как его починить/восстановить? Хорошо бы без переустановки системы.


Ответы (7)

RE: Восстановление emerge - Добавил(а) Alexander Tratsevskiy больше 16 лет назад

Ну если emerge ещё собирать может, можно выполнить:

revdep-rebuild

Подробнее обновление системы описано здесь.

RE: Восстановление emerge - Добавил(а) Илья Еремеев больше 16 лет назад

Emerge уже ничего не может. Последнее, что он смог - emerge portage. После чего и перестал работать напрочь, выдавая при запуске вышеуказанные комменты.
Revdep-rebuild я уже пробовал, не помогает. Загрузиться с livecd и переписать оттуда emerge тоже пробовал, тоже безрезультатно. Или, может быть, неправильно списывал?

RE: Восстановление emerge - Добавил(а) Alexander Tratsevskiy больше 16 лет назад

Загрузитесь с livecd и выполните.

quickpkg portage

Бинарный файл пакета создастся по этому пути: /usr/calculate/share/packages/CLD/x86_64/
Перенесите его в систему.
После этого можно будет его установить либо при помощи emerge -K =категория/пакет-версия, либо простой распаковкой архива.

RE: Восстановление emerge - Добавил(а) Илья Еремеев больше 16 лет назад

Что было сделано:

- загрузился с LiveCD;
- запустил терминал;
- набрал и запустил "quickpkg portage";
- получил сообщение о том, что готовый результат лежит в /usr/calculate/share/packages/CLD/i686;
- запустил Midnight Commander и пошёл по указанному адресу;
- нашёл файл portage-2.1.6.13.tbz2, открыл его в MC, распаковал вложенные папки etc и usr на жёсткий диск с заменой старых файлов;
- закрыл все окна, дал команду на перезагрузку компьютера с HDD.

Что получилось:

calculate guest # emerge -h
Traceback (most recent call last):
  File "/usr/bin/emerge", line 40, in <module>
    retval = _emerge.emerge_main()
  File "/usr/lib/portage/pym/_emerge/__init__.py", line 15464, in emerge_main
    portdb = trees[settings["ROOT"]]["porttree"].dbapi
  File "/usr/lib/portage/pym/portage/util.py", line 1117, in __getitem__
    result = lazy_item.func(*pargs, **kwargs)
  File "/usr/lib/portage/pym/portage/dbapi/porttree.py", line 1121, in __init__
    settings["PORTDIR"], mysettings=settings)
  File "/usr/lib/portage/pym/portage/dbapi/porttree.py", line 293, in __init__
    self.auxdbmodule = self.mysettings.load_best_module("portdbapi.auxdbmodule")
  File "/usr/lib/portage/pym/portage/__init__.py", line 2011, in load_best_module
    mod = load_mod(best_mod)
  File "/usr/lib/portage/pym/portage/__init__.py", line 171, in load_mod
    mod = __import__(modname)
  File "/usr/lib/portage/pym/portage/cache/sqlite.py", line 14, in <module>
    from pysqlite2 import dbapi2 as db_module
ImportError: No module named pysqlite2
calculate guest #

То есть - то же самое. Emerge, как и раньше, при запуске выдаёт вот такой код с ошибками и прекращает работу.
Что же всё-таки делать?

RE: Восстановление emerge - Добавил(а) Alexander Tratsevskiy больше 16 лет назад

Похоже здесь есть решение: http://en.gentoo-wiki.com/wiki/Portage_SQLite_Cache
  • 5.1 ImportError: No module named pysqlite2

RE: Восстановление emerge - Добавил(а) Илья Еремеев больше 16 лет назад

Да, действительно, инструкция помогла.
Собственно, стоило только закомментировать всего одну(!) строку в файле /etc/portage/modules (а там и была всего одна строка), и нормальная работа emerge восстановилась.
Ура, всё заработало!
Но обновлять питона по инструкции с сайта я не стал, вместо этого использовал с emerge опцию --pretend, получил информацию о необходимости установки связанных модулей, установил их и ОК.
Видимо, проблема с крахом emerge как раз в пропущенной мною опции --pretend. То есть, по идее, вместо emerge portage надо было набирать emerge --pretend portage.
Выводы: надо опцию --pretend вставить в emerge как обязательную по умолчанию. Пусть автоматически проверяет зависимости пакетов.

RE: Восстановление emerge - Добавил(а) Alexander Tratsevskiy больше 16 лет назад

--pretend

Вместо выполнения установки, просто отображает пакеты которые будут установлены, если опция --pretend не будет использоваться. Использование --pretend настоятельно рекомендуется перед установкой незнакомых пакетов.

Более подробно можно почитать здесь.

(1-7/7)

Спасибо!