[SOLVED] Проблемы с portage (emerge)

Моя проблема почти полностью описана в этом топике: http://gentoo.ru/node/11914
Тем не менее. Началось с этого:

emerge -pv portage

These are the packages that would be merged, in order:

Calculating dependencies \Traceback (most recent call last):
 File "/usr/bin/emerge", line 6979, in <module>
   retval = emerge_main()
 File "/usr/bin/emerge", line 6973, in emerge_main
   myopts, myaction, myfiles, spinner)
 File "/usr/bin/emerge", line 6240, in action_build
   retval, favorites = mydepgraph.select_files(myfiles)
 File "/usr/bin/emerge", line 2120, in select_files
   if not self.validate_blockers():
 File "/usr/bin/emerge", line 2571, in validate_blockers
   blocker_cache.flush()
 File "/usr/bin/emerge", line 1335, in flush
   cPickle.dump(self._cache_data, f, -1)
cPickle.PicklingError: Can't pickle <type 'method-wrapper'>: attribute lookup
__builtin__.method-wrapper failed

однако:

emerge -pv 123

These are the packages that would be merged, in order:

Calculating dependencies \
emerge: there are no ebuilds to satisfy "123".

Кратко, что сделано:
1. http://www.gentoo.org/proj/en/portage/doc/manually-fixing-portage.xml
После этого получаю:

emerge portage
Traceback (most recent call last):
  File "/usr/bin/emerge", line 4049, in <module>
    emerge_main()
  File "/usr/bin/emerge", line 3770, in emerge_main
    portage.global_updates(settings, trees, mtimedb["updates"])
AttributeError: 'module' object has no attribute 'global_updates'

2. Переставил из бинарников python 2.4 и 2.5 - не помогло
3. Из stage3 от 24 декабря рекурсивно перезаписал: /bin /lib /usr /sbin - вернулся к subj
4. Снова прошёл п.1
5. Удалил /var/cache/edb и /usr/portage/ (кроме /usr/portage/distfiles и /usr/portage/profiles ) не помогло:

emerge sync
Traceback (most recent call last):
  File "/usr/bin/emerge", line 4049, in <module>
    emerge_main()
  File "/usr/bin/emerge", line 3770, in emerge_main
    portage.global_updates(settings, trees, mtimedb["updates"])
AttributeError: 'module' object has no attribute 'global_updates'

Версия portage какая?

Версия portage какая?

___________________________________________
Working on Gentoo for iPAQ hx4700 and Openmoko Neo Freerunner :-)
Если у вас компьютер с Windows, есть два выхода: выбросить компьютер в форточку или выбросить форточки с компьютера

С какой версии начались

С какой версии начались проблемы, уже не выяснить. После того, как был проделан п.3, версия стала 2.1.6.4, после п.4 версия стала 2.1.1.

Может это как-то связано с правами доступа?

У меня вываливалось нечто похоже... В одном случае, когда /usr был смонтирован в режме ro, в другом - старая версия portage неверно обрабатывала симлинк /usr/portage/distfiles, в третьем - тоже какие-то проблемы с правами были на distfiles.

ls -ld /usr/portage/distfiles стоит проверить, возможно chown -R portage:portage сделать...

Нет, с правами доступа всё ок.

klark73 написал(а):
ls -ld /usr/portage/distfiles стоит проверить, возможно chown -R portage:portage сделать...

Не помогло :(

# ls -l /usr/portage/distfiles
lrwxrwxrwx 1 portage portage 27 Ноя 28  2007 /usr/portage/distfiles -> /hdb/gentoomirror/distfiles

# ls -ld /hdb/gentoomirror/distfiles
drwxrwsr-x 5 portage portage 278528 Янв 13 17:39 /hdb/gentoomirror/distfiles

Может это что подскажет! ;-)

# grep -B20 -A2 'cPickle.dump(self._cache_data, f, -1)' /usr/bin/emerge
# grep -B1 'cPickle' /usr/bin/emerge | head -n4

