dpkg et apt, rpm et dnf
Pour installer un fichier .deb ou .rpm, il existe 2 manières de procéder. La première est d’utiliser le gestionnaire de paquet de bas niveau inclus dans le système (dpkg pour les systèmes basés sur Debian / Ubuntu et rpm pour les systèmes basés sur Red Hat/Fedora). Une autre manière est d’utiliser l’interface de gestion de paquets de haut niveau comme apt pour la Debian family et dnf pour la Red Hat family (sudo apt install ./file.deb
ou sudo dnf ./file.deb
). Et il est possible de taper seulement les premières lettres de de fichier et ensuite sur la touche TAB pour activer l’autocomplétion du nom automatiquement plutôt que de tout taper.

Mais, parce-qu’il y a toujours un « mais », sur Linux Mint cette autocomplétion n’est pas activée. Il est possible de copier-coller l’intégralité du nom de fichier, ça fonctionne. Par contre la touche TAB de complètera pas automatiquement le nom comme vu plus haut. Nous allons voir 2 manières de réactiver cette fonctionnalité utile.
Préparation
Afin de faire le test, vous pouvez simplement prendre le fichier deb de Google Chrome Developer comme je vais le faire ici. Si vous préférez utiliser autre chose, vous pouvez télécharger le fichier deb de votre choix sur pkgs.org.
Méthode simple: Déplacer le fichier de conf de apt version Mint
Si vous souhaitez juste retrouver le fonctionnement habituel de apt, celui qu’on retrouve sur Debian, Ubuntu, et autres distributions basées sur Debian, vous pouvez simplement déplacer le fichier créé par les développeurs de Linux Mint.
Comme il faut toujours prévoir l’imprevisible, vous pouvez créer un dossier backup dans le dossier /etc pour ensuite y mettre le fichier de conf en question.
sudo mkdir -p /etc/backup
sudo mv /etc/bash_completion.d/apt-linux-mint /etc/backup
Fermez le terminal et ouvrez le à nouveau (ou tapez juste bash).
Vous pouvez maintenant taper sudo apt install ./goo
et appuyer ensuite la touche TAB, le nom du fichier est complété automatiquement.

Méthode plus velue: ajouter une fonction à ce fichier
Si vous préférez laisser ce fichier à sa place habituelle, vous pouvez tout d’abord ouvrir le fichier de config vu plus haut:
sudo nano /etc/bash_completion.d/apt-linux-mint
Maintenant vous pouvez y ajouter la fonction suivante à la fin du fichier (Gist ici):
_apt_mint_file_completion()
{
local cur prev
COMPREPLY=()
_get_comp_words_by_ref -n : cur prev
# If the previous word is 'install' and the current word starts with ./ or /
if [[ "$prev" == "install" && ( "$cur" == ./* || "$cur" == /* ) ]]; then
COMPREPLY=( $(compgen -f -- "$cur") )
return 0
fi
}
complete -o filenames -F _apt_mint_file_completion apt
Comme pour la précédente méthode, fermez le terminal, ouvez, testez. Tout devrait fonctionner.
Pour les plus curieux qui souhaitent comprendre comment ça fonctionne, voici quelques détails.
Explication de code
_apt_mint_file_completion() {
local cur prev
COMPREPLY=()
_get_comp_words_by_ref -n : cur prev
- Déclaration de la fonction :
_apt_mint_file_completion
- Variables locales :
cur
(mot courant),prev
(mot précédent) - Initialisation :
COMPREPLY
est la variable spéciale contenant les suggestions d’auto-complétion. - _get_comp_words_by_ref : Fonction Bash qui extrait le mot courant (
cur
) et le mot précédent (prev
) de la ligne de commande.
# Si le mot précédent est 'install' et que le mot courant commence par ./ ou /
if [[ "$prev" == "install" && ( "$cur" == ./* || "$cur" == /* ) ]]; then
COMPREPLY=( $(compgen -f -- "$cur") )
return 0
fi
}
- Condition : On vérifie si l’utilisateur tape
apt install
et que ce qu’il est en train de compléter commence par./
ou/
(donc un chemin de fichier local). - compgen -f — « $cur » : Génère la liste des fichiers correspondant à ce chemin (auto-complétion de fichiers).
- COMPREPLY=( … ) : On remplit la liste des suggestions avec les fichiers trouvés.
- return 0 : On sort de la fonction si la condition est remplie.
complete -o filenames -F _apt_mint_file_completion apt
- complete : Commande Bash pour activer l’auto-complétion.
- -o filenames : Indique que l’auto-complétion doit traiter les résultats comme des noms de fichiers (permet l’échappement des espaces, etc.).
- -F _apt_mint_file_completion : Utilise la fonction définie plus haut pour générer les suggestions.
- apt : Cible la commande
apt
.
J’ai jamais vraiment compris pourquoi les devs de Linux Mint ont supprimé cette fonctionnalité mais vous savez maintenant comment la rétablir. La magie de l’open source!