Utiliser Gentoo et Calculate Linux

[Brouillon] Calculate : Gérer ses logiciels

Table des matières

Boite a liens



http://www.calculate-linux.org/main/en/optimization_of_system
https://wiki.gentoo.org/wiki/Profile

Gérer les logiciels



Avoir des infos sur un paquet installé



Code BASH :
eix <nom du paquet>


Recherche de logiciels



Pour rechercher les versions de logiciel qu'il est possible d'installer on utilise la commande eix:
Code BASH :
adrien@calculate ~ $ eix firefox
* www-client/firefox
     Available versions:  10.0.6 10.0.7 10.0.9 10.0.10 10.0.11 (~)17.0.1 {+alsa bindist custom-cflags custom-optimization +dbus debug gstreamer +ipc +jit libnotify +minimal pgo selinux startup-notification system-sqlite +webm wifi LINGUAS="af ak ar as ast be bg bn_BD bn_IN br bs ca cs csb cy da de el en_GB en_ZA eo es_AR es_CL es_ES es_MX et eu fa fi fr fy_NL ga_IE gd gl gu_IN he hi_IN hr hu hy_AM id is it ja kk km kn ko ku lg lt lv mai mk ml mr nb_NO nl nn_NO nso or pa_IN pl pt_BR pt_PT rm ro ru si sk sl son sq sr sv_SE ta ta_LK te th tr uk vi zh_CN zh_TW zu"}
     Homepage:            http://www.mozilla.com/firefox
     Description:         Firefox Web Browser
 


Installer un logiciel



Code BASH :
emerge -avq logiciel

Et sans la question
Code BASH :
emerge -vq logiciel

Tester l'installation d'un logiciel (vérifier les dépendances)



Code BASH :
emerge -pv logiciel


Supprimer un logiciel



Code BASH :
emerge -C logiciel

Mettre à jour un logiciel



Code BASH :
emerge -u logiciel

Si le logiciel est une dépendance* et qu'on ne souhaite pas qu'il soit noté comme installé manuellement :
Code BASH :
emerge -1u logiciel

*ne figure pas dans /var/lib/portage/world

Mettre à jour son système



Via l'application
Code BASH :
cl-update

Sinon, on doit enchainer toutes ces commandes sous Gentoo
Code BASH :
 
#Synchronisation de portage et overlays :
eix-sync
#Facultatif
emerge -1qvu sys-apps/portage app-portage/portage-utils
#facultatif
emerge -1qvu sys-devel/gcc
#Facultatif
emerge -1qvu dev-lang/python
#Facultatif
python-updater
#MaJ du système
emerge -aquvDN --with-bdeps=y world
#Que si MAJ de perl
perl-cleaner -q --modules
#Suppression des paquets orphelins
emerge -aqc
#Que si kernel installé
emerge -q @module-rebuild
#Recompilation des dépendances
revdep-rebuild -iq
#Nettoyage des archives (facultatif)
eclean-dist
eclean-pkg


Reprendre un emerge interrompu



En cas d'interruption de mise à jour, d'optimisation, tel emerge -e world ou emerge -quD world il est possible de reprendre le travail là où il s'est arrêté:
Code BASH :
emerge -r


Installer des applications "non supportées" (~1.0.0)



Pour installer les dernières versions de logiciels ou les logiciels non supportés mais présents dans l'arbre des logiciels (en orange dans la console dont la version est précédée du symbole ~ via la recherche eix), renseigner le fichier /etc/portage/package.accept_keywords/custom
Pour une version spécifique du logiciel :
Code :
=www-client/firefox-17.0.1

Pour toutes les versions :
Code :
www-client/firefox

On peut utiliser en ligne de commande :
Code BASH :
echo "net-misc/teamviewer" >> /etc/portage/package.accept_keywords/custom

Masquer un paquet



Masquer un paquet va empêcher son installation.
Tout se passe dans le fichier /etc/portage/package.mask/custom
Pour empêcher l'installation des versions supérieures à 2.2 de Zabbix, j'indique dedans :
Code BASH :
>net-analyzer/zabbix-2.1

