#1 Le 06/05/2020, à 10:40
- bruno
[Résolu] Comportement de apt avec * différent sous 20.4 et précédentes
Bonjour,
Suite à cette discussion, je remarque une différence de comportement de apt avec glob sur Ubuntu 20.04.
Avant 20.04 :
# apt purge truc*
propose de supprimer tous les paquet dont le nom commence par toto. C'est conforme à ce qu décrit la page de man :
install, remove, purge (apt-get(8))
La commande réalise l'action requise sur un ou plusieurs paquets spécifiés avec regex(7), glob(7) ou avec la
correspondance exacte.
Sur 20.04 :
# apt purge toto*
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
E: Impossible de trouver le paquet toto*
Pour que cela fonctionne il faut passer par une regexp :
# apt purge '^toto*'
ou plus simplement :
# apt purge ^toto
Je n'arrive pas à trouver d'où vient cette différence de comportement, sachant que sur les deux machines testées les options du shell sont les mêmes
--
Résolu par Kamaris en #6
Dernière modification par bruno (Le 08/05/2020, à 13:00)
#2 Le 06/05/2020, à 10:50
- pingouinux
Re : [Résolu] Comportement de apt avec * différent sous 20.4 et précédentes
Bonjour,
Il y a peut-être un cas où, dans le répertoire d'où tu lances la commande, le nom de certains fichiers commence par toto.
Dernière modification par pingouinux (Le 06/05/2020, à 10:51)
Hors ligne
#3 Le 06/05/2020, à 11:41
- bruno
Re : [Résolu] Comportement de apt avec * différent sous 20.4 et précédentes
Non, ce n'est pas le cas et la commande a été testée avec différents noms de paquets (c'est sans risque, il suffit de répondre N à la question posée)
#4 Le 06/05/2020, à 14:01
- pingouinux
Re : [Résolu] Comportement de apt avec * différent sous 20.4 et précédentes
Est-ce que, dans les 2 cas, cette commande retourne la même chose ?
shopt nullglob
Hors ligne
#5 Le 06/05/2020, à 14:13
- bruno
Re : [Résolu] Comportement de apt avec * différent sous 20.4 et précédentes
Oui j'ai précisé dans le premier message que les options du shell étaient strictement les mêmes. C'est la première chose que j'ai vérifiée.
nullglob est sur off et surtout extglob sur on
#6 Le 08/05/2020, à 12:25
- kamaris
Re : [Résolu] Comportement de apt avec * différent sous 20.4 et précédentes
Je pense que l'explication se trouve dans le man de apt-get de focal :
Fallback to regular expressions is deprecated in APT 2.0, has been removed in apt(8), except for anchored expressions, and will be removed from apt-get(8) in a future version. Use apt-patterns(5) instead.
Mention qui n'apparait pas dans le man de apt-get de eoan (https://manpages.ubuntu.com/manpages/eo … get.8.html), car apt y est en version < 2.0 :
https://packages.ubuntu.com/eoan/apt : 1.9.4
https://packages.ubuntu.com/focal/apt : 2.0.2
Hors ligne
#7 Le 08/05/2020, à 12:44
- marcus68
Re : [Résolu] Comportement de apt avec * différent sous 20.4 et précédentes
Bonjour,
Avant 20.04 :
# apt purge truc*
propose de supprimer tous les paquet dont le nom commence par toto.
je me rappelle pas qu'un jour cette commande avait cet effet.
truc*
ça n'allais pas chercher les paquets commençant par truc, mais ceux qui contiennent tru avec aucun, un ou plusieurs c.
Sauf si un fichier s'appelle truc quelque chose dans le dossier ou la commande a été exécuté bien sûr.
Tu m'as mis le doute, mais après essai (apt 1.9.4) c'est bien ça :
sudo apt purge bcde*
Lecture des listes de paquets…
Construction de l'arbre des dépendances…
Lecture des informations d'état…
Le paquet « libcdebconf-dev » n'est pas installé, et ne peut donc être supprimé
Le paquet « libcdd-test » n'est pas installé, et ne peut donc être supprimé
...
Dernière modification par marcus68 (Le 08/05/2020, à 12:47)
Hors ligne
#8 Le 08/05/2020, à 12:59
- bruno
Re : [Résolu] Comportement de apt avec * différent sous 20.4 et précédentes
Merci kamaris !
Je n'avais pas vu la page de man de apt-get de focal. C'est effectivement l'explication de ce changement de comportement. Par contre la page de man de apt n'est pas à jour puisqu'elle continue de faire référence à regexp et à glob.
Je note donc l'utilisation directe de caractères jokers ou d'expressions régulières est appelée à disparaître et qu'il faudra désormais utiliser apt-patterns avec une syntaxe similaire à celle d'aptitude, ce qui est plutôt une bonne chose.
#9 Le 04/11/2020, à 14:23
- krodelabestiole
Re : [Résolu] Comportement de apt avec * différent sous 20.4 et précédentes
Merci kamaris !
Je n'avais pas vu la page de man de apt-get de focal. C'est effectivement l'explication de ce changement de comportement. Par contre la page de man de apt n'est pas à jour puisqu'elle continue de faire référence à regexp et à glob.
Je note donc l'utilisation directe de caractères jokers ou d'expressions régulières est appelée à disparaître et qu'il faudra désormais utiliser apt-patterns avec une syntaxe similaire à celle d'aptitude, ce qui est plutôt une bonne chose.
effectivement !
j'ai mis à jour la doc d'apt : https://doc.ubuntu-fr.org/apt-cli#patterns
mais pour la doc mysql ça m'étonne un peu que tu utilises la regex direct...
chez moi
apt list ^mysql-server ^mariadb-server
ne retourne rien par ex.
par contre pas de problème pour
apt list ~n^mysql-server ~n^mariadb-server
(~n = ~name)
sinon d'après cette réponse le wildcard * aurait été restauré avec apt 2.1.0 (et backporté sur 2.0.3)
mais étonnamment
apt list mysql-server\* mariadb-server\*
fonctionne toujours correctement sur mon apt 2.0.2 (focal)
nouveau forum ubuntu-fr on en parle là : refonte du site / nouveau design
profil - sujets récurrents - sources du site
Hors ligne
#10 Le 04/11/2020, à 15:48
- bruno
Re : [Résolu] Comportement de apt avec * différent sous 20.4 et précédentes
Bah le comportement de apt n'est pas cohérent
$ apt --version
apt 2.0.2ubuntu0.1 (amd64)
Avec apt list cela fonctionne mais pas avec apt remove ou purge.
$ sudo apt purge mysql-server\* mariadb-server\*
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
E: Impossible de trouver le paquet mysql-server*
E: Impossible de trouver le paquet mariadb-server*
La syntaxe que j'ai utilisé dans la doc MySQL fonctionne quelle que soit la version d'apt. Enfin jusqu'à présent, mais cela pourrait ne plus fonctionner dans le futur. J'ai donc modifié la doc mysql pour préciser les commandes suivant les versions d'Ubuntu utilisées.
Dernière modification par bruno (Le 04/11/2020, à 16:05)