Installer Linuxtreads [problème de glibc] - Linux et OS Alternatifs
Marsh Posté le 25-05-2004 à 21:28:50
autre question:
dans l'archive glibc-2.3.2 je n'ai pas de répertoire linuxthreads.
/glibc-2.3.2# ls |
Par contre, sur le site cité précédemment j'ai récupéré une archive linuxthread. Il faut que je l'ajoute dans le rép de glic? Ca se compile séparement ou simultanément?
Marsh Posté le 26-05-2004 à 00:12:07
ftp://sources.redhat.com/pub/glibc/releases/
t'a 2 archives à prendre
glibc-2.3.2.tar.bz2
glibc-linuxthreads-2.3.2.tar.bz2
tu décompresse la 1er, ca te donne un dossier glibc-2.3.2
tu décompresse la 2e dans le dossier glibc-2.3.2, ca devrait te donner 2 dossier commencant par linuxthread
edit:
pour l'installation, suivre la partie Glibc dans le chapitre 6 à cet url
http://lfs.oregonstate.edu/lfs/view/5.0/
Marsh Posté le 26-05-2004 à 07:28:11
D'accord merci.
Avant de procéder à l'installation depuis les sources, je supprime les packages glibc
glibc-kernheaders-2.4-7.16 |
installés par rpm?
Ou sinon, je peux faire cohabiter 2 glibc et linker mysql avec la nouvelle mais je sais pas si c'est possible facilement
Marsh Posté le 26-05-2004 à 18:55:18
Au passage si tu as un noyau 2.6 attention, la glibc n'utilisera pas LinuxThreads mais l'implémentation NPTL.
Marsh Posté le 26-05-2004 à 19:43:01
Jar Jar a écrit : Au passage si tu as un noyau 2.6 attention, la glibc n'utilisera pas LinuxThreads mais l'implémentation NPTL. |
j'ai installé glibc avec linuxthread et la jsuis sur un 2.6.6
Marsh Posté le 27-05-2004 à 00:58:52
Hello,
Je viens d'essayer d'installer glibc-2.3.2
au configure j'ai cette erreur:
checking installed Linux kernel header files... TOO OLD! |
j'utilise le kernel 2.4.26
De plus, une autre question:
Augmentez PTHREAD_THREADS_MAX dans sysdeps/unix/sysv/linux/bits/local_lim.h à 4096 |
# cat sysdeps/unix/sysv/linux/bits/local_lim.h | grep PTHREAD_THREADS_MAX |
Là c'est en regardant dans le fichier de l'archive de la nouvelle glibc que je veux installer. Mais j'ai également ce fichier dans ma glibc actuel et cette fois-ci:
cat /usr/include/bits/local_lim.h | grep PTHREAD_THREADS_MAX |
est ce que je peux remplacer les deux fichiers?
en sachant que les voici:
cat /usr/include/bits/local_lim.h |
et l'autre:
# cat sysdeps/unix/sysv/linux/bits/local_lim.h |
merci
Marsh Posté le 27-05-2004 à 01:11:46
Je viens d'essayer avec --with-headers=/lib/modules/2.4.26-grsec et tjs la meme erreur au configure
Où sont ces fichiers?
merci
Marsh Posté le 27-05-2004 à 19:25:26
1 non on n'efface pas la glibc avant d'en remettre une autre, sinon plus de distro qui marche.
2 on ne remplace pas non plus comme ca la glibc,
Tout le monde dit attention sous linux le plus dur c'est de recompiler son kernel, on voit bien que peu d'entre eux se sont amusés a mettre a jours une glibc a partir des sources.
3 "Je n'ai que /usr/include/bits/local_lim.h. L'autre n'existe pas"
A ton avis pourquoi s'appelle t'il internal.h ?
Bien sur que tu ne l'a pas et d'ailleurs il serait completement inutile (et meme plutot dangereux) de modifier ces constantes dans la version installée et compilée.
4 "Par ex, ca veut dire quoi ca? et relier MySQL avec le nouveau libpthread.a ?"
Cela veut dire utiliser le fichier libpthread.a (et les headers) compilé avec les constantes modifiées lors de la compilation de MySQL.
La solution la moins risquée est de recompiler la glibc modifiée et MySQL dans une arborescence a part, ex en passant --prefix=/opt/mysql-ha/ (ha pour high availability) au configure:
pour glibc:
../glibc-2.3.2/configure --prefix=/opt/mysql-ha --enable-add-ons ....
et pour mysql:
LD_LIBRARY_PATH=/opt/mysql-ha/lib INCLUDE=/opt/mysql-ha/include LIB=/opt/mysql-ha/lib ../mysql-version/configure --prefix=/opt/mysql-ha ...
ps: pour le LIB c'est a verifer, en fonction de la version de autoconf ca peut etre LIBRARIE ou autre.
Et de lancer mysql via un script comme cela:
|
5 pour ton pb de compilation de glibc, soit tu n'a pas les kernel-headers correspond a ton kernel en cours (et au passage les headers (fichiers de compilations) c'est pas les modules (fichiers binaires contenant du code deja compilé)).
Soit c'est headers ont ete mal installés.
Donc tu choppe le paquetage kernel-header si ton noyau est tjrs celui de la distro, sinon tu crée des liens comme suit:
|
Attention il faut que le kernel ai ete configuré avec make {menu|old|x|g|q}config
Ps: je viens de voire que tu as un paquet glibc-kernheaders,
tu devrai lister les fichiers qu'il contient et verifier qu'ils sont toujours presents, a priori il y a un pb.
6 A mon avis tu ferai bien de vérifer la validité de la methode que tu veut mettre en oeuvre parce que de toute evidence elles ne s'appliquent pas telles quelles a une glibc 2.3.2.
7 Je le redit mais bon, modifier les fichiers de /usr/include ne t'apporterais que des ennuis.
8 Avant de venir sur les forums ils y a des dizaines de sources d'informations que tu aurais du inspecter, notamment les guides de compilations de la glibc, les guides d'administration système de linux et autre howto disponibles sur tldp.org qui contiennent toutes c'est informations.
9 grep est capable de lire directement les fichiers sans passer par l'entrée standard.
et meme mieux, 'rgrep -l PTHREAD_THREADS_MAX *' dans la racine des sources de la glibc te retournera tout les noms de fichiers contenant une reference a la chaine recherchée.
10 si tu a vraiment besoin d'une telle montée en charge utilise PostgreSQL.
Marsh Posté le 28-05-2004 à 19:58:05
Je te remercie pour tes précisions
Citation : 3 "Je n'ai que /usr/include/bits/local_lim.h. L'autre n'existe pas" |
J'ai bien compris ca Mais en fait, ce fichier est bien celui qui est utilisé par ma glibc actuelle mais j'ai besoin de modifier un fichier dans les sources avant de compiler.
Ce fichier est censé être dans les sources avant de compiler donc que je puisse le modifier?
Citation : 4 "Par ex, ca veut dire quoi ca? et relier MySQL avec le nouveau libpthread.a ?" |
Ok pour la glibc je vois le truc par contre pour mysql, je ne vois pas comment utiliser LD_LIBRARY_PATH=/opt/mysql-ha/lib INCLUDE=/opt/mysql-ha/include LIB=/opt/mysql-ha/lib je dois taper ca tel quel?
10 si tu a vraiment besoin d'une telle montée en charge utilise PostgreSQL. |
Effectivement le problème est lié avec la gestion des threads, mais c'est lié à la glibc et non à mysql
Marsh Posté le 31-05-2004 à 16:33:57
comment je fais pour faire:
Citation : diminuez STACK_SIZE dans linuxthreads/internals.h à 256 KB |
alors que:
cat internals.h | grep STACK |
?
Marsh Posté le 25-05-2004 à 19:59:04
Salut,
J'ai besoin de faire ca:
Si vous planifiez d'avoir plus de 1000 connexions simultanées, vous aurez besoin d'apporter quelques modifications à LinuxThreads, le recompiler, et relier MySQL avec le nouveau libpthread.a . Augmentez PTHREAD_THREADS_MAX dans sysdeps/unix/sysv/linux/bits/local_lim.h à 4096 et diminuez STACK_SIZE dans linuxthreads/internals.h à 256 KB. Les chemins sont relatifs à la racine de glibc . Notez que MySQL ne sera pas stable autour de 600-1000 connexions si STACK_SIZE est à 2 MB (par défaut).
J'utilise la glibc installé par rpm:
rpm -qa | grep glibc
glibc-kernheaders-2.4-7.16
glibc-2.3.2-4.80.8
glibc-common-2.3.2-4.80.8
glibc-devel-2.3.2-4.80.8
glibc-profile-2.3.2-4.80.8
glibc-debug-2.3.2-4.80.8
Et donc comme indiqué dans le paragraphe au dessus je cherche le fichier
local_lim.h et internals.h. et Je n'ai que /usr/include/bits/local_lim.h. L'autre n'existe pas
Sur ce site: http://pauillac.inria.fr/~xleroy/linuxthreads/ j'ai trouvé une archive avec les deux fichiers cités précédemment. Donc il faudrait que je modifie les sources et ensuite installe ce linuxthread ( pas de prob à priori ) mais ensuite, faut t'il modifier qqchose à la glibc?
Modifier qqchose dans mysql? dans son configure?
Par ex, ca veut dire quoi ca? et relier MySQL avec le nouveau libpthread.a ?
Je n'ai rien trouvé de bien détaillé dans les docs
merci à vous
Message édité par Limit le 25-05-2004 à 20:02:56