LINUX.ORG.RU

[LFS] Не ставится Paco в конце главы 5

 


0

0

Здравствуйте. Пытаюсь собрать LFS и натыкаюсь на такую вот проблему: собственно все, что описано в книге вплоть до главы 5 включительно, замечательно устанавливается в соответствии с инструкциями. Но вот с установкой пакетного менеджера Paco в конце этой главы начинаются проблемы - на ровном месте выдает ошибку компиляции. Вот копипаста ошибки:

lfs@roman-desktop:/mnt/lfs/sources/paco-2.0.6$ make

make all-recursive

make[1]: Entering directory `/mnt/lfs/sources/paco-2.0.6' Making all in lib

make[2]: Entering directory `/mnt/lfs/sources/paco-2.0.6/lib' Making all in paco

make[3]: Entering directory `/mnt/lfs/sources/paco-2.0.6/lib/paco' g++ -DHAVE_CONFIG_H -I. -I../.. -W -I../.. -DPACORC='"/tools/etc/pacorc"' -ansi -pedantic -Wall -Wshadow -fno-operator-names -g -O2 -MT libpaco_a-BaseConfig.o -MD -MP -MF .deps/libpaco_a-BaseConfig.Tpo -c -o libpaco_a-BaseConfig.o `test -f 'BaseConfig.cc' || echo './'`BaseConfig.cc

mv -f .deps/libpaco_a-BaseConfig.Tpo .deps/libpaco_a-BaseConfig.Po g++ -DHAVE_CONFIG_H -I. -I../.. -W -I../.. -DPACORC='"/tools/etc/pacorc"' -ansi -pedantic -Wall -Wshadow -fno-operator-names -g -O2 -MT libpaco_a-BasePkg.o -MD -MP -MF .deps/libpaco_a-BasePkg.Tpo -c -o libpaco_a-BasePkg.o `test -f 'BasePkg.cc' || echo './'`BasePkg.cc

BasePkg.cc: In static member function 'static bool Paco::BasePkg::updateLog(const std::string&)': BasePkg.cc:204: error: invalid conversion from 'const char*' to 'char*' make[3]: *** [libpaco_a-BasePkg.o] Error 1 make[3]: Leaving directory `/mnt/lfs/sources/paco-2.0.6/lib/paco' make[2]: *** [all-recursive] Error 1 make[2]: Leaving directory `/mnt/lfs/sources/paco-2.0.6/lib' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/mnt/lfs/sources/paco-2.0.6' make: *** [all] Error 2

Боюсь, я не обладаю знаниями, чтобы изучить исходники программы и их поправить( Кроме того, подобная ошибка наблюдается и с Paco 2.0.6, и с Paco 2.0.5. И даже более того, самое для меня странное - это то, что если просто зайти под рутом в /mnt/lfs/sources/paco-2.0.6 и ввести ./configure --prefix=/tools --disable-gpaco && make && make install, то все собирается идеально! Правда, в этом случае ldd показывает, что бинарник paco оказывается слинкован с библиотеками в корне, а не в /tools. Может быть, я упускаю какой-то момент? Что-то неправильно делаю?

Хост - Ubuntu 9.04, LFS - 20090611, paco - 2.0.6

Чё-то как-то я вообще не могу найти там упоминания о paco... Можно конкретно указать раздел/главу/или как оно там называется? В "6.3 Package Management" как всегда только общие понятия.

Cancellor ★★★★☆
()
Ответ на: комментарий от Cancellor

Там вообще не упоминается Paco ;) К сожалению, он упоминается лишь в хинтах, своем сайте и обсуждении в мэйллистах. Однако, для целей сборки, Paco, как средство отслеживания устанавливаемых программ, весьма и весьма пригодилось бы. Я осознаю, что здесь я, вообще говоря, не совсем придерживаюсь LFS, но какой-никакой пакетный менеджер все же хотелось бы иметь. Ставлю я его до chroot'а в 6ой главе по той причине, что хочу еще и отследить установку всех программ этой главы. Использую вот этот совет: http://sourceforge.net/mailarchive/forum.php?thread_name=4623209C00001808%40m...

kenderes
() автор топика
Ответ на: комментарий от kenderes

Ок, я попробовал пойти другим путем: Сделал все шаги вплоть до 6.7 (т.е. chroot'ился в /mnt/lfs), затем попробовал опять же поставить paco с помощью ./configure --prefix=/tools --disable-gpaco && make && make install. И получаю всю ту же ошибку: BasePkg.cc: In static member function 'static bool Paco::BasePkg::updateLog(const std::string&)': BasePkg.cc:204: error: invalid conversion from 'const char*' to 'char*' make[3]: *** [libpaco_a-BasePkg.o] Error 1 make[3]: Leaving directory `/sources/paco-2.0.6/lib/paco' make[2]: *** [all-recursive] Error 1 make[2]: Leaving directory `/sources/paco-2.0.6/lib' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/sources/paco-2.0.6' make: *** [all] Error 2

kenderes
() автор топика
Ответ на: комментарий от kenderes

А версия gcc какая? Та что в книге? Я в свое время собирал из кноппикса, собиралось нормально. Но на стадии сборки glibc под paco забил, слишком долго и муторно было.

tensai_cirno ★★★★★
()
Ответ на: комментарий от tensai_cirno

Я, в принципе, нашел-таки проблему. Она как раз и заключается в версии gcc - дело в том, что gcc-4.4.0 из нестабильной версии lfs принципиально не компилирует подобный код: #include <cstring>

const char* str1; char* str2 = strchr(str1, 'a');

Причем, это, вроде как, фича, а не баг: подобный вариант кода некорректен в соответствии со стандартами. Увы и ах, paco написан именно с использованием подобных вещей и с development lfs посему пока что несовместим в принципе.

kenderes
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.