Le Blog du Geek Joyeux

Plus moins vite tu codes, moins plus vite ça plante.

Mettre en place une seedbox automatisée

Publié le 12/01/2013 à 00:00

Il y a un moment déjà que j'utilise un système d'automatisation pour le téléchargement des séries TV. Voici ce que j'ai mis en place.

TL;DR

Utilisez TvShows2 pour surveiller les séries, automatisez l'envoi des fichiers .torrent vers la seedbox et gérez vos téléchargements avec Transmission.

Attention l'utilisation de TVShows2 est spécifique à Mac OS X. Ted semble une bonne alternative sous Linux mais je n'ai pas testé.

Utilisation avancée de Draper

Publié le 23/06/2012 à 00:00

Dans l'article précédent, je présentais Draper.

Dans cet articles j'ajouterai quelques trucs et astuces pour utiliser Draper de façon un peu plus avancée.

TL;DR

Utilisez decorate_association :comments dans ArticleDecorator pour décorer automatiquement les commentaires d'un article.

Incluez Draper::ModelSupport dans vos modèles pour les décorer en utilisant la syntaxe article.decorate.

size doesn't COUNT

Publié le 17/01/2012 à 00:00

Requêtes N+1

Lorsque vous développez avec Rails, vous devez bien sûr faire attention aux requêtes qui sont effectuées et surtout éviter les requêtes N+1.

Les requêtes N+1 sont celles qui sont lancées pour chaque élément d'une liste.

Versionner ses scripts de seeding avec versioned_seeds

Publié le 07/12/2011 à 00:00

Si vous vous retrouvez dans le besoin de faire des imports de données ou des insertions scriptées dans une application Rails, de nos jours vous n'avez pas vraiment d'autre choix que de créer des tâches rake (ou consorts) pour le faire.

Dans cette idée, j'ai écrit la gem versioned_seeds qui permet de stocker ces scripts dans un dossier spécifique et de les utiliser à la manière des migrations.

Utiliser rvm avec cron

Publié le 24/09/2011 à 00:00

Il y a quelques temps, j'avais besoin de lancer un script ruby avec cron. Le souci, c'est que sur mon serveur, tout est à base de rvm. De fait, cron ne sait pas trouver ruby puisque rvm est chargé par mon fichier .bashrc.

La petite astuce pour que ça marche, c'est de dire à cron de charger mon environnement pour ce script spécifiquement :

0 * * * * /bin/bash -l -c 'ruby mon_script.rb'

En clair, l'option -l permet de charger l'environnement bash et l'option -c indique la commande à exécuter.

Rendre git-diff plus précis

Publié le 19/09/2011 à 00:00

Git permet d'afficher différentes informations en couleur. Cela se fait dans le fichier de configuration, ~/.gitconfig.

[color]
  ui = true

Une des commandes concernées est git-diff. Cette coloration est bien pratique mais peut avoir ses limites. En effet, lorsque la différence sur une ligne se joue à quelques caractères seulement, il peut être difficile de détecter les modifications.

  Lorem ipsum dolor sit amet, consectetur adipisicing elit
  tempor incididunt ut labore et dolore magna aliqua.
- quis nostrud exercitation ullamco labaris nisi
+ quis nostrud exercitation ullamco laboris nisi
  consequat. Duis aute irure dolor in reprehenderit
  cillum dolore eu fugiat nulla pariatur. Excepteur
  non proident, sunt in culpa qui officia deserunt

Une petite astuce pour les voir plus précisément est l'utilisation de l'option --word-diff :

git diff --word-diff=color

Voici le résultat obtenu :

  Lorem ipsum dolor sit amet, consectetur adipisicing elit
  tempor incididunt ut labore et dolore magna aliqua.
  quis nostrud exercitation ullamco labaoris nisi
  consequat. Duis aute irure dolor in reprehenderit
  cillum dolore eu fugiat nulla pariatur. Excepteur
  non proident, sunt in culpa qui officia deserunt

L'option prend différentes valeurs qui peuvent être utiles selon les circonstances.

Installation de markItUp avec preview dans une application Rails3

Publié le 02/06/2011 à 00:00

Il est fréquent d'avoir besoin d'un éditeur dit WYSIWYG dans un site web. Il en existe de deux types. Les éditeurs pur WYSIWYG où vous éditez directement du HTML en mode rendu final et les éditeurs de syntaxe qui se basent par exemple sur le format Wiki, Textile ou Markdown.