# locate pickle
/var/cache/edb/vdb_metadata.pickle
/var/cache/edb/vdb_blockers.pickle
/usr/lib32/openoffice/program/python-core-2.3.4/lib/test/pickletester.py
/usr/lib32/openoffice/program/python-core-2.3.4/lib/test/test_xpickle.py
/usr/lib32/openoffice/program/python-core-2.3.4/lib/test/test_pickletools.py
/usr/lib32/openoffice/program/python-core-2.3.4/lib/test/test_pickle.py
/usr/lib32/openoffice/program/python-core-2.3.4/lib/test/test_cpickle.py
/usr/lib32/openoffice/program/python-core-2.3.4/lib/pickletools.py
/usr/lib32/openoffice/program/python-core-2.3.4/lib/pickle.py
/usr/lib64/python2.5/test/pickletester.py
/usr/lib64/python2.5/test/test_xpickle.py
/usr/lib64/python2.5/test/pickletester.pyc
/usr/lib64/python2.5/test/pickletester.pyo
/usr/lib64/python2.5/test/test_pickletools.pyc
/usr/lib64/python2.5/test/test_pickletools.pyo
/usr/lib64/python2.5/test/test_pickletools.py
/usr/lib64/python2.5/test/test_pickle.py
/usr/lib64/python2.5/test/test_cpickle.pyc
/usr/lib64/python2.5/test/test_cpickle.pyo
/usr/lib64/python2.5/test/test_pickle.pyc
/usr/lib64/python2.5/test/test_pickle.pyo
/usr/lib64/python2.5/test/test_cpickle.py
/usr/lib64/python2.5/test/test_xpickle.pyc
/usr/lib64/python2.5/test/test_xpickle.pyo
/usr/lib64/python2.5/bsddb/test/test_pickle.py
/usr/lib64/python2.5/bsddb/test/test_pickle.pyc
/usr/lib64/python2.5/bsddb/test/test_pickle.pyo
/usr/lib64/python2.5/pickletools.py
/usr/lib64/python2.5/pickletools.pyc
/usr/lib64/python2.5/pickletools.pyo
/usr/lib64/python2.5/pickle.pyc
/usr/lib64/python2.5/pickle.pyo
/usr/lib64/python2.5/site-packages/Pyrex/Compiler/Lexicon.pickle
/usr/lib64/python2.5/pickle.py
/usr/include/boost/python/object/pickle_support.hpp

# locate cPickle
/usr/lib32/openoffice/program/python-core-2.3.4/lib/lib-dynload/cPickle.so
/usr/lib64/python2.5/lib-dynload/cPickle.so

# qfile /usr/lib64/python2.5/lib-dynload/cPickle.so
dev-lang/python (/usr/lib64/python2.5/lib-dynload/cPickle.so)

# qfile /usr/lib64/python2.5/pickle.py
dev-lang/python (/usr/lib64/python2.5/pickle.py)

# /usr/sbin/python-updater ???
# env-update && source /etc/profile ???

# ls -ld /var/cache/edb
drwxr-xr-x 3 root portage 200 Окт 24 04:37 /var/cache/edb

# ls -l /var/cache/edb
итого 2106
-rw-r--r-- 1 root root 3 Окт 24 04:26 counter
drwxrwsr-x 3 root portage 72 Сен 19 15:50 dep
-rw-rw-r-- 1 root portage 2370 Окт 24 04:26 mtimedb
-rw-r--r-- 1 root portage 48588 Окт 24 04:37 vdb_blockers.pickle
-rw-r--r-- 1 root portage 2093635 Окт 24 04:36 vdb_metadata.pickle

Ещё вариант лечения:
# cp -L /var/lib/portage/preserved_libs_registry ~/ && : > /var/lib/portage/preserved_libs_registry

Леонид, увы, я плохо

Леонид, увы, я плохо разбираюсь в Python и как это работает (впрочем, почитал кто такой pickle, но дало это мне мало).
Сейчас в системе установлен из бинарников portage-2.2, соответственно и:

# grep -B20 -A2 'cPickle.dump(self._cache_data, f, -1)' /usr/bin/emerge
# grep -B1 'cPickle' /usr/bin/emerge | head -n4
# grep -i "pickle" /usr/bin/emerge

ничего не дают...
Вот вывод "locate pickle":

