web-dev-qa-db-fra.com

xdg-open a cessé de fonctionner depuis la mise à jour de 16.04

xdg-mime query default inode/directory

me donne correctement:

nemo.desktop

comme je l’attendais et le veux.

Mais

xdg-open $HOME

Donne une erreur:

xdg-mime: mimetype argument missing
Try 'xdg-mime --help' for more information.
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/%{ <-- HERE (.*?)}/ at /usr/bin/run-mailcap line 528.
Warning: program returned non-zero exit code #66

... et ouvre Audacieux.

J'ai essayé de modifier la ligne run-mailcap pour échapper aux accolades, ce qui permet de supprimer ce message d'erreur. Mais cela ne résout pas le problème. Je reçois toujours "l'argument mimetype manquant" et le mauvais programme s'ouvre.

J'ai essayé de désinstaller Audacious, et il ouvre un autre programme incorrect (git-cola et chrome).

J'ai essayé Sudo apt-get install --reinstall xdg-utils et cela n'a rien changé.

edit: plus d'informations, le comportement décrit ci-dessus se produit à la fois dans Cinnamon et Gnome, mais pas dans Lubuntu LXDE. Dans LXDE, la requête donne nemo.desktop et xdg-open ne génère aucun message d'erreur dans le terminal, mais ouvre PCManFM (pas nemo).

Est-ce un indice de ce qui ne va pas ou comment y remédier?

7
beauxq

J'ai eu exactement le même problème.
Je pourrais résoudre le problème en installant simplement gvfs-bin (rien de plus) ...

Sudo apt install gvfs-bin

Je l'ai découvert, car dans les fichiers journaux de l'utilisateur , Amias doit se lire comme suit:
gvfs-open /home/amias

Mais gvfs-open n'était pas installé sur mon système.

Après avoir installé gvfs-bin, cela fonctionne!

Pour définir une nouvelle association de fichiers (par exemple, utiliser Nemo pour des dossiers), vous pouvez effectuer les opérations suivantes:

gvfs-mime --set inode/directory nemo.desktop

-À votre santé

2
Ben

D'accord, il semble qu'un correctif ait été publié pour les autres personnes ayant des problèmes similaires, à en juger par cet article: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=810587

Dans cet article, la personne rencontrait:

"L'attache gauche non échappée dans regex est obsolète, elle est passée dans regex; elle est marquée par <- HERE dans m /% {<- HERE (. *?)}/Dans/usr/bin/run-mailcap, ligne 528."

tout en exécutant nmh, qui semble similaire à votre message d'erreur, à l'exception d'un programme différent. Je recommanderais donc de courir:

Sudo apt-get upgrade;Sudo apt-get dist-upgrade

Comme le paquet affecté pourrait avoir une version mise à jour disponible avec le correctif.

J'espère que ça aide.

NOTE: Ceci mettra à jour tous les paquets qui peuvent être mis à jour (ce qui est une bonne chose malgré tout) alors ne soyez pas surpris si plusieurs paquets veulent être mis à jour.

0
Michael Knoll

Le problème est dû au fait que gvfs-info soit obsolète.

La ligne 635 dans xdg-mime utilise gvfs-info pour gnome. bash gvfs-info "$1" 2> /dev/null | grep standard::content-type | cut -d' ' -f4

J'ai essayé de réévaluer cette ligne manuellement, voici le résultat:

gvfs-info ~/test.pdf|grep standard::content-type| cut -d' ' -f4
This tool has been deprecated, use 'gio info' instead.
See 'gio help info' for more info.

/usr/bin/gvfs-info: 10: [: ~/test.pdf: unexpected operator
/usr/bin/gvfs-info: 10: [: ~/test.pdf: unexpected operator
application/pdf

Ensuite, j'ai essayé d'utiliser gio info:

gio info ~/test.pdf|grep standard::content-type| cut -d' ' -f4
application/pdf

J'ai donc temporairement changé le bloc pour info_gnome () dans xdg-mime utiliser gio info à la place et bam, cela a fonctionné!

631 info_gnome()                                                                     
632 {                                                                                
633     if gvfs-info --help 2>/dev/null 1>&2; then                                   
634         DEBUG 1 "Running gvfs-info \"$1\""                                       
635         gnomevfs-info "$1" 2> /dev/null | grep standard::content-type | cut -d' ' -f4 
636     Elif gnomevfs-info --help 2>/dev/null 1>&2; then                             
637         DEBUG 1 "Running gnomevfs-info \"$1\""                                   
638         gnomevfs-info --slow-mime "$1" 2> /dev/null | grep "^MIME" | cut -d ":" -f 2 | sed s/"^ "//
639     else                                                                         
640         DEBUG 1 "Running gio info \"$1\""                                        
641         gio info "$1" 2> /dev/null | grep standard::content-type | cut -d' ' -f4 
642     fi                                                                           
643     if [ $? -eq 0 ]; then                                                        
644         exit_success                                                             
645     else                                                                         
646         exit_failure_operation_failed                                            
647     fi                                                                           
648 }
0
ExistMe

xdg-open est un script shell permettant de le déboguer avec -x

bash -x /usr/bin/xdg-open $HOME

cela me donne une sortie comme celle-ci

+ check_common_commands /home/amias
+ '[' 1 -gt 0 ']'
+ parm=/home/amias
+ shift
+ case "$parm" in
+ '[' 0 -gt 0 ']'
+ '[' -z '' ']'
+ unset XDG_UTILS_DEBUG_LEVEL
+ '[' 0 -lt 1 ']'
+ xdg_redirect_output=' > /dev/null 2> /dev/null'
+ '[' x/home/amias '!=' x ']'
+ url=
+ '[' 1 -gt 0 ']'
+ parm=/home/amias
+ shift
+ case "$parm" in
+ '[' -n '' ']'
+ url=/home/amias
+ '[' 0 -gt 0 ']'
+ '[' -z /home/amias ']'
+ detectDE
+ unset GREP_OPTIONS
+ '[' -n Unity ']'
+ case "${XDG_CURRENT_DESKTOP}" in
+ '[' x = x ']'
+ '[' x '!=' x ']'
+ '[' xthis-is-deprecated '!=' x ']'
+ DE=gnome
+ '[' xgnome = x ']'
+ '[' xgnome = x ']'
+ '[' xgnome = xgnome ']'
+ which gnome-default-applications-properties
+ DE=gnome3
+ '[' xgnome3 = x ']'
+ DEBUG 2 'Selected DE gnome3'
+ '[' -z '' ']'
+ return 0
+ case "${BROWSER}" in
+ case "$DE" in
+ open_gnome3 /home/amias
+ gvfs-open --help
+ gvfs-open /home/amias
+ '[' 0 -eq 0 ']'
+ exit_success
+ '[' 0 -gt 0 ']'
+ exit 0

Ceci est issu d'une installation de xdg-open sur 64bit 16.04.

Je t'ai montré le mien maintenant, tu me montres le tien.

modifier:

en regardant votre résultat, je constate que open_generic_xdg_mime ne renvoie pas de type mime, ce qui empêche le script de choisir le bon service. Une solution de contournement simple consisterait à créer un script appelé open_generic_xdg_mime et à le faire exécuter 'fichier -i' sur son entrée. Cela vous donnera le type mime, mais vous devrez ranger un peu la sortie avec quelque chose comme une coupe. laissez-moi savoir si vous avez besoin d'un coup de main avec ça.

0
Amias