6 votes

Réparation du avertissement "une ressource scellée est manquante ou non valide"

J'ai changé l'icône de l'application de mon éditeur Eclipse, et cela cause l'apparition d'une boîte de dialogue de confirmation me demandant si j'autorise le programme à accepter les connexions réseau entrantes. J'ai déjà rencontré cela auparavant, mais à ce moment-là, j'ai réussi à m'en débarrasser d'une manière ou d'une autre. Maintenant, je n'y arrive plus.

Voici la sortie de l'utilitaire codesign:

$ codesign -vv /Applications/Indigo/Eclipse.app/
/Applications/Indigo/Eclipse.app/: une ressource scellée est manquante ou non valide
/Applications/Indigo/Eclipse.app/Contents/Resources/Eclipse.icns.bak: ressource manquante

Est-ce que quelqu'un sait comment je peux désinstaller totalement Eclipse afin que le système d'exploitation oublie ce fichier "Eclipse.icns.bak"?

Merci!

1voto

flamingLogos Points 3637

Ok, j'ai réussi à faire ça. C'est un peu sale mais jusqu'ici assez sûr.

La base de données contenant ces informations est située sous /var/db/DetachedSignatures. C'est une base de données SQLite, donc elle peut être facilement modifiée en utilisant l'outil sqlite3 intégré. Voici une session exemple qui supprime les entrées correspondant au mot-clé "eclipse" :

# nous utilisons sudo, donc faites attention
$ sudo sqlite /var/db/DetachedSignatures

# quelles tables contient-elle ?
sqlite> .tables
code global

# quelles sont les définitions de colonnes dans code ?
sqlite> .schema code
CREATE TABLE code ( 
        id integer primary key on conflict replace autoincrement not null, 
        global integer null references global (id), 
        identifier text not null, 
        architecture integer, 
        identification blob not null unique on conflict replace, 
        signature blob not null, 
        created text default current_timestamp 
    );
CREATE INDEX architecture_index on code (architecture);
CREATE INDEX id_index on code (identification);
CREATE INDEX identifier_index on code (identifier);

# quelles sont les définitions de colonnes dans global ?
sqlite> .schema global
CREATE TABLE global ( 
        id integer primary key on conflict replace autoincrement not null, 
        sign_location text not null, 
        signature blob null 
    );
CREATE INDEX location_index on global (sign_location);

Ce qui nous intéresse sont code.identifier et global.sign_location.

sqlite> SELECT * FROM code WHERE identifier LIKE "%eclipse%";
sqlite> SELECT * FROM global WHERE sign_location LIKE "%eclipse%";

Jetez un œil et faites une sauvegarde avant de supprimer toutes les entrées correspondantes des deux requêtes.

sqlite> DELETE FROM code WHERE identifier LIKE "%eclipse%";
sqlite> DELETE FROM global WHERE sign_location LIKE "%eclipse%";

J'ai également redémarré mon ordinateur portable, bien que je ne sache pas si c'est vraiment nécessaire.

C'est tout !

1voto

Une autre solution de contournement consisterait à remplacer la signature de code non valide par une nouvelle :

sudo codesign --force --sign - /Applications/SomeApp.app

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X