markItUp est de la deuxième catégorie. Dans le cas d'un éditeur de syntaxe, il est toujours plus confortable de disposer d'une preview avant de valider ce qu'on a écrit.

Voici un petit tutoriel sur comment installer markItUp dans une appli Rails3 en utilisant Sinatra pour générer la preview.

La méthode inject en Ruby

Publié le 21/04/2011 à 00:00

En Ruby, il existe une méthode bien pratique nommée inject.

Elle s'utilise de la manière suivante :

puts (0..10).inject(0) do |somme, x|
  somme += x
end
# => 55

Dans l'exemple précédent, on part d'une valeur de 0 que l'on modifie à chaque tour. Le code suivant est équivalent :

somme = 0
(0..10).each do |x|
  somme += x
end
puts somme
# => 55

De manière classique, on peut s'en servire pour générer un tableau ou une table de hash de la manière suivante :

@articles.inject({}) do |hash, article|
  hash[article.title] = article.body
  hash
end

EDIT: Dans ce cas précis, il est préférable d'utiliser la méthode each_with_object comme ceci :

@articles.each_with_object({}) do |article, hash|
  hash[article.title] = article.body
end

Une autre utilisation interessante, est avec les booléens :

@plugins.inject(true) do |keep_going, plugin|
  keep_going &= plugin.some_method
end

On obtient donc en fin de parcours, true si tous les appels ont retourné true ou false si au moins un appel a retourné false.

Dans le cas où on veut stoper l'appel à inject dés qu'un appel retourne false, on peut utiliser l'instruction break :

@plugins.inject(true) do |keep_going, plugin|
  keep_going &= plugin.some_method or break(keep_going)
end

Cela permet de ne pas faire les appels suivants dés le premier retour négatif.

Utiliser un shell non standard sous mac

Publié le 28/12/2010 à 00:00

Chaque fois que j'installe un shell sous Mac OS X et que je le règle par défaut gràce à chsh, l'application Terminal refuse de se lancer et me dit :

Vous n'êtes pas autorisé à lancer cette application.
L'administrateur a donné à votre shell une valeur illégale.

Pour régler ce petit souci, il suffit d'ajouter le chemin vers votre shell dans le fichier /etc/shells :

# /etc/shells

# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/usr/local/bin/bash # bash installe avec homebrew
/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh

C'est une erreur que l'on ne rencontre pas lorsque l'on utilise un terminal comme iTerm 2...

Utiliser la sortie d'une commande comme un fichier en shell

Publié le 12/12/2010 à 00:00

Il arrive qu'on ait besoin d'utiliser la sortie d'une commande comme si c'était un fichier. Voici une petite astuce pour ne pas passer par un fichier temporaire.

diff <(ls /un/dossier/au/pif) <(ls /un/autre/dossier/au/pif)

Et voilà avec cette syntaxe on a la différence entre deux dossiers sans utiliser de fichiers temporaires.

Installer la gem mysql sous Snow Leopard

Publié le 04/11/2010 à 00:00

Sous Snow Leopard, l'installation de la gem mysql n'est pas toujours simple. Voici ce que j'utilise, sachant que mon MySQL est installé via le DMG fourni sur le site officiel.

export ARCHFLAGS="-arch i386 -arch x86_64";
sudo gem install mysql -v2.7 --no-rdoc --no-ri --         \
   --with-mysql-dir=/usr/local/mysql                      \
   --with-mysql-config=/usr/local/mysql/bin/mysql_config

Problème de police trop fine sous Snow Leopard

Publié le 10/10/2010 à 00:00

Il y a quelques jours j'ai réinstallé un Snow Leopard sur un Mac Mini.

Lorsque j'ai lancé iTerm et TextMate, la police Monaco que j'utilise dans les deux n'était pas tout à fait comme d'habitude, plus fine et moins agréable.

Cela vient d'un bug Snow Leopard qui ne reconnait pas toujours les LCD : il les voit comme des écrans CRT et désactive l'anti-aliasing sur les polices !

Pour régler ce souci, tapez simplement ceci dans une console :

defaults -currentHost write -globalDomain AppleFontSmoothing -int 2

La prochaine fois que vous lancerez iTerm ou TextMate, ça devrait être bon.

