Выполнил 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 не работает и не запускается. Как его починить/восстановить? Хорошо бы без переустановки системы.
Emerge уже ничего не может. Последнее, что он смог - emerge portage. После чего и перестал работать напрочь, выдавая при запуске вышеуказанные комменты. Revdep-rebuild я уже пробовал, не помогает. Загрузиться с livecd и переписать оттуда emerge тоже пробовал, тоже безрезультатно. Или, может быть, неправильно списывал?
Бинарный файл пакета создастся по этому пути: /usr/calculate/share/packages/CLD/x86_64/
Перенесите его в систему.
После этого можно будет его установить либо при помощи emerge -K =категория/пакет-версия, либо простой распаковкой архива.
получил сообщение о том, что готовый результат лежит в /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, как и раньше, при запуске выдаёт вот такой код с ошибками и прекращает работу.
Что же всё-таки делать?
Да, действительно, инструкция помогла.
Собственно, стоило только закомментировать всего одну(!) строку в файле /etc/portage/modules (а там и была всего одна строка), и нормальная работа emerge восстановилась.
Ура, всё заработало!
Но обновлять питона по инструкции с сайта я не стал, вместо этого использовал с emerge опцию –pretend, получил информацию о необходимости установки связанных модулей, установил их и ОК.
Видимо, проблема с крахом emerge как раз в пропущенной мною опции –pretend. То есть, по идее, вместо emerge portage надо было набирать emerge --pretend portage.
Выводы: надо опцию –pretend вставить в emerge как обязательную по умолчанию. Пусть автоматически проверяет зависимости пакетов.
Вместо выполнения установки, просто отображает пакеты которые будут установлены, если опция --pretend не будет использоваться. Использование --pretend настоятельно рекомендуется перед установкой незнакомых пакетов.