samedi 29 août 2009

eselect

Dans cet article, je vais presenter la commande eselect.

Definition : eselect est un outil de configuration et d'administartion gentoo.Cette commande peut être utilise par exemple pour switcher de noyau ou de version java.

Installation : Il est probable que eselect ne soit pas installé.Pour l'installer :
$ echo app-admin/eselect ~x86 >> /etc/portage/package.keywords
$ emerge -av app-admin/eselect
Utilisation courante : Lister les différentes selections et en choisir une.
eselect list

Exemple:
# eselect java-vm list
Available Java Virtual Machines:
[1] sun-jdk-1.5
[2] sun-jdk-1.6 system-vm

# eselect kernel list
Available kernel symlink targets:
[1] linux-2.6.26-gentoo-r3
[2] linux-2.6.27-gentoo-r4
[3] linux-2.6.27-gentoo-r5
[4] linux-2.6.27-gentoo-r7
[5] linux-2.6.28-gentoo
[6] linux-2.6.28-gentoo-r1
[7] linux-2.6.29-gentoo-r2
[8] linux-2.6.29-gentoo-r4
[9] linux-2.6.30-gentoo-r1 *

Effectuer un choix :

# eselect kernel set 1
# eselect kernel set linux-2.6.27-gentoo-r7

Activer une fonction pour un module :

On peut par exemple activer vim pour la completion bash.

Exemple :
$ eselect bashcomp enable vim

http://www.gentoo.org/proj/fr/eselect/user-guide.xml
http://www.gentoofr.org/Introduction-a-eselect.html

dimanche 16 août 2009

emerge x11-drivers/nvidia-drivers compilation failed Could not find a usable .config

Problème :
Lors de la mise à jour où l'installation du package x11-drivers/nvidia-drivers, la compilation échoue.
Exemple :
* Could not find a usable .config in the kernel source directory.
* Please ensure that /usr/src/linux points to a configured set of Linux sources.
* If you are using KBUILD_OUTPUT, please set the environment var so that
* it points to the necessary object directory so that it might find .config.
*
* ERROR: x11-drivers/nvidia-drivers-185.18.31 failed.

Solution :

Vous ne pointez pas sur le bon noyau.Cela se produit lors de la mise à jour des sources du noyau.En effet, le lien symbolique /usr/src/linux est mise à jour lors d'un update.
Si vous faites:
ls -al /usr/src/
lrwxrwxrwx 1 root root 22 Aug 16 16:30 linux -> linux-2.6.30-gentoo-r1
drwxr-xr-x 22 root root 4096 Nov 29 2008 linux-2.6.26-gentoo-r3
drwxr-xr-x 23 root root 4096 Dec 6 2008 linux-2.6.27-gentoo-r4
drwxr-xr-x 23 root root 4096 Aug 9 13:36 linux-2.6.30-gentoo-r1

Vous constatez que le lien symbolique pointe vers les dernières sources mise à jour.
Hors, vous n'avez surement pas recompiler les sources de ce noyau et donc le répertoire de ce noyau ne contient pas de .config.
Donc il y a 2 solutions :
- Recompilez les dernières sources du noyau.
- Pointez sur votre noyau.

Pour sélectionner votre noyau :
# eselect kernel list
Available kernel symlink targets:
[1] linux-2.6.26-gentoo-r3
[2] linux-2.6.27-gentoo-r4
[3] linux-2.6.27-gentoo-r5
[4] linux-2.6.27-gentoo-r7
[5] linux-2.6.28-gentoo
[6] linux-2.6.28-gentoo-r1
[7] linux-2.6.29-gentoo-r2
[8] linux-2.6.29-gentoo-r4
[9] linux-2.6.30-gentoo-r1 *
[10] linux-2.6.30-gentoo-r2

Ensuite, vous pouvez sélectionner le noyau qui contient le .config.
# eselect kernel set 9

Si vous ré-executez la commande eselect kernel list, il mettra une étoile
à coté du noyau sélectionné.
Ensuite, vous pouvez faire l'update du package :
#emerge -u x11-drivers/nvidia-drivers

jeudi 13 août 2009

shell lire un fichier de propriété



Problème

Vous voulez lire en shell un fichier de propriété similaire à celui-ci :

vi test.properties

VAR1=zest
VAR2=blop
VAR3=toto
MAIL=test@ty
ALIAS=monalias

Vous voulez aussi que les valeurs lues soient exploitables.


Solution

La solution consiste à lire ligne par ligne le fichier et à faire un export de
cette ligne. On peut aussi extraire ce qui est avant le = (Si on veut utiliser le nom de la variable)
L'exemple suivant utilise ksh mais on peut utiliser le shell qu'on veut. Cette exemple définit une méthode readFileProperties qui pour l'instant ne prend pas de paramêtre étant donné que c'est juste une méthode de test.


#!/bin/ksh
#-----------------------------
------------------------------
# Methode qui lit les proprietes d un fichier de properties.
#-----------------------------------------------------------

readFileProperties()
{
FILE="test.properties"

test -f $FILE
if [ $? -ne 0 ];then
echo "Fichier de propriete inexistant:$FILE"
exit 1
fi

echo "Lecture..."
while read ligne
do
if echo "$ligne" |grep "=" 1>/dev/null
then
VARNAME=`echo $ligne |cut -f1 -d=`
#echo $VARNAME
VARVALUE=`grep "^$VARNAME=" $FILE`
export $VARVALUE
#echo "export $VARVALUE"
fi
done < $FILE echo "VAR1:$VAR1" echo "VAR2:$VAR2" echo "VAR3:$VAR3" echo "ALIAS:$ALIAS" echo "MAIL:$MAIL" } readFileProperties

dimanche 9 août 2009

cannot set LC_CTYPE locale (gentoo)

Problème :

cannot set LC_CTYPE locale
environment variable LANG is fr_FR.utf8@euro
please check that your locale name is correct

Solution :

Le problème vient du fait que LC_CTYPE n'a pas été reconnu.
Il faut s'assurer que la valeur est bien écrite.
Pour cela : locale -a

Exemple :
$ locale -a
C

POSIX
fr_FR fr_FR.iso88591
fr_FR.iso885915@euro
fr_FR@euro


Ensuite, il suffit de vérifier dans la conf, la valeur inscrite :
Sous gentoo : vi /etc/env.d/02locale

Exemple :
vi /etc/env.d/02locale

LANG="fr_FR.iso885915@euro"
LC_COLLATE="C"

=> Vous devez avoir une variable LANG initialisée avec une des valeurs affichées
par la commande : locale -a

Vous pouvez également laisser à chaque utilisateur linux, le soin de configurer
ses variables :

vi ~/.bashrc

Exemple :
vi ~/.bashrc
export LANG="fr_FR.iso885915@euro"
export LC_ALL=C

svn: warning: cannot set LC_CTYPE locale

Une petite astuce que j'ai trouvé sur le web : (http://armenianeagle.com/2008/03/18/svn-warning-cannot-set-lc_ctype-locale-solution/) et qui a permis de résoudre mon problème :

Problème :

Si lorsque vous faites : svn status
Et que vous avez le message suivant :

svn: warning: cannot set LC_CTYPE locale
svn: warning: environment variable LANG is fr_FR.utf8@euro
svn: warning: please check that your locale name is correct
svn: warning: '.' is not a working copy

Solution :

export LC_ALL=C

Regardez aussi le post que j'ai fait LC_CTYPE locale


PoweredByGento