Gentoo проблемы и решения
Материал из Belgorod Linux User Group - Белгород.
Дистрибутиво-зависимые проблемы с которыми сталкнулись, проблемы с пакетным менеджером. База знаний.
Содержание |
[править] PYTHON
[править] Пропал python
При обновлении python старой системы, emerge решил обновить с 2.4 до 3.1, но не смог.
Emerge в результате снес старый python и ни оставил не одного.
Что можно сделать:
- На другой машине, где есть python (допустим 2.5) делаем:
quickpkg =python-2.5.2-r7
В результате получаем бинарный пакет уже собранного python.
- Переносим его на целевую систему и разворачиваем там:
tar -xjf /usr/portage/packages/All/python-2.5.2-r7.tbz2 -C /
- Теперь ставим обязательно python 2.6 там же:
emerge -pv =python-2.6*
- Выбираем его:
eselect python list
Available python interpreters: [1] python2.4 [2] python2.5 [3] python2.6
eselect python 3
тут предварительно возможно понадобится обновить portage
emerge portage
[править] Обновление python
[править] Обновление с 2.4/2.5 до 2.6/3.1
Уже доступен 3.1, но его пока нельзя использовать, так говорит сам emerge. По этому ставим 2.6:
emerge -pv python emerge -1 dev-lang/python:2.6 eselect python list eselect python set <2.6> eselect profile list eselect profile set 1 emerge -1 portage python-updater -i emerge -C dev-lang/python:2.4 emerge -C dev-lang/python:2.5
А теперь можно и 3.1
emerge -1 python
пока без выбора его eselect -ом
[править] Python не хочет ставиться
[править] EAPI
Невозможно обновить portage и / или python:
emerge -pv portage These are the packages that would be merged, in order: Calculating dependencies / !!! All ebuilds that could satisfy ">=dev-lang/python-2.5" have been masked. !!! One of the following masked packages is required to complete your request: - dev-lang/python-2.6.4 (masked by: required EAPI -2, supported EAPI 0) - dev-lang/python-3.1.1-r1 (masked by: required EAPI -2, supported EAPI 0) - dev-lang/python-2.5.4-r4 (masked by: required EAPI -1, supported EAPI 0) - dev-lang/python-2.5.4-r3 (masked by: required EAPI -1, supported EAPI 0)
Причина:
Старый API у старого portage. Надо его обновить. Но чтобы обновить - он тянет питон, который требует уже новый API.
Решение:
Ставим новый portage без зависимости:
emerge -1 --nodeps portage
А далее идем к пункту "Обновление python"
[править] GCC
[править] sandbox
Пишет:
cannot run C compiled programs
Не помогает даже:
FEATURES=-sandbox emerge sandbox
Возможно не включена эмуляция IA32:
http://www.gentoo.org/doc/en/gentoo-amd64-faq.xml#kernel
Executable file formats / Emulations ---> [*] IA32 Emulation
[править] gcc-config
gcc-config -l
дает:
/usr/bin/gcc-config: line 9: /etc/init.d/functions.sh: Нет такого файла или каталога
Необходимо обновить openrc:
emerge -C sysvinit emerge -1 openrc dispatch-conf
[править] distcc
gcc иногда не может собраться с distcc. Тогда его надо обновить отдельно и перезапустить distcc
FEATURES="-distcc" emerge -1 gcc gcc-config -l source /etc/profile /etc/init.d/distccd restart
Кроме gcc может еще не собираться glibc, так что всю систему надежнее обновлять без distcc, а затем весь мир:
FEATURES="-distcc" emerge -vuDN system emerge -vuDN world
[править] NFS
[править] v3
mount дает:
mount.nfs: an incorrect mount option was specified
dmesg:
NFS: bad mount option value specified: vers=4
Надо добавить vers=3 в опции монтирования, в fstab это будет так:
portage.gentoo.ivt.lan:/usr/portage /usr/portage nfs rw,vers=3 0 0
[править] udev
[править] udev >= 150
После обновления udev до 150 пропал /dev/hda, невозможно подмонтировать диск и следовательно обновить ядро.
Откатываемся до старого udev:
emerge =udev-145-r3
Перезагружаемся. Со старым udev диск должен появиться.
В ядре убираем флаги CONFIG_SYSFS_DEPRECATED так:
# CONFIG_SYSFS_DEPRECATED is not set # CONFIG_SYSFS_DEPRECATED_V2 is not set
Пересобираем ядро. Обновляем udev обратно. Перезагружаемся.
[править] Прочее
Не забываем делать после обновления
revdev-rebuild dispatch-conf