# locate pickle
/hdb/var/cache/edb/vdb_metadata.pickle
/usr/lib/python2.4/test/pickletester.py
/usr/lib/python2.4/test/test_xpickle.py
/usr/lib/python2.4/test/pickletester.pyc
/usr/lib/python2.4/test/pickletester.pyo
/usr/lib/python2.4/test/test_pickletools.pyc
/usr/lib/python2.4/test/test_pickletools.pyo
/usr/lib/python2.4/test/test_pickletools.py
/usr/lib/python2.4/test/test_pickle.py
/usr/lib/python2.4/test/test_cpickle.pyc
/usr/lib/python2.4/test/test_cpickle.pyo
/usr/lib/python2.4/test/test_pickle.pyc
/usr/lib/python2.4/test/test_pickle.pyo
/usr/lib/python2.4/test/test_cpickle.py
/usr/lib/python2.4/test/test_xpickle.pyc
/usr/lib/python2.4/test/test_xpickle.pyo
/usr/lib/python2.4/bsddb/test/test_pickle.py
/usr/lib/python2.4/bsddb/test/test_pickle.pyc
/usr/lib/python2.4/bsddb/test/test_pickle.pyo
/usr/lib/python2.4/pickletools.py
/usr/lib/python2.4/pickletools.pyc
/usr/lib/python2.4/pickletools.pyo
/usr/lib/python2.4/pickle.pyc
/usr/lib/python2.4/pickle.pyo
/usr/lib/python2.4/pickle.py
/usr/lib/python2.5/test/pickletester.py
/usr/lib/python2.5/test/test_xpickle.py
/usr/lib/python2.5/test/pickletester.pyc
/usr/lib/python2.5/test/pickletester.pyo
/usr/lib/python2.5/test/test_pickletools.pyc
/usr/lib/python2.5/test/test_pickletools.pyo
/usr/lib/python2.5/test/test_pickletools.py
/usr/lib/python2.5/test/test_pickle.py
/usr/lib/python2.5/test/test_cpickle.pyc
/usr/lib/python2.5/test/test_cpickle.pyo
/usr/lib/python2.5/test/test_pickle.pyc
/usr/lib/python2.5/test/test_pickle.pyo
/usr/lib/python2.5/test/test_cpickle.py
/usr/lib/python2.5/test/test_xpickle.pyc
/usr/lib/python2.5/test/test_xpickle.pyo
/usr/lib/python2.5/bsddb/test/test_pickle.py
/usr/lib/python2.5/bsddb/test/test_pickle.pyc
/usr/lib/python2.5/bsddb/test/test_pickle.pyo
/usr/lib/python2.5/pickletools.py
/usr/lib/python2.5/pickletools.pyc
/usr/lib/python2.5/pickletools.pyo
/usr/lib/python2.5/pickle.pyc
/usr/lib/python2.5/pickle.pyo
/usr/lib/python2.5/site-packages/Pyrex/Compiler/Lexicon.pickle
/usr/lib/python2.5/pickle.py

Но сделать какой-либо вывод из этого не могу...

# locate cPickle
/usr/lib/python2.4/lib-dynload/cPickle.so
/usr/lib/python2.5/lib-dynload/cPickle.so

Запускать /usr/sbin/python-updater - ни малейшего смысла, т.к. он проверит пакеты и запустит "emerge xxx yyy zzz", ну а это subj

ls -ld /var/cache/edb
drwxr-xr-x 3 root portage 4096 Янв 13 18:04 /var/cache/edb
ls -l /var/cache/edb
итого 21008
drwxrwsr-x 3 root portage     4096 Янв 12 22:57 dep
-rw-rw-r-- 1 root portage     1074 Янв 13 17:31 mtimedb
-rw-r--r-- 1 root portage 21472259 Янв 13 18:04 vdb_metadata.pickle
Цитата:
Ещё вариант лечения:
# cp -L /var/lib/portage/preserved_libs_registry ~/ && : > /var/lib/portage/preserved_libs_registry

У меня такого нет: /var/lib/portage/preserved_libs_registry

ls -l /var/lib/portage/
итого 96
-rw-rw---- 1 root    portage 93384 Янв  2 14:20 config
-rw-rw-rw- 1 portage portage     0 Янв 13 18:16 world

Как будто я знаю Phyton! =))

