Skip to content

Linux Attitude

Le libre est un état d'esprit

Archive

Tag: Debian

Niveau :      
Résumé : debsums ; dpkg -S ; apt-get install --reinstall

Si vous avez bidouillé une debian en installant un logiciel sans passer par dpkg par exemple, ou si quelqu'un vous a fait une mauvaise blague et qu'il y a des problèmes dans les logiciels installés, alors il y a un moyen pour vérifier si le problème vient d'un fichier modifié :

$ apt-get install debsums
$ debsums -c

Debsums est un outil debian qui fait un hash de tous les fichiers installés par des paquets debian et le compare au hash provenant du paquet original. L'option -c permet de lister tous les fichiers qui posent problème. Cela ne vous prémunit pas des attaquants qui pourraient aussi modifier la base des paquets, mais c'est utile pour toute manipulation plus ou moins volontaire du système.

Une fois la liste des fichiers modifiés récupérée, il nous reste à trouver dans quel paquet se trouvait le fichier en question :

$ dpkg -S /bin/ls # nous indique que ls est dans le paquet coreutils

Et maintenant passons à l'étape réparation :

# retélécharge et réinstalle tous les binaires d'un paquet déjà installé
$ apt-get install --reinstall lepaquet

Et pour ceux qui voudraient faire une réinstallation complète de leur distribution :

$ dpkg --get-selections | grep install | awk '{print $1}' | xargs  apt-get install --reinstall --yes

Mais comme dit le commentaire ci-dessous cela ne marche que si vous ne faite pas de pinning et si votre distribution est à jour. La commande suivante permet de ne pas changer les versions des paquets :

$ dpkg -l | grep ^ii | awk ‘{print $2″="$3}’ | xargs apt-get install -reinstall -s -t release-cible

Niveau :      
Résumé : debootstrap --foreign ; debian.apk

Android is Not GNU

Maintenant qu'on est root, on peut faire tout ce qu'on veut sur notre android. Mais il faut bien avouer que busybox est assez limitée pour les habitués des systèmes GNU que nous sommes.

C'est pourquoi nous allons mettre un système GNU complet sur notre android. Et de préférence sans influer sur la bonne marche du téléphone.

Pour cela, il faut laisser tourner l'android tel quel, et surtout garder son noyau. Mettre un 2e système sur un noyau qui tourne, on sait faire, dans sa version la plus simple ça s'appelle un chroot, c'est disponible de base et c'est exactement ce dont on a besoin.

Notez que les commandes indiquées ici se basent sur un shell et les commandes fournies par busybox telles qu'installée dans l'article précédent. Vous pouvez vous en passer, mais quelques adaptations seront nécessaires (par exemple -o bind à la place de --bind).

Comment qu'on fait ?

Comment créer un chroot sans se presser ?

Choisissons (au hasard) la distribution debian. Elle nous propose ... wait for it ... un créateur de chroot. Il s'appelle debootstrap.

Seul problème nous ne pouvons pas le lancer directement sur le téléphone. Il faut donc le lancer sur une autre machine. Et à moins d'avoir une machine arm sous le coude, nous ne serons pas sur la bonne architecture.

Heureusement debian est bien structuré et debootstrap a tout prévu. Nous allons le lancer 2 fois. La première fois sur notre machine habituelle :

$  debootstrap --foreign --arch armel wheezy mydebian 

Pour ceux qui n'ont pas debian, sachez qu'il est possible de télécharger et d'exécuter debootstrap sur n'importe quel autre linux.

Et pour ceux qui voudraient essayer une autre méthode, suivez ce lien : http://wiki.debian.org/EmDebian/Cro...


continue reading...

Niveau :      
Résumé : Debian 5.0

Vous n'êtes pas sans savoir que la dernière debian est sortie ce week-end, en pleine St-Valentin. Celle-ci s'appelle Lenny comme les jumelles de Toy Story.

Plein de belles choses dans cette distributions, je ne vais pas vous refaire le topo.

Donc vous êtes actuellement en etch et vous voulez faire une mise à jour. Comment faire ? C'est assez simple, mais c'est l'occasion d'expliquer le mécanisme de mise à jour. Maintenant que vous savez à quoi ressemblent les miroirs et les paquets debian

Contenu du miroir

Pour mettre à jour, vous changez le nom de la distribution dans /etc/apt/sources.list. Remplacez etch par lenny, vous aurez quelque chose comme :

deb http://mir1.ovh.net/debian/ lenny main contrib non-free
deb-src http://mir1.ovh.net/debian/ unstable main

deb http://security.debian.org/ lenny/updates main contrib non-free

Ce qui veut dire que vous utilisez le miroir mir1.ovh.net, ayant pour racine debian /debian, avec la version lenny de debian, et les sections main contrib et non-free de cette version.

Remarquez qu'il n'y a aucun problème à utiliser les sources unstable avec les paquets stable. La ligne source n'est utilisée que pour la commande apt-get source.

  • Le choix du miroir vous permet d'être le plus rapide possible dans votre mise à jour
  • Le choix de la racine ne vous est pas donné, mais dépend du miroir
  • Le choix de la version vous permet d'être le plus à jour par rapport aux paquets disponibles
  • Le choix des sections vous permet d'être plus ou moins libre sur les logiciels installés

continue reading...

Niveau :      
Résumé : .deb

Connaissez-vous le format des paquets debian ? Non ? alors je vais vous couper la tête !

Debian a bien réfléchi son format de paquet dès le début. Les contraintes principales étant qu'il soit lisible avec des outils de base unix, c'est-à-dire qu'on peut les lire même si on n'est pas sous debian, qu'on puisse le faire évoluer (tiens il faut ajouter un champ pour mettre une capture d'écran...), et qu'on puisse rapidement lire les données importantes sans tout extraire.