Si on veut masquer toute la branche 5.6 de PHP :
Code BASH :
dev-lang/php:5.6

Conserver les USEFLAG spécifiques



Code BASH :
 echo "sys-kernel/calculate-sources -minimal" >> /etc/portage/package.use/custom

Pour désactiver toutes les langues de Chromium par exemple, sauf le français :
Code BASH :
 echo "www-client/chromium -l10n_* l10n_fr" >> /etc/portage/package.use/custom

Gérer les USE de manière globale



Pour gérer les USE sur tous les paquets du système, soit on édite dans le make.conf la ligne USE, soit on utilise la commande euse :
Pour ajouter le flag vlc :
Code BASH :
euse -E vlc

Code TEXT :
Adding flag "vlc" to make.conf

Pour désactiver le flag vlc (-vlc) :
Code BASH :
euse -D vlc

Code TEXT :
Adding flag "-vlc" to make.conf

Pour désactiver toute référence au flag concerné :
Code BASH :
euse -D vlc

Code TEXT :
Adding flag "-vlc" to make.conf


Lister les paquets installés



Tous les paquets (i majuscule)
Code BASH :
eix -cI 

Suivant un motif (contenant cal):
Code BASH :
eix -cI cal


Et depuis un overlay spécifique :
Code BASH :
eix -cI --installed-in-overlay overlay


Tout recompiler les paquets



Code BASH :
emerge -e system && emerge -e world

system : système de base gentoo
world : logiciels (/var/lib/portage/world)

Ajouter un dépot (overlay)



http://gpo.zugaina.org/Overlays/
Code BASH :
layman -a nom-overlay

Avoir connaissance de la signification d'u USEFLAG



Code BASH :
equery u pbzip2
[ Legend : U - final flag setting for installation]
[        : I - package is installed with flag     ]
[ Colors : set, unset                             ]
 * Found these USE flags for app-arch/pbzip2-1.1.8:
 U I
 - - static  : !!do not set this during bootstrap!! Causes binaries to be statically linked instead of dynamically
 - - symlink : Install symlinks which override app-arch/bzip2 implementation
 


Savoir dans quel paquet se trouve un fichier



Remarque : le paquet doit être installé :
Code BASH :
equery b $(which gpg2)
 * Searching for /usr/bin/gpg2 ... 
app-crypt/gnupg-2.0.25 (/usr/bin/gpg2)
 

Lister toutes les dépendances d'un paquet



Remarque : le paquet doit être installé :
Code BASH :
equery g clementine

Ou en précisant la version :
Code BASH :
equery g clementine-1.3.1

