# [SCRIPT] Gentoo sans Internet ou avec Internet bas-débit

## Magic Banana

À qui s'adresse ce script ?

Avant tout aux Gentoo sans Internet ou avec une connexion bas débit. Néanmoins presque tout le monde en a besoin à un moment ou à un autre (oubli de payer la facture du FAI, grillage du modem, problème à la mise à jour des pilotes de la carte réseau, etc.).

Il est nécessaire pour utiliser offline-emerge (c'est son petit nom) d'avoir un périphérique retirable (typiquement une clé USB) et d'avoir accès à un ordinateur de type *NIX (GNU/Linux, BSD, Mac OS X, etc.) connecté à Internet. Le périphérique retirable n'a pas besoin d'être consacré à offline-emerge : le script fait avec la place disponible.

Quel est son but ?

Offline-emerge permet de garder la puissance de la commande emerge sans avoir recours directement à Internet. Toutes les actions nécessitant d'aller chercher quelque fichier sur le réseau des réseaux listent à la place, sur le périphérique retirable, les URLS de ces fichiers. Un script sur le périphérique retirable s'occupe du téléchargement. De retour sur la Gentoo, une commande permet d'exécuter toutes les actions précédemment reportées. Malgré l'absence de connexion Internet, il est ainsi très facile de mettre à jour son arbre Portage, d'installer un nouveau logiciel ou de mettre à jour tout son système.

Et plus concrètement ça donne quoi ?

Un cycle d'utilisation typique :

Sur la Gentoo :

```
# offline-emerge -uDNpv world
```

```
# offline-emerge -uDN world
```

```
# offline-emerge =media-soud/listen-0.4.3
```

Comme vous l'aurez probablement compris, toutes les utilisations valides de emerge le sont aussi avec offline-emerge (à l'exception de l'option --sync comme nous le verrons par la suite). Les deux dernières commandes de cet exemple seront exécutées si tous les fichiers nécessaires sont présents sur la Gentoo. Autrement chacune donne lieu à la création d'un fichier portant le nom de la commande dans le répertoire actions sur le périphérique retirable. Avec les exemple ci-dessus, ces fichiers s'appelleraient "-uDN world" directement dans actions et "=listen-0.4.3" dans un sous-répertoire media-soud).

À tout moment il est possible de supprimer un de ces fichiers ce qui aura pour conséquence l'annulation de l'action correspondante. Ainsi si vous voulez renoncez à la mise à jour de votre système (mais pas à l'installation de Listen), vous n'avez qu'à supprimer le fichier "-uDN world" qui se trouve dans le répertoire actions de votre périphérique retirable.

Sur l'ordinateur connecté à Internet :

Il vous suffit d'exécuter le script nommé "fetch" qu'offline-emerge a créé sur votre périphérique retirable. En général, cela revient à double-cliquer sur le scripter et à choisir "Exécuter" ou "Exécuter dans un terminal".

fetch télécharge, dans un répertoire nommé "distfiles", l'ensemble des fichiers nécessaires à l'exécution des commandes qui ont été reportées. Il télécharge également le dernier instantané de l'arbre Portage si il est différent de celui actuellement sur la Gentoo.

Si la place vient à manquer, fetch laisse votre périphérique retirable plein à 100% de façon à ne pas avoir à recommencer depuis le début un téléchargement partiel ! Ceci peut vous sembler ennuyeux mais il n'en est rien. En effet, si vous avez besoin de place, vous pouvez, sans soucis d'intégrité, supprimer des sources dans distfiles ou un un instantanné de l'arbre Portage (forcément partiel). En aucun cas, offline-emerge ne tranférera un fichier partiellement téléchargé sur la Gentoo. Notez que vous pouvez aussi mettre à la main des sources dans distfiles. Elles seront transférées sur votre Gentoo.

De nouveau sur la Gentoo :

```
# offline-emerge --oldactions
```

Une commande pour tout faire. Nul besoin de se rappeler ce que vous avez précédemment demandé.

Pourquoi ne pas garder l'option --sync ?

Considérez les deux affirmations suivantes :

1) Mettre à jour son arbre Portage est utile lorsque l'on souhaite que les commandes suivantes utilisent le dernier arbre disponible.

2) Mettre à jour son arbre Portage nécessite forcément l'utilisation d'Internet et devrait donc être reporté par offline-emerge.

Il en résulte qu'un hypothétique offline-emerge --sync ne présente aucun intérêt. À la place, la mise à jour de l'arbre Portage est considérée comme une tâche quotidienne et ne demande donc aucune intervention particulière de l'utilisateur.

Comment installer offline-emerge ?

Un ebuild est disponible ici. Placez-le dans votre overlay (cf. le howto correspondant sur le wiki francophone) puis exécutez :

```
# emerge offline-emerge
```

Si vous êtes sans connexion Internet, il vous faut auparavant télécharger les sources à la main et les placer parmi vos distfiles.

Il vous faut enfin définir la variable MOVINGDIR dans /etc/make.conf. Cette variable doit contenir le chemin du répertoire sur votre périphérique retirable qu'offline-emerge utilisera. Par exemple vous pouvez faire :

```
# echo 'MOVINGDIR="/media/usbdisk/moving-portage"' >> /etc/make.conf
```

À la première utilisation de offline-emerge, les fichiers sur le périphérique retirable seront créés (en particulier le script fetch). Si vous n'avez rien de particulier à faire mais avez besoin du script fetch pour télécharger le dernier instantanné de l'arbre Portage, offline-emerge --oldactions fera cela très vite.

Et si je modifie quelque chose dans /etc/portage/packages.* ou /etc/make.conf ?

Cela ne présente aucun problème. Vos changements influeront offline-emerge de la même façon que emerge. Pour que ces changements soient appliqués aux actions précédemment demandées mais non encore exécutées, vous devez faire :

```
# offline-emerge --oldactions
```

Mes distfiles ou/et mon arbre Portage sont dans des répertoires non-traditionnels. Cela pose-t-il problème ?

Non.  :Very Happy: 

En savoir plus...

Offline-emerge est très facile à utiliser mais moins à expliquer...  :Embarassed: 

```
# man offline-emerge
```

Vous pouvez aussi poser vos questions dans ce fil.  :Wink: 

----------