Travailler en case-sensitive sous Mac

Publié le 25/07/2010 à 00:00

HFS+, le système de fichiers utilisé par Mac OS X depuis un bout de temps déjà est, par défaut, case-insensitive. Il est toutefois possible, aujourd'hui, de choisir d'utiliser une version case-sensitive lorsque l'on installe OS X.

La plupart du temps, ça n'est pas spécialement gênant. Quand il s'agit de travailler cela peut vite devenir handicapant.

Désactiver la résolution interactive des conflits dans Subversion

Publié le 10/07/2010 à 00:00

Depuis la version 1.5 de Subversion, la résolution des conflits se fait de façon interactive lorsque l'on utilise svn update.

svn update
Conflict discovered in 'some/file/located/somewhere.rb'.
Select: (p) postpone, (df) diff-full, (e) edit,
        (h) help for more options:

Personnellement, je ne supporte pas ce nouveau mode. Je préfère de loin faire un update complet et corriger les conflits à posteriori.

Pour le faire de manière ponctuelle l'option --non-interactive permet d'obtenir ce comportement.

svn update --non-interactive

Pour le faire de manière permanente, éditez votre ~/.subversion/config et ajoutez la ligne suivante dans la section [miscellany] :

[miscellany]
interactive-conflicts = no

Rails - Utiliser Sass avec theme_support

Publié le 09/03/2010 à 00:00

J'ai eu l'occasion de me prendre un petit moment la tête aujourd'hui sur comment utiliser des feuilles de styles SASS au sein de thèmes dans une application Rails.

Pour la gestion des thèmes, j'ai utilisé themesupport_ qui permet de créer, pour chaque thème, un dossier ayant l'arborescence suivante :

un_theme
├── images
|   └── preview.png
├── javascripts
├── stylesheets
├── views
└── about.markdown

Ce que je cherchais à faire était de pouvoir mettre des fichiers SASS dans le dossier stylesheets, mais que les CSS compilées soient placées dans public/stylesheets.

Le plus simple moyen que j'ai trouvé pour faire ça, est d'ajouter le script suivant dans config/initializers/theme_sass.rb :

# :template_location est normalement une String, on la convertie donc en Array
Sass::Plugin.options[:template_location] = [[Sass::Plugin.options[:template_location], Sass::Plugin.options[:css_location]]]

# Pour chaque thème, on ajoute son dossier stylesheets à la liste des sources SASS
Theme.find_all.map(&:name).each do |theme|
  Sass::Plugin.options[:template_location] << ["#{RAILS_ROOT}/themes/#{theme}/stylesheets", Sass::Plugin.options[:css_location]]
end

Continuer d'ouvrir ses onglets en fin de liste sous Firefox 3.6

Publié le 25/01/2010 à 00:00

Depuis quelques jours maintenant, Firefox 3.6 est sorti. Cette nouvelle version apporte un certain nombre de nouveautés, dont certaines qui peuvent être déroutantes (<troll>le nouveau système de skins uselessfull par exemple ?</troll>).

Bref ! Une nouveauté est l'ouverture des onglets relatifs (ouverture d'un lien de la page courante dans un onglet) à côté de l'onglet courant et non plus à la fin de la liste. Tout cela n'aurait rien de bien gênant si cette fonctionnalité pouvait être désactivée grâce à une simple case à cocher...

Voici un moyen simple de revenir à l'ancien fonctionnement.

Ouvrez l'URL about:config.

Dans la zone de filtre saisissez insertRelated cela devrait laisser seulement une entrée :

Firefox 3.6 about:config - insertRelatedTabsAfterCurrent

Double-cliquez dessus pour passer sa valeur à false.

C'est tout. Les nouveaux onglets devraient s'ouvrir maintenant en fin de liste.

EDIT: Je viens de trouver un lien avec quelques astuces supplémentaires

Utiliser GetText côté Javascript avec Rails

Publié le 01/01/2010 à 00:00

En travaillant sur une petite application Rails, j'ai utilisé GetText pour l'internationalisation. Jusque là, pas de problème... Sauf au moment où j'ai voulu traduire un message côté client (autrement dit Javascript).

Je ne voulais pas faire d'appel AJAX pour chaque chaine à traduire.

Tout naturellement, j'ai cherché un plugin simple qui fasse le travail mais n'ai rien trouvé qui me convienne.