Exemple :
Code TEXT :
$ equery g clementine-1.3.1
 * Searching for clementine1.3.1 ...
 * dependency graph for media-sound/clementine-1.3.1
 `--  media-sound/clementine-1.3.1  amd64 
   `--  dev-db/sqlite-3.12.0  (dev-db/sqlite) amd64 
   `--  dev-libs/glib-2.46.2-r3  (>=dev-libs/glib-2.24.1-r1) amd64 
   `--  dev-libs/libxml2-2.9.4  (dev-libs/libxml2) amd64 
   `--  dev-libs/protobuf-2.5.0-r2  (dev-libs/protobuf) amd64 
   `--  dev-libs/qjson-0.8.1-r1  (dev-libs/qjson) amd64 
   `--  dev-qt/qtcore-4.8.6-r2  (>=dev-qt/qtcore-4.5) amd64 
   `--  dev-qt/qtgui-4.8.6-r4  (>=dev-qt/qtgui-4.5) amd64 
   `--  dev-qt/qtopengl-4.8.6-r1  (>=dev-qt/qtopengl-4.5) amd64 
   `--  dev-qt/qtsql-4.8.6-r1  (>=dev-qt/qtsql-4.5) amd64 
   `--  media-libs/chromaprint-1.2  (>=media-libs/chromaprint-0.6) amd64 
   `--  media-libs/gstreamer-1.6.3  (media-libs/gstreamer) amd64 
   `--  media-libs/gst-plugins-base-1.6.3  (media-libs/gst-plugins-base) amd64 
   `--  media-libs/libechonest-2.3.1-r1  (media-libs/libechonest) amd64  [qt4]
   `--  media-libs/libmygpo-qt-1.0.8  (>=media-libs/libmygpo-qt-1.0.8) ~amd64 
   `--  media-libs/taglib-1.9.1-r2  (>=media-libs/taglib-1.8) amd64  [mp4]
   `--  sys-libs/zlib-1.2.8-r1  (sys-libs/zlib) amd64 
   `--  dev-libs/crypto++-5.6.2-r3  (dev-libs/crypto++) amd64 
   `--  virtual/glu-9.0-r1  (virtual/glu) amd64 
   `--  virtual/opengl-7.0-r1  (virtual/opengl) amd64 
   `--  x11-libs/libX11-1.6.3  (x11-libs/libX11) amd64 
   `--  dev-libs/libcdio-0.92  (dev-libs/libcdio) amd64 
   `--  dev-qt/qtdbus-4.8.6-r1  (>=dev-qt/qtdbus-4.5) ~amd64 
   `--  media-libs/libgpod-0.8.3-r1  (>=media-libs/libgpod-0.8.0) amd64 
   `--  media-libs/liblastfm-1.0.9  (>=media-libs/liblastfm-1) amd64  [qt4(+)]
   `--  media-libs/libmtp-1.1.11  (>=media-libs/libmtp-1.0.0) amd64 
   `--  sci-libs/fftw-3.3.4  (sci-libs/fftw) amd64 
   `--  media-libs/glew-1.10.0-r2  (media-libs/glew) amd64 
   `--  media-libs/libprojectm-2.1.0-r1  (>=media-libs/libprojectm-1.2.0) amd64 
   `--  dev-libs/boost-1.56.0-r1  (>=dev-libs/boost-1.39) amd64 
   `--  virtual/pkgconfig-0-r1  (virtual/pkgconfig) amd64 
   `--  sys-devel/gettext-0.19.7  (sys-devel/gettext) amd64 
   `--  dev-qt/qttest-4.8.6-r1  (dev-qt/qttest) amd64 
   `--  dev-cpp/gmock-1.7.0-r1  (dev-cpp/gmock) amd64 
   `--  dev-cpp/sparsehash-2.0.2  (dev-cpp/sparsehash) amd64 
   `--  media-sound/pulseaudio-8.0  (media-sound/pulseaudio) amd64 
   `--  gnome-base/gsettings-desktop-schemas-3.18.1  (gnome-base/gsettings-desktop-schemas) amd64 
   `--  sys-devel/make-4.1-r1  (sys-devel/make) amd64 
   `--  dev-util/cmake-3.4.3  (>=dev-util/cmake-2.8.12) amd64 
   `--  sys-apps/sed-4.2.1-r1  (>=sys-apps/sed-4) amd64 
   `--  x11-base/xorg-server-1.17.4  (x11-base/xorg-server) amd64  [xvfb]
   `--  x11-apps/xhost-1.0.7  (x11-apps/xhost) amd64 
   `--  sys-fs/udisks-2.1.7  (sys-fs/udisks) amd64 
   `--  media-plugins/gst-plugins-libmms-1.6.3  (media-plugins/gst-plugins-libmms) amd64 
   `--  gnome-base/gvfs-1.26.3  (gnome-base/gvfs) amd64 
   `--  media-plugins/gst-plugins-meta-1.6.3  (media-plugins/gst-plugins-meta) amd64 
   `--  media-plugins/gst-plugins-soup-1.6.3  (media-plugins/gst-plugins-soup) amd64 
   `--  media-plugins/gst-plugins-taglib-1.6.3  (media-plugins/gst-plugins-taglib) amd64 
[ media-sound/clementine-1.3.1 stats: packages (48), max depth (1) ]
 


Enregistrer un paquet dans le world file



Vous avez un paquet installé, mais non référencé dans le world ? Il ne sera jamais mis à jour, et il se peut que d'autres compilations échouent. Ou bien vous voulez conserver en "dur" un noyau qui fonctionne bien ?
Il faut pour cela utiliser l'option --noreplace
Code BASH :
emerge --noreplace paquet

