Ok, sono riuscito a farlo. È sporco ma abbastanza sicuro finora.
Il database contenente tali informazioni si trova in /var/db/DetachedSignatures
. Questo è un database SQLite, quindi può essere facilmente modificato usando lo strumento sqlite3 integrato. Ecco una sessione di esempio che elimina le voci che corrispondono alla parola chiave "eclipse":
# we're using sudo, so be careful
$ sudo sqlite /var/db/DetachedSignatures
# what tables does it contain?
sqlite> .tables
code global
# what are the column definitions in 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);
# what are the column definitions in 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);
Ciò che ci interessa sono code.identifier
e global.sign_location
.
sqlite> SELECT * FROM code WHERE identifier LIKE "%eclipse%";
sqlite> SELECT * FROM global WHERE sign_location LIKE "%eclipse%";
Dai un'occhiata e crea un backup prima di eliminare tutte le voci corrispondenti da entrambe le query.
sqlite> DELETE FROM code WHERE identifier LIKE "%eclipse%";
sqlite> DELETE FROM global WHERE sign_location LIKE "%eclipse%";
Ho anche riavviato il mio laptop, anche se non so se sia davvero necessario.
Questo è tutto!