Помогите с gcc
Мужики выручите еще разочек. Хочу обновить gcc. был 4.1.2 ставлю 4.3.2. сдесь на форуме вычитал что при таком обновлении достаточно будет сделать emerge gcc. сделал.
но в конце вылезло вот такое сообщение.
>>> Installing sys-devel/gcc-4.3.2-r1
!!! Invalid PORTDIR_OVERLAY (not a dir): '/usr/local/portage/layman/kde-crazy'
* gcc-config: Could not get portage CHOST!
* gcc-config: You should verify that CHOST is set in one of these places:
* gcc-config: - //etc/make.conf
* gcc-config: - active environment
* If you have issues with packages unable to locate libstdc++.la,
* then try running 'fix_libtool_files.sh' on the old gcc versions.
!!! Invalid PORTDIR_OVERLAY (not a dir): '/usr/local/portage/layman/kde-crazy'
>>> Recording sys-devel/gcc in "world" favorites file...
* Messages for package sys-devel/gcc-4.3.2-r1:
* If you have issues with packages unable to locate libstdc++.la,
* then try running 'fix_libtool_files.sh' on the old gcc versions.
>>> Auto-cleaning packages...
>>> No outdated packages were found on your system.
* Regenerating GNU info directory index...
* Processed 82 info files.
* IMPORTANT: 1 config files in '/etc' need updating.
* See the CONFIGURATION FILES section of the emerge
* man page to learn how to update config files.
потом сделал fix_libtool_files.sh 4.1.2
AMD-64 ~ # fix_libtool_files.sh 4.1.2
* Scanning libtool files for hardcoded gcc library paths...
* [1/10] Scanning /lib ...
* [2/10] Scanning /usr/lib ...
* [3/10] Scanning /lib32 ...
* [4/10] Scanning /lib64 ...
* [5/10] Scanning /usr/lib32 ...
* [6/10] Scanning /usr/lib64 ...
* [7/10] Scanning /usr/local/lib ...
* [8/10] Scanning /usr/local/lib32 ...
* [9/10] Scanning /usr/local/lib64 ...
* [10/10] Scanning /usr/x86_64-pc-linux-gnu/lib ...
AMD-64 ~ # gcc-config -l
* gcc-config: Could not get portage CHOST!
* gcc-config: You should verify that CHOST is set in one of these places:
* gcc-config: - //etc/make.conf
* gcc-config: - active environment
что-то мне подсказывает что он не будет работать!!!
- Для комментирования войдите или зарегистрируйтесь
cat /etc/make.conf;emerge
cat /etc/make.conf;emerge --info будет совсем не лишним ;)
AMD-64 ~ # cat
AMD-64 ~ # cat /etc/make.conf
CFLAGS="-march=nocona -O2 -pipe"
CXXFLAGS="${CFLAGS}"
CHOST="x86_64-pc-linux-gnu"
USE="mmx sse sse2 build symlink"
LINGUAS="ru"
GENTOO_MIRRORS="http://mirror.yandex.ru/"
ACCEPT_KEYWORDS="~amd64"
VIDEO_CARDS="fglrx fbdev fbcondecor"
INPUT_DEVICES="keybord mouse"
source /usr/local/portage/layman/make.conf
#FEATURES="metadata-transfer"
PORTAGE_ECLASS_WARNING_ENABLE="0"
#PORTDIR_OVERLAY="/usr/local/portage"
AMD-64 ~ # emerge --info
Portage 2.2_rc20 (default/linux/amd64/2008.0, gcc-4.1.2, glibc-2.9_p20081201-r0, 2.6.28-gentoo x86_64)
=================================================================
System uname: Linux-2.6.28-gentoo-x86_64-AMD_Athlon-tm-_64_Processor_3000+-with-gentoo-1.12.11.1
Timestamp of tree: Sun, 28 Dec 2008 08:05:01 +0000
app-shells/bash: 3.2_p17-r1
dev-lang/python: 2.4.4-r13
dev-python/pycrypto: 2.0.1-r6
sys-apps/baselayout: 1.12.11.1
sys-apps/sandbox: 1.2.18.1-r2
sys-devel/autoconf: 2.61-r1
sys-devel/automake: 1.9.6-r2, 1.10.1
sys-devel/binutils: 2.18-r1
sys-devel/gcc-config: 1.4.0-r4
sys-devel/libtool: 1.5.24
virtual/os-headers: 2.6.23-r3
ACCEPT_KEYWORDS="amd64 ~amd64"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=nocona -O2 -pipe"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc"
CONFIG_PROTECT_MASK="/etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/revdep-rebuild /etc/terminfo /etc/udev/rules.d"
CXXFLAGS="-march=nocona -O2 -pipe"
DISTDIR="/usr/portage/distfiles"
FEATURES="distlocks fixpackages parallel-fetch preserve-libs protect-owned sandbox sfperms strict unmerge-orphans userfetch"
GENTOO_MIRRORS="http://mirror.yandex.ru/"
LDFLAGS="-Wl,-O1"
LINGUAS="ru"
PKGDIR="/usr/portage/packages"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/usr/local/portage/layman/kde-testing"
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="acl amd64 berkdb build bzip2 cli cracklib crypt cups dri fortran gdbm gpm iconv ipv6 isdnlog midi mmx mudflap multilib ncurses nls nptl nptlonly openmp pam pcre perl pppd python readline reflection session spl sse sse2 ssl symlink sysfs tcpd unicode xorg zlib" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" ELIBC="glibc" INPUT_DEVICES="keybord mouse" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="ru" USERLAND="GNU" VIDEO_CARDS="fglrx fbdev fbcondecor"
Unset: CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, FFLAGS, INSTALL_MASK, LANG, LC_ALL, MAKEOPTS, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
Проблема в CHOST
1. http://www.gentoo.org/doc/ru/gcc-upgrading.xml
2. emerge gcc-config
3. env-update && source /etc/profile
4. gcc-config -l; gcc-config ...
5. env-update && source /etc/profile
Вот эту строчку:
source /usr/local/portage/layman/make.conf
переместите в самый конец за:
#PORTDIR_OVERLAY="/usr/local/portage"
у вас сейчас в /usr/local/portage/layman/make.conf прописано:
PORTDIR_OVERLAY="/usr/local/portage/layman/kde-crazy"
или же:
PORTDIR_OVERLAY="/usr/local/portage/layman/kde-testing" ?
я не понял, но вот это сообщение:
!!! Invalid PORTDIR_OVERLAY (not a dir): '/usr/local/portage/layman/kde-crazy'
видимо из-за этой неразберихи
Вообще, когда вы накладываете один оверлей, всё что в нём есть,
виртуально переписывает содержимое дерева портежей. А если два и больше -
тем более, вплоть до конфликтов. Поэтому с оверлеями нужно аккуратней работать.
Создавая собственный оверлей и внутри - только симлинки на необходимые директории.
Хотя об этом вообще нигде ничего не написано... :(
Кажись допёрло (хотя могу и ошибаться), но судя по соседней ветке вот это:
/usr/local/portage/layman/kde-crazy - скорее всего хвосты от предыдущего оверлея.
Т.е. всё установленное из него стоило сначала прибить, только потом удалять тот
оверлей и добавлять новый. Но могу и ошибаться...
указано
указано PORTDIR_OVERLAY="/usr/local/portage/layman/kde-testing"
****
я чет не понял. Чего мне сделать то надо??? у меня
AMD-64 ~ # gcc-config -l
* gcc-config: Could not get portage CHOST!
* gcc-config: You should verify that CHOST is set in one of these places:
* gcc-config: - //etc/make.conf
* gcc-config: - active environment
ни одного профиля не показывает!
после пересборки gcc нужно
после пересборки gcc нужно переустановить gcc-config.
чтобы получить выигрыш от нового компилятора для каждого бинарника, нужно обновлять примерно так:
emerge -1v gcc && gcc-config x86_64-pc-linux-gnu-4.3.2 && emerge -1v linux-headers glibc binutils gcc-config && emerge -1vb linux-headers glibc binutils gcc-config gcc && emerge -bkev system && emerge -bkev world
предварительно нужно очистить или переместить каталог с бинарниками PKGDIR=/path/bin-packages/core2
я пересобрал gcc сейчас
я пересобрал gcc сейчас пересобрал gcc-config
терь когда пишу gcc-config -l у меня какае-то ошибка
* gcc-config: Could not get portage CHOST!
* gcc-config: You should verify that CHOST is set in one of these places:
* gcc-config: - //etc/make.conf
* gcc-config: - active environment
Ежели не показывает, значит
Ежели не показывает, значит симлинки битые. Ну, или gcc-config кривой. Скорее всего - предыдущая установка gcc до конца не прошла. Т.е. после env-update && source /etc/profile не работает gcc-config? Если так, то два варианта: либо симлинки делать ручками, либо восстановить gcc из бинаря.
а на что симлинк??
а на что симлинк??
ребят я в линух недавно вот сижу разбираюсь...
Внимательно изучите
Внимательно изучите содержимое файлов:
ls /etc/env.d/*gcc*
При необходимости, нужно исправить, подчистить хвосты.
Удивляюсь, но уже сколько раз замечал, что при обновлении хвосты там остаются.
Убедитесь, что правильно выбрана текущая версия gcc (CURRENT=)
и симлинк в указанной директории не битый.
После этого сделайте:
env-update
source /etc/profile
И ТОЛЬКО ПОСЛЕ ЭТОГО:
gcc-config -l
Ещё могут проблемы симлинков, например, всвязи с установкой
каких-нть distcc, ccache -- ничего такого не ставилось?
На примере gcc-4.1.2 для x86_64:
(вам нужно сначала вернуть на место именно предыдущий рабочий gcc)!!!
# cd /etc/env.d/gcc
# ls -la
config-x86_64-pc-linux-gnu
.NATIVE -> x86_64-pc-linux-gnu-4.1.2
x86_64-pc-linux-gnu-4.1.2
ЗДЕСЬ .NATIVE - это симлинк.
т.е. есличо:
# ln -sf x86_64-pc-linux-gnu-4.1.2 .NATIVE
# cat config-x86_64-pc-linux-gnu
CURRENT=x86_64-pc-linux-gnu-4.1.2
# cat x86_64-pc-linux-gnu-4.1.2
LDPATH="/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2:/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/32"
MANPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.1.2/man"
INFOPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.1.2/info"
STDCXX_INCDIR="g++-v4"
GCC_PATH="/usr/x86_64-pc-linux-gnu/gcc-bin/4.1.2"
# cat 05gcc-x86_64-pc-linux-gnu
MANPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.1.2/man"
INFOPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.1.2/info"
LDPATH="/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2:/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/32"
PATH="/usr/x86_64-pc-linux-gnu/gcc-bin/4.1.2"
ROOTPATH="/usr/x86_64-pc-linux-gnu/gcc-bin/4.1.2"
GCC_SPECS=""
В случае если чего-то нет, или не так, создаёте в точности такие файлы,
в точности с таким же содержимым. Меняете в тексте и названиях 4.1.2 на свою
предыдущую работающую версию gcc. Проверьте и это:
# ls -l /usr/x86_64-pc-linux-gnu/gcc-bin/4.1.2
Тут должна быть целая туча симлинков, не битых, разумеется...
и вот только теперь:
env-update && source /etc/profile
ЭТО ОБЯЗАТЕЛЬНЫЙ ШАГ!
После этого gcc-config -l должен показать:
# gcc-config -l
[1] x86_64-pc-linux-gnu-4.1.2 *
Теперь можно и переустановить gcc.
Если не выходит, попробуйте восстановить обязательный системный пакет gcc из бинаря.
Для этого смотрите FAQ на сайте...
+1 за совет о симлинках в
to klark73
+1 за совет о симлинках в своем оверлее.
видел такое, но как то в голову не приходило так делать самому...
Я бы закомментировал вот это
Я бы закомментировал вот это для начала:
source /usr/local/portage/layman/make.conf
Раз он на оверлей ругается
Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.
Старый компилятор работает!
Старый компилятор работает! он спокойно собирает новые пакеты итд. в каталоге /etc/env.d/gcc у меня нет файликов 05gcc-x86_64-pc-linux-gnu и config-x86_64-pc-linux-gnu . 05gcc-x86_64-pc-linux-gnu у меня тут ->/etc/env.d/ config-x86_64-pc-linux-gnu ненашел.
не смотря на это создал их в каталоге gcc потом env-update && source /etc/profile . один фиг gcc-config -l с ошибкой
строку source /usr/local/portage/layman/make.conf из make.conf удалил
Сдесь сейчас есть кто??? я могу открыть доступ по ssh чтоб кто-ньть посмотрел!!
Да валяй! =)))
"Пишите письма!"
---
UPD: спустя ночь: не, теперь тока 31-го смогу подключиться.
ИМХО, неправильная сборка нового GCC сломала частичку старого.
Ну, те самые симлинки. Нужно перечитать внимательней, что написано выше.
Я извиняюсь, раньше не заметил! ;-)
Всё оказалось элементарно!..
У вас стоит флаг "build".
Уберите его!!!
И больше никогда так не делайте! ;-)
Это даже хуже, чем ./conigure ;-)
Теперь усилия по восстановлению системы будут соизмеримы с установкой из стейджа с нуля. По той простой причине, что флаг build нужен только для внутреннего использования при сборке стейджа. Сомневаюсь, что такой системой теперь можно будет что-либо собрать. Придётся как минимум восстанавливать из бинарников весь тульчейн, да и некоторые пакеты, типа patch, использующие флаг build...
Панику не наводи. Очень
Панику не наводи.
Очень сомнительно, что в этом виноват этот флаг.
В крайнем случае можно поднять тулчейн с бутстрапа, но никак уж не с развертыванием образа.
А флаг действительно нужно убрать, да.
Не грусти, товарищ! Всё хорошо, beautiful good!
Да какая паника!? =))) Если
Да какая паника!? =))) Если бы я полез по ssh, восстановил бы симлинки в первую очередь. Но там вижу ещё проблемный glibc у него О_о. Как минимум его на один шаг нужно даунгрейдить, ИМХО. А гцц наверное и ручками получится восстановить...
этот флаг там был ссамого
этот флаг там был ссамого начала!! я его не добавлял! а что его убирать надо я не знал!