Gentoo - Utilisation
Objet : Utiliser les particularités de la gentoo (notamment le portage).
Gestion des packages
La commande emerge
Utilisation
Cette commande sert à installer, mettre à jour ou enlever des packages. Voici quelques options :
- -u met à jour le package
- -D deep (met à jour les dépendances)
- -C efface le package
- -p (--pretend) : précise les dépendances qu’il faudra installer
- world : installe tous les packages.
- system : met à jour les packages systèmes
Les paquets installés manuellement par l’utilisateur au travers l’utilisation de la commande emerge sont enregistrés dans le fichier /var/lib/portage/world.
#emerge -uDptv world
donne une explication détaillée des packages.
#emerge --info
donne des informations sur la variable USE et les informations d'environnement lié à emerge
etc-update
- Après avoir mis à jour les paquets avec la commande emerge, des fichiers du type ._cfg000* (ex : ._cfg0000_make.conf ) viennent se placer dans les répertoires. Ce sont des mises à jour des fichiers de configuration.
Ensuite il faut décider de:
- remplacer les fichiers de configuration par ces fichiers
- ou les supprimer.
La commande etc-update permet la gestion de ces mises à jour. Il est souvent nécessaire d'utiliser la commande rm ._cfg000*.
La commande diff est utile pour visualiser les différences entre le fichier existant et le remplaçant (._cfg000*) proposé par Gentoo:
#diff /etc/snort/snort.conf /etc/snort/._cfg0000_snort.conf
Attention au fichier make.conf. Il faut sauvegarder la variable USE, puis mettre à jour et ensuite remettre la variable comme elle etait auparavant.
Après une mise à jour de package Gentoo, je propose la méthode suivante pour mettre à jour les fichiers de configuration:
- #etc-update pour lister les fichiers pour lesquels Gentoo propose une mise à jour
- #diff fichier ._cfg0000_fichier en cas de doute sur une mise à jour
- #rm ._cfg0000_fichier_inutile pour les propositions Gentoo qui ne conviennent pas
- etc-update puis -5 pour mettre le reste à jour ...
Option avancées
- options pour emerge
--emptytree : avec –-pretend (-p), cette option permet d’afficher l’arbre complet des dépendances d’un paquet particulier.
--newuse world -Dpv : Rebuilding on USE flag changes: Portage is now able to perform automatic rebuilds of formerly emerged packages whenever USE flag settings have changed:
- Installation du portage Overlay
http://gentoo-wiki.com/HOWTO_Installing_3rd_Party_Ebuilds
http://gentoo-wiki.com/TIP_Overlays
Package Gentoo : layman ~x86
#echo "source /usr/portage/local/layman/make.conf" >> /etc/make.conf #layman -f #layman -L - liste les packages overlay disponibles #layman -a webapps-experimental
La mise à jour de ce portage se fait via la commande gensync:
#layman -s webapps-experimental
Mises à jour de sécurité avec glsa-check
http://www.gentoo.org/proj/en/portage/glsa-integration.xml
#glsa-check -l | grep "\[N\]" #glsa-check -p 200507-22 (montre ce qu'il faut faire pour la mise à jour) #glsa-check -d 200507-22 (montre le contenu de la glsa)
Le portage
La gestion des paquets
La gestion des paquets est organisée grâce à un arbre « portage » qui se trouve dans /usr/portage.
Toutes les options de configuration se trouvent dans les fichiers /etc/make.conf et /etc/make.globals. Changer le serveur miroir est intéressant pour des raisons
- de performance (le serveur distant autorise un débit plus important)
- de sécurité (le serveur ne peut plus télécharger n’importe quoi sur Internet , si l’on adapte les règles de firewalling)
Le portage se met à jour avec la commande :
#emerge --sync
Pour les mêmes raisons que le miroir gentoo, on peut limiter les adresses :
SYNC="rsync://213.131.230.230/gentoo-x86-portage"
La variable USE
http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=2&chap=2
Le paramètre USE fournit un moyen flexible de sélectionner ou déselectionner des options à la compilation de paquets, ce à un niveau global, et pour des paquets individuels.
Une liste de mots-clefs USE utilisés par un paquet particulier peuvent être trouvés en regardant les variables DEPEND et RDEPEND dans les fichiers ebuild.
Une liste des paramètres USE utilisés par la Gentoo se trouve dans /usr/portage/profiles/use.desc.
Exemple de variable USE définie dans /etc/make.conf
USE="-java -alsa -qt -X -gtk -gnome gd mysql ssl apache2"
Ces options de compilations sont paramétrables par package dans le fichier /etc/portage/package.use.
Profile
#rm /etc/make.profile #ln -s /usr/portage/profiles/hardened/x86/2.6/ /etc/make.profile
Emplacement des fichiers
#man 5 portage
Configuration par défaut dans /etc/make.profile/
A personnaliser ds /etc/portage/:
- package.mask => restreint des versions de package
- package.unmask => corrige package.mask pr des cas particuliers
- package.keywords => choisit le keyword par package
/etc/portage
package.keywords package.mask package.unmask package.use sets
/usr/portage/distfiles
On y trouve les fichiers sources .tbz2.
Au cours de l’installation de packages, les fichiers du package se trouvent dans /var/tmp/portage.
Les fichiers de configuration ebuild se trouvent dans /usr/portage.
/var/db/pkg donne l’arbre et la configuration de tous les packages installés.
Protection de packages et des fichiers de configuration
Packages
Parfois, il est préférable de garder une certaine version d’un package (pour des raisons de compatibilité ou lorsque certains packages posent problème).
L’ensemble des packages est défini dans /etc/make.profile/packages.
Les nom de packages précédés d’une * sont les packages « system ».
La ligne *>=sys-devel/gcc-3.2 indique que il faut mettre à jour les gcc lors d’un emerge system (ou world).
On peut garder un numéro de version en remplaçant >= par =.
Le fichier /usr/portage/profiles/package.mask bloque les versions de certains packages instables.
On peut rajouter des lignes dans /etc/portage/package.mask, par exemple >=net-www/apache-2.0.47, pour ne pas utiliser apache2.
Pour installer installer les packages considérés comme non stables, il faut faire un emerge du .ebuild :
#emerge /usr/portage/xxx/yyyy.ebuild
Packages non stables
L'option ACCEPT_KEYWORDS dans /etc/make.conf permet d’installer des packages considérés comme « non stables »:
#ACCEPT_KEYWORDS="~x86" (#remplacer x86 par votre architecture)
Il est préférable d'utiliser le fichier /etc/portage/package.keywords pour utiliser des packages non stables au cas par cas.
Fichiers de configuration
- Portage permet la protection de tous les fichiers d’un répertoire spécifique. Si un paquet essaye d’installer un fichier protégé, il sera renommé en ._cfg0000_nom. Ceci permet à l’utilisateur de finaliser la mise à jour à la main.
- Les répertoires protégés sont choisis à l’aide de CONFIG_PROTECT dans /etc/make.conf ou /etc/make.globals.
Des fichiers spécifiques sont déprotégés à l’aide de la variable CONFIG_PROTECT_MASK.
Des commandes utiles
equery
Package Gentoo: gentoolkit
equery which <pkg>
equery size <pkg>
equery belongs <file> (à quel package appartient ce fichier?)
equery files <package> (liste des fichiers du package)
mirrorselect:(dans le package mirrorselect) permet de sélectionner les miroirs gentoo et de configurer /etc/make.conf en conséquences.
recherche de package
#emerge –s paquet #locate paquet | grep portage
Package Gentoo: app-portage/portage-utils
Pour lister les packages contenant un fichier :
#qfile fichier
Proxy
Des proxies HTTP et FTP peuvent être précisés dans /etc/profile
http_proxy="http://192.168.100.10:8080" ftp_proxy="http://192.168.100.10:8080" export http_proxy ftp_proxy
Vérifier que la configuration du proxy (squid.conf) accepte les requêtes du serveur.
Mettre à jour avec la commande :
#source /etc/profile
Il est aussi possible d'utiliser un proxy pour le rsync:
- soit en utilisant la commande emerge-webrsync
- soit en définissant la variable RSYNC_PROXY dans /etc/make.conf
Compiler soi-même
#man ebuild #ebuild foo-x.y.z.ebuild unpack #cd /var/tmp/portage/foo-x.y.z/work #./configure #make #touch /var/tmp/portage/foo-x.y.z/compiled #ebuild foo-x.y.z.ebuild merge
Configuration
Démarrage
rc-update
Cette ligne permet de lancer apache au démarrage du serveur
#rc-update add apache default
Cette ligne retire apache des applications démarrées au démarrage.
#rc-update del apache default
La liste des applications que l’on peut lancer au démarrage, de cette façon, se trouve par la commande :
#ls /etc/runlevels/default
Vhosts
Le 'vhosts' USE flag doit être à ON.
Le fichier de configuration de webapp-config est /etc/vhosts/webapp-config
Les applications sont installées dans le répertoire /usr/share/webapps/
#webapp-config -–list-installs
/var/www/www.livois.com/webstats /var/www/www.livois.com/phpmyadmin /var/www/www.livois.com/squirrelmail
#webapp-config --show-installed -d ../../www.livois.com/squirrelmail
squirrelmail 1.4.4
#webapp-config -–list-unused-installs
squirrelmail-1.4.3a-r2 squirrelmail-1.4.5
#emerge -C squirrelmail-1.4.3a-r2
#webapp-config -U -h www.livois.com -d squirrelmail squirrelmail 1.4.5
Mise à jour du noyau
Gentoo_-_Installation#Compilation_du_noyau
http://www.gentoo.org/doc/fr/kernel-upgrade.xml
Package Gentoo: gentoo-sources eselect module-rebuild
Compilation
#emerge -u gentoo-sources
#eselect kernel list Available kernel symlink targets: [1] linux-2.4.31-gentoo-r1 [2] linux-2.6.14-gentoo-r5 * [3] linux-2.6.17-gentoo-r8
#eselect kernel set 3
#cd /usr/src/linux #make menuconfig #make && make modules_install #cp /usr/src/linux/arch/i386/boot/bzImage /boot/kernel-2.6.14-gentoo-r5 #cp .config /boot/config-2.6.14-gentoo-r5
#module-rebuild populate #module-rebuild rebuild
Quelques options
Obligation Gentoo
Code maturity -> Prompt for development
File systems ---> Pseudo Filesystems ---> [*] /proc file system support [*] /proc/kcore support [*] sysfs file system support [*] Virtual memory file system support (former shm fs) <*> /proc file system support
Sensors
http://www.lm-sensors.org/wiki/Kernel2.6
Bus options (PCI, PCMCIA, EISA, MCA, ISA) [*] PCI support Device Drivers I2C support <*> I2C support <M> I2C device interface I2C Algorithms <M> (configure all of them as modules) I2C Hardware Bus support <M> (configure all of them as modules) Hardware Monitoring support (since 2.6.13-rc3) <M> (configure all of them as modules)
Accounting
General setup [*] BSD Process Accounting [ ] BSD Process Accounting version 3 file format (NEW)
Grub
Editer /boot/grub/menu.lst <licode file=/boot/grub/menu.lst>
- For booting GNU/Linux
title Gentoo Linux
root (hd0,0)
kernel /boot/boot/kernel-2.6.17-gentoo-r8 root=/dev/sda3
- initrd /initrd.img
</licode>
Annexes
Utiliser PHP4 et PHP5
http://www.gentoo.org/proj/en/php/php-upgrading.xml
Php4 et Php5 peuvent être utilisés simultanément
Package Gentoo: dev-lang/php4 dev-lang/php5
Il faut toutefois recompiler certains packages:
#equery list 'dev-php/'
[ Searching for all packages in 'dev-php' among: ] * installed packages [I--] [ ] dev-php/PEAR-PEAR-1.4.9-r1 (0) [I--] [ ] dev-php/adodb-4.72 (0) [I--] [ ] dev-php/PEAR-DB-1.7.6-r1 (0)
Recompiler les packages listés par equery:
#emerge PEAR-PEAR adodb PEAR-DB
Configurer le système pour utiliser Php4 ou Php5:
Avec Apache: <licode file=/etc/conf.d> APACHE2_OPTS="-D PHP5" ou APACHE2_OPTS="-D PHP4" </licode>
Mettre à jour /etc/php/apache2-php5/php.ini
Pour les autres applications ,utiliser php-select
(for cli) #php-select php php4 (for cgi) #php-select php-cgi php5 (for phpize, php-config) #php-select php-devel php5
Problèmes de mise à jour rencontrés et résolus ...
Xfree et mod_php
Pour éviter d’installer Xfree en même temps que mod_php, il suffit de rajouter "-qt –qtmt" à la variable USE.
Installation de PHP-4.3.1
Il faut rajouter "-java" à la variable USE.
Installation de mod_php-4.3.2
You did NOT rebuild your system properly after you upgraded to mysql4 from mysql3.
#emerge gentoolkit #revdep-rebuild #emerge mod_php
* The INI file for this build is /etc/php/apache1-php4 * This is a security upgrade for PHP! * Please ensure that you apply any changes to the apache and PHP * configutation files! * Due to some previous bloopers with PHP and slotting, you may have * multiple copies of mod_php installed. Please look at the autoclean * output at the end of the emerge and unmerge all but relevant * copies. * To have Apache run php programs, please do the following: * 1. Execute the command: * "ebuild /var/db/pkg/dev-php/mod_php-4.3.2-r4/mod_php-4.3.2-r4.ebuild config" * 2. Edit /etc/conf.d/apache and add "-D PHP4" * That will include the php mime types in your configuration * automatically and setup Apache to load php when it starts.
Installation de mod_php-4.3.3-r1
configure: error: can not run test program while cross compiling !!! ERROR: dev-php/mod_php-4.3.3 failed. !!! Function econf, Line 324, Exitcode 1 !!! econf failed
Solution:
#emerge php #emerge mod_php (Peut être emerge –C libwww au préalable)
Installation de horde-imp
Il faut mettre imap dans la variable USE de /etc/make.conf et recompiler mod_php.
Emerge rsync ne fonctionne pas.
Vérifier que le port 873 est ouvert sur le firewall.
Sinon, il est possible de télécharger à la place une image de /usr/portage à partir de http://cvs.gentoo.org/snapshots.
Il faut décompresser l’archive portage-foo.tbz2 dans /usr.
On peut le faire directement avec la commande emerge-webrsync.
Problème digest
On peut changer le fichier digest qui se trouve dans /usr/portage/xxx/yyy/files/digest. Ex cacti : /usr/portage/net-analyzer/cacti/files/digest-cacti-0.6.8a
http_proxy
On obtient toujours un aborted malgré la définition d'une variable du type: http_proxy="ip:8080" dans /etc/profile Il y a un bug connu avec wget 1.9. La 1ère solution est de repasser en wget-1.8.2 Une 2e solution serait de définir un nom de domaine et non pas une adresse ip.
Snort-2.0.0
libnet.h missing
Solution:
#emerge -C libnet #emerge -p /usr/portage/net-analyzer/snort/snort-2.0.5.ebuild
Tuer un zombie
To kill a zombie process, issue
#ps anl | grep "Z"
and it will show you the zombie processes with both a PID and a PPID heading.
#kill -9 [PPID number for the zombie process]
and the zombie process should be gone next time you do ps ax.
Copyright
© 2006 Christophe de Livois
Vous avez l'autorisation de copier, distribuer et/ou modifier ce document suivant les termes de la GNU Free Documentation License, Version 1.2 ou n'importe quelle version ultérieure publiée par la Free Software Foundation; sans section invariante, sans page de garde, sans entête et sans page finale. Pour plus d'informations consulter le site de l'APRIL. |