Даже с пёрлом почти не знаком, тока с PHP! =))) У меня совпали номера строк по трассировке из исходного поста на 100% - это соотвествует sys-apps/portage-2.1.4.5. Я предложил вывод потому что он может навести Вас на мысль:

# grep -B20 -A2 'cPickle.dump(self._cache_data, f, -1)' /usr/bin/emerge
        def flush(self):
                """If the current user has permission and the internal blocker cache
                been updated, save it to disk and mark it unmodified.  This is called
                by emerge after it has proccessed blockers for all installed packages.
                Currently, the cache is only written if the user has superuser
                privileges (since that's required to obtain a lock), but all users
                have read access and benefit from faster blocker lookups (as long as
                the entire cache is still valid).  The cache is stored as a pickled
                dict object with the following format:

                {
                        version : "1",
                        "blockers" : {cpv1:(counter,(atom1, atom2...)), cpv2...},
                        "virtuals" : vardb.settings.getvirtuals()
                }
                """
                if self._modified and \
                        secpass >= 2:
                        try:
                                f = portage_util.atomic_ofstream(self._cache_filename)
                                cPickle.dump(self._cache_data, f, -1)
                                f.close()
                                portage_util.apply_secpass_permissions(

Особенно интересен комментарий сверху. Я думал он и наведёт Вас на мысль. Теперь о сути исходной проблемы... В первом листинге ниже - как этот пиклер подключается:

# grep -B1 'cPickle' /usr/bin/emerge | head -n5
try:
        import cPickle
except ImportError:
        import pickle as cPickle
--
# locate pickle|grep -E '/pickle\.py$'
/usr/lib32/openoffice/program/python-core-2.3.4/lib/pickle.py
/usr/lib64/python2.5/pickle.py

# head /usr/lib64/python2.5/pickle.py
"""Create portable serialized representations of Python objects.

See module cPickle for a (much) faster implementation.
See module copy_reg for a mechanism for registering custom picklers.
See module pickletools source for extensive comments.

Теперь всё становится совсем понятным. Особенно, если сравнить различающийся между нами вывод ls -l /var/cache/edb/ ;-) Задача пиклера - управлять сериализованным словарём, в данном случае - в этой директории. Проблема видимо как раз таки с правами (владельцем) на директорию / файлы в ней. У Вас почему-то два питона. Попробуйте забэкапить и прибить "ускоренный" пиклер - т.е. вот эти два файла: /usr/lib/python2.4/lib-dynload/cPickle.so и /usr/lib/python2.5/lib-dynload/cPickle.so, проверить по симлинкам/окружению, который из питонов активен. Далее, я так понял, можно очистить кэш /var/cache/edb/.

Ещё заметил, что у меня владельцем /var/lib/portage/world является root. И ещё замечу, что в моём варианте пиклер не содержит строки вида raise PicklingError("Can't pickle %r attribute lookup..."), следовательно, раз файл относится к питону 2.5, значит у Вас отрабатывает питоновский пиклер от версии 2.4. Возможно ещё решение восстановления питона из бинарного пакета. Надеюсь, это поможит обуздать взбесившийся портеж без переустановки!.. =)))

Выше я привёл не вариант лечения, а один из вариантов воспроизведения похожей ошибки, извиняюсь! =)))

Леонид, спасибо за советы. Но

Леонид, спасибо за советы. Но по-прежнему не работает. Опробовано следующее (при каждой попытке выполнялось rm -rdf /var/cache/edb/*):
- Удаление /usr/lib/python2.4/lib-dynload/cPickle.so
- Удаление /usr/lib/python2.5/lib-dynload/cPickle.so
- Замена файла /usr/lib/python2.4/lib-dynload/cPickle.so файлом /usr/lib/python2.4/pickle.py
- Замена файла /usr/lib/python2.5/lib-dynload/cPickle.so файлом /usr/lib/python2.5/pickle.py
- Переключение с активного Python 2.5 на Python 2.4
- Установка Python 2.5 из бинарника (впрочем, я уже перезаписывал каталоги /bin /lib /usr /sbin из декабрьского stage3)
- Удаление /usr/portage полностью

Граждане, подкиньте ещё идей, пожалуйста!

Если поставишь 2.2, то я

Если поставишь 2.2, то я попробую твою ошибку отследить и осмыслить.
А то 2.1 сильно отличается (-:Е

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

Поставил

Поставил portage-2.2_rc22.

rm -rdf /var/cache/edb/*; emerge -pv 123


Performing Global Updates: /usr/portage/profiles/updates/1Q-2004
(Could take a couple of minutes if you have a lot of binary packages.)
...
... Пропущено Hrundix-ом ...
...
Performing Global Updates: /usr/portage/profiles/updates/1Q-2009
(Could take a couple of minutes if you have a lot of binary packages.)
  .='update pass'  *='binary update'  #='/var/db update'  @='/var/db move'
  s='/var/db SLOT move'  %='binary move'  S='binary SLOT move'
  p='update /etc/portage/package.*'
...
p


These are the packages that would be merged, in order:

Calculating dependencies
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 15181, in emerge_main
    myopts, myaction, myfiles, spinner)
  File "/usr/lib/portage/pym/_emerge/__init__.py", line 13961, in action_build
    mydepgraph = depgraph(settings, trees, myopts, myparams, spinner)
  File "/usr/lib/portage/pym/_emerge/__init__.py", line 4389, in __init__
    pkg_cache=self._pkg_cache)
  File "/usr/lib/portage/pym/_emerge/__init__.py", line 1090, in __init__
    root_config=root_config, type_name="installed")
  File "/usr/lib/portage/pym/_emerge/__init__.py", line 1443, in __init__
    self.slot_atom = portage.dep.Atom("%s:%s" % (self.cp, self.slot))
  File "/usr/lib/portage/pym/portage/dep.py", line 495, in __call__
    instance = super(_AtomCache, cls).__call__(s)
  File "/usr/lib/portage/pym/portage/dep.py", line 532, in __init__
    raise InvalidAtom(s)
portage.exception.InvalidAtom: sys-devel/libperl:1 ����}@�������}@����}@�������}@����}@�������}�?����}@�������}@����}@�������}@����}@�������}@����}@�������}@����}@�������}@����}@���
����}@����}@�������}@����}@������5}�?����}@�������}@����}@�������}@����}@�������}@����}@�������}@����}@�������}@����}@�������}@���
�}@�������}@����}@�������}@����}@�������}@����}@�������}@����}@�������}@����}�?�������}@����}@�������}@����}@�������}@����}@������
�}@����}@�������}@����}@�������}@����}@�������}@����}@�������}@����}@�������}@����}@�������}@����}@�������}@����}@�������}@����}@�
������}@����}@�������}@���I5�?������.$�?�����?������e!�?����A�?�������H�?����}@�������}@����}@�������k�?����}@�������}@����}@�����
��}@����}@�������}@����}@�������}@����}@�������}@����}@�������}@����}@�������V�?���>�?�������R�?���(2�?�������K�?����*�?������Q(�?
���_@�������}@����}@�������}@����}�?�������}@����}@�������}@����}@�������}@����}@�������}@����{�?������Q�?���V`�?�������C�?���=Q�?
�������C�?���)V�?������Y@�?���I�?������qF�?����H�?������e�?����}@�������}@

Ага... Постараюсь не забыть и

Ага... Постараюсь не забыть и расковырять. Пни меня на всякий случай в Яббере, когда буду в сети, хорошо?

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

Да я тебе, яхонтовый мой,

Да я тебе, яхонтовый мой, хоть информер по электрической почте заведу, чтобы каждые 5 минут пинал. Только расковыряй :)

Calculating dependencies... :-(

Ошибка, я смотрю возникает, в разных питонах и portage, но на одном и том же месте - при построении кэша зависимостей. Я так думаю, с источником дерева portage вряд ли проблема, значит остаётся железо (скорее всего глючит память). Едва ли накануне на этом сервере переставлялся glibc?

Память... маловероятно. Эта

Память... маловероятно. Эта машина - мой домашне-рабочий сервер. На нём крутятся несколько активно посещаемых вебсайтов (apache, php, mysql), 1-2-3-4 раза в сутки в wmware включается WinXP, rtorrent, bind, nfs, samba. Всё это и сейчас работает как часики!
Последняя перезагрузка была в октябре, когда менял UPS, следующая 12 января, когда пытался бороться с проблемой.
Маловероятно, что память... glibc не переустанавливал.

Запости где нить что

Запости где нить что содержится в /var/db/pkg/sys-devel/libperl-*/SLOT
Похоже там что то битое

___________________________________________
Working on Gentoo for iPAQ hx4700 and Openmoko Neo Freerunner :-)
Если у вас компьютер с Windows, есть два выхода: выбросить компьютер в форточку или выбросить форточки с компьютера

Кстати, да. Если

Кстати, да. Если присмотреться, то 2.2 вываливает свою внутреннуюю ошибку с жалобой на invalid atom в районе sys-devel/libperl. Только я не уверен, что правильно себе представляю содержание /var/db/pkg... emerge --metadata не его перестраивает?

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

Не еон ее не трогает как

Не еон ее не трогает как раз.
Это то что установлено на системе и описание как это установлено

___________________________________________
Working on Gentoo for iPAQ hx4700 and Openmoko Neo Freerunner :-)
Если у вас компьютер с Windows, есть два выхода: выбросить компьютер в форточку или выбросить форточки с компьютера

И всё же...

В операции участвует дерево портежей, сам портеж, питон, ну может ещё в какой-то степени glibc/ядро. Если контрольная сумма снэпшота дерева портежей после скачивания совпала, конечно мог tar/bzip сглючить. ИМХО, можно проверить без перезагрузки, создав небольшой файл (dd), смонтировав его через mount --loop, далее по хендбуку развернуть в новый раздел стейдж и снэпшот, сделать чрут и там уже позапускать emerge. Только чтобы не было привязки к glibc родительской системы, лучше экспериментировать со stage1. Если проблем не будет, тогда дело действительно не в памяти.

portage

Я извиняюсь, конечно, но у меня такая (или почти такая же) проблемка была после обновления glibc с 2.8 на 2.9.

Ну, я сравнивал 2.8 и 2.9,

Ну, я сравнивал 2.8 и 2.9, там есть изменения в реализации malloc()/mmap(). Тут уже обсуждалось, но на glibc-2.9, ИМХО переезжать рано, там ещё много всяких глюков типа этого могут найти...

alexxy написал(а):Запости где

alexxy написал(а):
Запости где нить что содержится в /var/db/pkg/sys-devel/libperl-*/SLOT
Похоже там что то битое

Да, Лёша, это оно.

Проблема деёствительно оказалать в файле /var/db/pkg/sys-devel/libperl-5.8.8-r1/SLOT
Собственно:

cat /var/db/pkg/sys-devel/libperl-5.8.8-r1/SLOT
1
����}@�������}@����}@�������}@����}@�������}�?����}@�������}@����}@�������}@����}@�������}@����}@�������}@��
��}@�������}@����}@�������}@����}@�������}@����}@������5}�?����}@�������}@����}@�������}@����}@�������}@����
}@�������}@����}@�������}@����}@�������}@����}@�������}@����}@�������}@����}@�������}@����}@�������}@����}@�
������}@����}�?�������}@����}@�������}@����}@�������}@����}@�������}@����}@�������}@����}@�������}@����}@���
����}@����}@�������}@����}@�������}@����}@�������}@����}@�������}@����}@�������}@����}@�������}@����}@������
�}@���I5�?������.$�?�����?������e!�?����A�?�������H�?����}@�������}@����}@�������k�?����}@�������}@����}@���
����}@����}@�������}@����}@�������}@����}@�������}@����}@�������}@����}@�������V�?���>�?�������R�?���(2�?���
����K�?����*�?������Q(�?���_@�������}@����}@�������}@����}�?�������}@����}@�������}@����}@�������}@����}@���
����}@����{�?������Q�?���V`�?�������C�?���=Q�?�������C�?���)V�?������Y@�?���I�?������qF�?����H�?������e�?���
�}@�������}@

Ну и удалив из файла лишнее - "...����}@�������}@����}@�������}..." - всё заработало.

Леша, Леонид, Коля, огромное и человеческое вам спасибо! :)

P.S. Конечно, любопытно, с чего бы этот "/var/db/pkg/sys-devel/libperl-5.8.8-r1/SLOT" так перекорёжило, ну да это уже не принципиально. Фиг с ним. SOLVED :)

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".