Gentoo - Utilisation

De wikilivois
Aller à : navigation, rechercher

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

  /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

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:

  /etc/conf.d
APACHE2_OPTS="-D PHP5"
ou 
APACHE2_OPTS="-D PHP4"

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

Tête de GNU 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.