J'ai donc créé mon propre plugin, gettext_json.

Voici comment l'utiliser.

Deverouiller un groupe de fichiers sous Mac

Publié le 28/12/2009 à 00:00

Dernièrement, lors de la copie de fichiers depuis le disque dur d'une amie, je me suis retrouvé avec de nombreux fichiers verrouillés. Verrouillés au sens OS X du terme.

Il est possible pour chaque fichier d'afficher ses infos et de décocher la case de verrouillage.

Mais lorsque cela concerne une centaine, ou un millier de fichiers, d'un coup, cocher une simple case peut devenir quelque peu fastidieux.

Pour effectuer cette action en ligne de commande, il suffit d'utiliser la ligne suivante :

chflags nouchg <fichiers>

Utiliser Paperclip avec Rails sous Mac

Publié le 28/12/2009 à 00:00

Pour gérer l'upload de fichiers dans les applications Rails, une gem fréquemment utilisé est Paperclip. Récemment, lors du développement d'un projet, je me suis retrouvé confronté à un problème lors de l'envoie des fichiers. En effet, ça ne fonctionnait pas et je recevais un message d'erreur à chaque fois.

Erreur Paperclip

Après quelques recherches, j'ai fini par trouver que cette erreur venait du fait que mon application ne trouvait pas son chemin vers les outils d'ImageMagick dont Paperclip dépend au travers de Rmagick.

Pour résoudre ce problème, il suffit d'ajouter un initialiseur à l'application.

J'ai donc ajouté le fichier config/initializers/paperclip.rb contenant ceci :

Paperclip.options[:command_path] = '/usr/local/bin'

J'ai utilisé ce chemin car j'ai installé ImageMagick en utilisant Homebrew.

Ignorer les changements d'espaces dans un diff SVN

Publié le 14/11/2009 à 00:00

Lorsque l'on édite un fichier, il peut arriver qu'en plus de simples modifications, certaines portions, voire le fichier entier, soient re-indentées. Malheureusement, Subversion étant bête et discipliné, un svn diff montrera les lignes modifiées mais également les lignes simplement indentées.

Cela peut devenir gênant lorsque, par exemple, tout le fichier s'en retrouve changé.

Pour ignorer ces différences d'espaces lors d'un diff, la commande à utiliser est la suivante :

svn diff --extensions -bu

Problème des noms de fichiers avec accents dans Subversion sous OS X

Publié le 14/11/2009 à 00:00

Si vous utilisez des fichiers dont le nom contient des accents sur un dépôt SVN, vous avez de grandes chances de rencontrer quelques soucis sous Mac, si vous avez installé Subversion avec MacPorts. Le problème vient de la différence de stockage des caractères unicode entre les plateformes Unix et OS X.

Voici comment résoudre ce problème. C'est très simple, il suffit d'installer une variante du port subversion.

port install subversion +unicode_path

Si tout s'est bien passé, vous ne devriez plus avoir de problèmes.

Utiliser TextMate pour les messages de commit SVN ou Git

Publié le 27/09/2009 à 00:00

Lorsque l'on utilise un éditeur de texte particulier, on apprécie de pouvoir l'utiliser comme éditeur par défaut pour peu tout. Cela comprend également les messages de commit des outils tels que SVN ou Git.

Malheureusement, utiliser un éditeur graphique pour cela n'est pas toujours trivial.

La commande mate propose l'option -w qui permet de signifier que l'on veut attendre que TextMate en ait fini avec le fichier pour reprendre la main.

Il est vrai que TextMate intègre les fonctionnalités SVN et Git. Personnellement j'ai toujours préféré m'occuper de ces choses là en ligne de commande, chacun son truc...

Pour SVN

Il y a plusieurs façons de dire à subversion d'utiliser tel ou tel éditeur, le plus simple est de donner une valeur à la variable SVN_EDITOR :

export SVN_EDITOR="mate -w"

Pour Git

Pour rester dans l'utilisation habituelle de Git, on utilisera la commande suivante :

git config --global core.editor "mate -w"

Relever automatiquement les mails des sous dossiers dans Thunderbird

Publié le 27/09/2009 à 00:00

Depuis plusieurs années maintenant, j'utilise pour lire mes mails le logiciel Thunderbird. Pratique et efficace, il n'en est pas moins doté de certains défauts plus que gênants...