Partant de là, une solution a été trouvée à base de tar, gz, ar et de fichier texte. Vous verrez, c'est beau.

Récupérer un fichier deb

Commençons par trouver un fichier. Si vous êtes sur une debian faites aptitude download monpaquet mais c'est un peu de la triche.

On va plutôt expliquer l'architecture des miroirs debian (une * devant les répertoires les plus intéressants) :

ftp.<pays>.debian.org :
|- debian (la racine)
  |- dists (la définition des distributions)
    |- <distro> (la version genre sid)
      |- Contents-<archi>.gz (mapping entre fichier et paquets)
      |- main (les paquets officiels de chez debian)
        |- binary-</archi><archi> (les paquets pour cette architecture)
          |- Packages.gz (fichier compressé listant les paquets)
*       |- installer-</archi><archi> (toutes les versions possibles des installeurs debian)
        |- debian-installer (les paquets spécifiques au système d'installation debian, au format udeb)
      |- contrib (les paquets qui dépendent de non-free)
        |- ...
      |- non-free (les paquets non libre donc non supportés par debian)
        |- ...
  |- pool (les paquets eux-mêmes)
    |- main (les paquets officiels de chez debian)
      |- a,b,c, ... (un répertoire pour chaque première lettre de nom de paquet, attention les libs sont séparées)
*       |- <paquet> (un répertoire par nom de paquet source)
          |- </paquet><paquet>.deb (un fichier par paquet binaire)
          |- </paquet><paquet>.dsc (un fichier par paquet source)
          |- </paquet><paquet>.diff.gz (un fichier par paquet source)
          |- </paquet><paquet>.orig.tar.gz (un fichier par paquet source)
    |- contrib (les paquets qui dépendent de non-free)
      |- ... 
    |- non-free (les paquets non libre donc non supportés par debian)
      |- ... 
  |- ... 

Et hop on récupère notre .deb dans /debian/pool/main/p/paquet/paquet_1.0_i386.deb


continue reading...

Niveau :      
Résumé : debconf-get-selections ; dpkg-reconfigure ; debconf-set-selections

Lorsque vous installez un paquet sous debian, dpkg, apt, aptitude (ou autre) vous pose parfois quelques questions. Mais lorsque vous mettez ce paquet à jour il ne vous les repose pas même s'il en a besoin.

En réalité c'est debconf qui gère les réponses à ces questions. Il vous les pose, puis enregistre les réponses dans /var/cache/debconf/config.dat pour les redonner au paquet lorsqu'il en a besoin. Remarquez que vous pouvez vous-mêmes en avoir besoin, par exemple pour savoir ce que vous avez répondu aux questions. La commande debconf-get-selections vous donne toutes les informations

# pour le paquet postfix uniquement
$ debconf-get-selections | grep -B1 "^postfix "

Notez que si vous voulez changer ces réponses, ce n'est pas debconf-set-selections, mais dpkg-reconfigure que vous devrez utiliser (pour que les réponses soient réellement prises en compte :

$ dpkg-reconfigure postfix

Maintenant supposons que vous ayez déjà répondu à ces questions sur une machine et que vous voudriez éviter de recommencer sur toutes les machines que vous allez installer. Cette fois nous allons utiliser debconf-set-selections qui préenregistre les réponses. Debconf ne vous les posera donc pas lors de l'installation :

# sur la machine déjà installée
$ debconf-get-selections | grep "^postfix " > conf.txt
 
# sur la nouvelle machine
$ debconf-set-selections < conf.txt
$ apt-get install postfix

C'est ce qu'on appelle le preseed et c'est grâce à ça qu'on peut installer des centaines de machines sans avoir besoin d'être devant l'écran.