Ca fonctionne aussi avec un SLOT :
Code BASH :
emerge --noreplace sys-kernel/calculate-sources:4.4.33
Calculating dependencies... done!
>>> Recording sys-kernel/calculate-sources:4.4.33 in "world" favorites file...
>>> Jobs: 0 of 0 complete                           Load avg: 4.19, 5.20, 3.60
>>> Auto-cleaning packages...
 

Ou bien une version précise :
Code BASH :
emerge --noreplace =sys-kernel/calculate-sources-4.4.33


Supprimer un paquet dans le world file



A contrario, vous avez un paquet marqué manuellement dans le world et vous voulez le supprimer pour une raison ou pour une autre, il suffit d'utiliser l'option --deselect :
Code BASH :
emerge --deselect lepaquet

Cette action ne désinstalle pas le paquet.

Installer un paquet depuis les sources au lieu du paquet binaire



Beaucoup de paquets sur Calculate Linux sont déjà compilés et distribués sous forme binaire.
La personnalisation d'un "USE" compile automatiquement le paquet sur la machine, mais avec les FLAG par défaut, le binaire est automatiquement téléchargé.
Si on souhaite tout de même compiler manuellement le paquet, procéder comme ceci :
Code BASH :
FEATURES="-getbinpkg" emerge -avq paquet

Filesize does not match recorded size



Une fois, j'ai eu ce souci lors de la mise à jour :
Code BASH :
>>> Verifying ebuild manifests
!!! Digest verification failed:
!!! /usr/portage/sys-apps/busybox/busybox-9999.ebuild
!!! Reason: Filesize does not match recorded size
!!! Got: 8493
!!! Expected: 8580

Il suffit de regénerer les infos de métadonnées (ici exemple avec sys-apps/busybox) :
Code BASH :
 cd /usr/portage/sys-apps/busybox
ebuild --force busybox-9999.ebuild manifest

Personnaliser les options de compilation pour 1 paquet (package.env)



Si on souhaite personnaliser les options du make.conf, on va créer un fichier .conf dans /etc/portage/env.
Puis on va indiquer pour les paquets concernés quel fichier à utiliser dans /etc/portage/package.env
Exemple sur un système avec un MAKEPOTS à -j16 on veut avoir qu'un MAKEOPTS à -j5
Code BASH :
vi /etc/portage/env/make-j5.conf

dedans :
Code BASH :
MAKEOPTS="-j5"

Puis
Code BASH :
vi /etc/portage/package.env

dedans
Code BASH :
net-libs/webkit-gtk make-j5.conf


Appliquer des patchs personnels à un logiciel



Il se peut qu'un paquet "testing" refuse de compiler sur votre système et qu'il soit nécessaire de patcher le code source.
Il existe probablement déjà sur le Bugzilla de Gentoo un patch disponible, ou on vous demande de tester un patch sur votre système.

Dans ce cas, il va falloir le placer dans /etc/portage/patches/categorie/paquet.
On peut procéder de plusieurs façons, voici un exemple avec python :
/etc/portage/patches/dev-lang/python => Toutes les versions de python
/etc/portage/patches/dev-lang/python:3.7 => Toutes les versions du slot 3.7 python
/etc/portage/patches/dev-lang/python-3.7.7 => Toutes les versions 3.7.7 de python
/etc/portage/patches/dev-lang/python-3.7.7-r2 => Uniquement la révision 2 de la version 3.7.7 de python

Placer le ou les fichiers "patch" dedans (extension .patch) et réémerger le paquet.

Si la compilation est verbeuse, vous verrez votre patch s'appliquer, exemple ici d'une aide apportée à un utilisateur n'arrivant pas à compiler broadcom-sta avec le kernel 5.6 (testing) de Calculate :
Code BASH :
 * Applying patches from /etc/portage/patches/net-wireless/broadcom-sta-6.30.223.271-r5 ...
 *   fix-calculate-sources-5.6.patch ...                               [ ok ]
 * User patches applied.