L'un d'eux est que Thunderbird ne relève pas automatiquement les mails dans les sous dossiers. Cela devient très gênant lorsque l'on utilise un filtrage des messages à la source, autrement dit, côté serveur.

Il existe toutefois une solution. Il est possible de préciser, pour chaque dossier, que l'on souhaite que Thunderbird vérifie les nouveaux messages.

Pour ce faire, il suffit de faire un clic droit sur un dossier puis sur Propriétés....

Dans la fenêtre qui s'ouvre, cochez la case Surveillez les nouveaux messages dans ce dossier :

Thunderbird properties

Voilà, à ce jour, le mieux que l'on puisse faire, mais c'est mieux que rien.

Comment se passer de <div class="clear"></div> ?

Publié le 05/08/2009 à 00:00

Dans mon travail de tous les jours, en tant que développeur web, je me retrouve confronté au problème dit de la guillotine lorsque j'utilise des éléments en float.

Pour illustrer mes propos voici un petit exemple de code et son résultat :

Code xHTML :

<div id="container">
  <div class="content"></div>
  <div class="content"></div>
</div>

Code CSS :

#container {
  border:       1px solid #000000;
  padding:      10px;
}

.content {
  background:   #999;
  float:        left;
  height:       100px;
  width:        100px;
  margin-right: 10px;
}

Voici le résultat obtenu :

Float with problem

En effet, dans 99% des cas, ce n'était pas le but recherché.

ssh complétion et alias

Publié le 05/04/2009 à 00:00

Voici deux petites astuces pour améliorer l'utilisation de ssh.

Complétion des noms d'hôtes

Pour obtenir la complétion des noms d'hôtes pour ssh et scp, il vous suffit d'installer le paquet bash-completion.

aptitude install bash-completion # Sous Debian et consorts
brew install bash-completion     # Sous Mac, avec homebrew
port install bash-completion     # Sous Mac, avec macport

Alias

Il est possible de créer des alias pour les hôtes sur lesquels on se ssh. Cela se fait en éditant le fichier ~/.ssh/config :

Host somehost
  HostName     some.host.with.long.name
  User         someuser
  IdentityFile ~/.ssh/other_id_rsa

Ceci permet de se connecter à l'hôte some.host.with.long.name avec l'utilisateur someuser en utilisant la clé ~/.ssh/other_id_rsa :

ssh somehost

Changer facilement la configuration proxy de SVN

Publié le 13/03/2009 à 00:00

Comme de nombreux développeurs, je suis très souvent amené à utiliser SVN (Subversion). Comme de nombreux développeurs toujours, je suis amené à partir en mission chez différents clients qui ont chacun leur proxy. Pour peu qu'on en ait déjà un au boulot ou chez soi, ça devient vite fatiguant de jongler entre ces différentes configurations.

Voici donc une petite astuce toute bête pour se rendre la vie facile.

Un peu de couleur dans les diffs SVN

Publié le 16/02/2009 à 00:00

Les diffs SVN peuvent parfois être longs et souvent pénibles à lire. Oui il y a des + et des - mais ça ne fait pas tout. Un bon moyen de simplifier cette lecture est l'utilisation de couleurs.

--break --

Un utilitaire bien sympathique, colordiff, permet justement de coloriser l'affichage des diffs. Packagé sous Debian ou disponible via Homebrew.

Voici comment l'utiliser pour les diffs SVN.

Pour une utilisation occasionnelle :

svn diff --diff-cmd colordiff

ou

svn diff | colordiff

Pour l'établir de manière globale, il suffit d'éditer le fichier ~/.subversion/config et d'ajouter dans la section [helpers] :

[helpers]
diff-cmd = colordiff

EDIT: Pour afficher la sortie de colordiff dans less, il faut utiliser l'option -R de ce dernier :

svn diff | less -R

Pour aller plus loin, un autre utilitaire permet de coloriser bien plus de choses, il s'agit de colorsvn.

Remettre GRUB apres une reinstallation de Windows

Publié le 16/01/2009 à 00:00

En général, quand on me parle de remettre GRUB après une installation de Windows, la première chose à laquelle je pense est “bah tu mets un live-cd, tu montes ta partition /, tu te chroot et grub-install”.