A noter, sous Calculate, le binaire est téléchargé. Il faut donc réémerger depuis les sources en désactivant la récupération des binaires :
Code BASH :
FEATURES="-getbinpkg" emerge -av paquet


Exclure un logiciel dans la mise à jour



Par exemple, quand on met à jour avec :

Code BASH :
emerge -avuDN --with-bdeps=y @world


on peut avoir un souci avec un logiciel.

Si on veut en exclure un de la liste (exemple mixxx) on utilisera --exclude :

Code BASH :
emerge -avuDN --with-bdeps=y @world --exclude mixxx



Mettre à jour un fichier de configuration



Sous Calculate Linux, on travaille avec des modèles. Si on souhaite modifier par exemple le fichier de config de GRUB, ne pas modifier le fichier /etc/default/grub mais créer le fichier modèle ayant le même nom mais finissant par .clt (Exemple : /etc/default/grub.clt On peut copier le grub en grub.clt)
Modifier ensuite ce qu'on veut dans ce fichier .clt puis mettre à jour les fichiers de configuration :
dispatch-conf -f
Ensuite, appeler la commande cl-XX qui utilise ce fichier.
Les différences sont affichées à l'écran et on applique les modifications avec u.
Exemple :
Code BASH :
cl-setup-boot 
 * On configure les paramètres d'amorçage ...
 * Creating Host-Only initramfs ...  
 * Host-Only initramfs has been created  
 * Configuring the grub  
--- /etc/default/grub2015-07-25 10:20:11.224213906 +0200
+++ /etc/default/._cfg0000_grub2015-07-25 10:20:32.218213023 +0200
@@ -1,5 +1,5 @@
 #------------------------------------------------------------------------------
-# Modified Calculate-core 3.3.2.7
+# Modified Calculate-core 3.3.3.7
 # Processed template files:
 # /var/lib/layman/calculate/profiles/templates/3.3/2_ac_install_merge/sys-boot/grub/default.grub
 # /var/lib/layman/calculate/profiles/templates/3.3/3_ac_install_live/1-merge/sys-boot/grub/new-3.3.1-splashutils/default.grub.default
@@ -70,7 +70,7 @@
 #GRUB_DISABLE_RECOVERY=true
 GRUB_DISABLE_RECOVERY=true
 GRUB_DEFAULT=saved
-GRUB_TIMEOUT=10
+GRUB_TIMEOUT=2
 GRUB_GFXMODE="1024x768"
 GRUB_BACKGROUND="/boot/grub/grub-calculate.png"
 GRUB_COLOR_NORMAL="white/black" 
 * (1 of 1) -- /etc/default/grub
Sélectionnez une action de configuration : (Supprimer le nouveau[z]/Utiliser le nouveau[u]/Suivant[n]): 
 * Installation du chargeur d'amorçage ...                                [ ok ]
 * Changement d'ordonnanceur d'E/S ...                                    [ ok ]
 * Les paramètres d'amorçage ont bien été configurés !



Modules



Pour lancer automatiquement des modules au démarrage de la machine, éditer le fichier /etc/conf.d/modules et y ajouter dans la ligne non commentée les modules séparés par un espace:
Exemple avec mon fichier dans lequel j'ai ajouté les 3 modules virtualbox:
Code BASH :
modules_3="acpi-cpufreq cpufreq_conservative cpufreq_powersave cpufreq_userspace mperf speedstep-lib vboxdrv vboxnetflt vboxnetadp"

En cas de MàJ du noyau: (voir avec XK ?)
Code BASH :
genkernel --oldconfig all


Profiles



Voir son profil (c'est l'étoile qui est notre profil actuel)
Code BASH :
eselect profile list
<sortie ommise>
  [15]  calculate:calculate/desktop/CLD/amd64 *
  [16]  calculate:calculate/desktop/CLD/amd64/binary
<sortie ommise>

Binary = paquets déjà précompilés => Install rapide.
amd64 = paquets sources compilés sur la machine => Install lente.
Définir un profile (ex le n° 15):
Code BASH :
eselect profile set 15


La pratique en vidéo



N'hésitez pas à sélectionner la qualité HD en 720p ou 1080p !

Cette page a été vue 76923 fois