En somme, ça se résume effectivement à ça. Mais, parfois, tout ne se passe pas comme prévu. En effet, lors de ma dernière expérience, lorsque je montais la partition / de ma Debian, aucune trace de hda ou sda. Rien du tout ! La raison, je ne la connais pas et, pour être honnête, je n'ai pas cherché (création dynamique, quelque chose comme ça ?).

Bref, rien à faire, ils sont introuvables. Voici donc la solution dans ce cas :

Lancer le CD d'installation de Debian (marche probablement avec d'autre mais c'est ce que j'ai fait donc...). Après le lancement, continuer jusqu'au moment de la sélection du réseau, passer cette étape puis, un petit ALT-F2 (ou CTRL-ALT-F2), pour passer dans une console.

Ensuite, voici la marche à suivre (mon / se trouve dans /dev/sda6) :

$ mount /dev/sda6 /mnt
$ mount -o bind /dev /mnt/dev
$ mount -o bind /proc /mnt/proc
$ chroot /mnt
$ grub
Probing devices to guess BIOS drives. This may take a long time.
grub> root (hd0,5) # trouvé dans /boot/grub/menu.lst
grub> setup (hd0)
sortie de grub qui dit que tout s'est bien passé
grub> # CTRL+C pour sortir
$ update-grub
$ reboot

En ce qui me concerne, ça a fonctionné. Seul un dernier souci que j'ai eu, mes partitions /home et de swap ont été échangées. Donc, au redémarrage, si un problème se pose, pensez avant de tout envoyer valser à passer en console de maintenance, à tester le montage de vos partitions pour voir ce qu'il y a dedans et modifier votre /etc/fstab en conséquence...

Contrôler Amarok en ligne de commande grace a DCOP

Publié le 19/10/2008 à 00:00

Pendant longtemps, je me suis demandé comment on pouvait régler le son d'Amarok depuis la ligne de commande.

Quel intérêt, me direz-vous, alors qu'il suffit de cliquer pour s'en occuper ?

La réponse est simple. D'un naturel fainéant, il m'arrive de coder au lit et de mettre Amarok en lecture sur mon PC de bureau. Il est possible de contrôler Amarok en ligne de commande pour ce qui concerne la lecture (play, pause, stop, etc...). Le contrôle du son ne fait malheureusement pas partie des options. C'est là que DCOP sauve des vies...

VirtualBox - BSoD au demarrage de Windows

Publié le 04/07/2008 à 00:00

Si, comme moi, vous êtes passe à la nouvelle version de VirtualBox, celle de Sun, vous avez peut-être de petits problèmes avec vos anciennes VM Windows.
Voici comment résoudre le problème du BSoD juste après l'affichage du logo Windows.

La manipulation est relativement simple. Il vous suffit d'aller des les réglages de votre VM. Puis, dans la partie General > Advanced > IDE Controller Type, de choisir PIIX3 a la place de PIIX4.

réglages à effectuer dans VirtualBox

Et voilà le tour est joué !

Utiliser plusieurs fois le meme VDI sous VirtualBox

Publié le 24/04/2008 à 00:00

Pendant un instant, j'ai crus qu'il n'était pas possible d'utiliser plusieurs fois un même fichier VDI avec VirtualBox.

En effet lorsque je copiais simplement une machine virtuelle, VirtualBox me disait que cette machine était déjà enregistrée.

Cette idée allant à l'encontre du principe même de la virtualisation, je me suis penché sur le problème.

Il se trouve que VirtualBox est livré avec un l'utilitaire VBoxManage qui permet différentes actions sur les fichiers VDI dont le clonevdi qui justement répond au besoin de copie des machines virtuelles.

La commande suivante permet de créer un clone de MachineEnEntree :

VBoxManage clonevdi MachineEnEntree.vdi MachineEnSortie.vdi

Un man kikoolol

Publié le 24/04/2008 à 00:00

Si vous êtes intéressé par un man en couleurs, voici un moyen de l'obtenir.

Commencez par installer most. Most est un pager assez sympa dans le style de more et less.

sudo aptitude install most

Pour faire un simple test.

man -P most commande

Si ça vous plaît et que vous comptez le garder voici la marche à suivre.

sudo update-alternatives --config pager

Choisissez most

Si most vous plaît mais que les couleurs vous insupportent vous pouvez les désactiver en réglant la variable d'environnement MOST_SWITCHES
(dans votre .bashrc / .zshrc par exemple)

export MOST_SWITCHES="-C"