Estou usando chegando a dois meses de uso, e queria aproveitar e fazer o primeiro post a respeito, sobre umas experiências que tive a respeito da instalação e desinstalação de aplicações. Todo usuário Windows que se preze vai procurar no painel de controle aquele velho icone de desinstalar aplicativos, e vai se surpreender quando descobrir que ele simplesmente não existe. Aí vem a pergunta: como raios vou desinstalar essa aplicação que eu não quero mais? A resposta padrão do seu guru Mac da esquina vai ser: "Não precisa desinstalar, é só jogar a aplicação na lixeira". Será que é só isso?
Para aplicações simples, realmente jogar na lixeira resolve 99% do problema (o resto são as preferências das aplicações, que normalmente ficam na sua conta de usuário, no diretório ~/Library/Preferences, com o nome de
. AppTrap
. AppZapper
. AppCleaner
Para aplicações simples, daquelas pequenas que você baixa na Net, este procedimento resolve bem o problema. Porém para aplicações maiores e mais complexas, a lista de arquivos que é instalada, é muito maior do que arquivos de preferências. Um bom exemplo são aplicações que mexem com audio e vídeo, que normalmente vêm com muitas bibliotecas de imagens, videos e audio. Normalmente essas bibliotecas possuem diversos arquivos e podem ocupar muito espaço no seu disco e você nem estar sabendo. Então, como descobrir todos os arquivos que um programa instala?
Para responder essa pergunta, temos que aprender como funciona o processo de instalação de aplicações no Mac OS X. Existem basicamente três formas de instalação de programas no OS X:
. Copia da aplicação para o diretório de aplicações (/Applications): Esta é a forma mais simples e é muito comum para pequenas aplicações que baixamos da Internet. Nestes casos desinstalar é muito fácil, bastando jogar no lixo e apagando as preferências.
. Uso do Installer.app. O Installer é uma aplicação de instalação da própria Apple, que instala programas no formato .pkg. Normalmente você abre um CD/DVD, ou um arquivo de imagem baixado (.dmg, .cdr, .iso, .toast) e executa o arquivo ,pkg que automaticamente chama o Installer. Este irá perguntar onde vai instalar a aplicação, e depois irá copiar os arquivos.
. Instaladores proprietários. Um bom exemplo deste tipo de aplicação é o Microsoft Office. Nestes casos, junto com a instalação vem uma opção de desinstalar.
Existem outras formas de instalação (ports, etc), mas estas não serão cobertas aqui. A partir da lista acima, podemos ver que o maior problema são as aplicações que usam o Installer. Como saber tudo que ele copiou? Depois de muito pesquisar, descobri as seguintes informações, que são muito importantes:
Ao instalar uma aplicação, o installer guarda dois arquivos no diretório /private/var/db/receipts. Nesse diretório temos 2 arquivos para cada aplicação: um arquivo .bom e um arquivo .plist. O arquivo plist é um arquivo de preferências (Property List) das instalação, que pode ser aberto no Property List Editor. Ele contem informações sobre a instalação do aplicativo, como data de instalação, que aplicação instalou, nome do pacote, identificador, versão, etc. O arquivo bom (Bill Of Materials), contem todos os arquivos que foram instalados pelo pacote. Para visualizar o conteúdo, basta usar o comando "lsbom" em uma janela de terminal. Vamos tomar como o exemplo o NMAP, que instalei recentemente. No diretório /private/var/db/receipts temos os seguintes arquivos:
. org.insecure.nmap500.nmap.pkg.bom
. org.insecure.nmap500.nmap.pkg.plist
Abrindo o plist no Property List Editor, temos:

Listando o arquivo bom, temos:
. 40755 501/20
./usr 40755 0/0
./usr/local 40755 0/0
./usr/local/bin 40755 501/20
./usr/local/bin/nmap 100755 501/20 2865496 3830514557
./usr/local/share 40755 501/20
./usr/local/share/man 40755 501/20
./usr/local/share/man/man1 40755 501/20
./usr/local/share/man/man1/nmap.1 100644 501/20 175621 1607134230
./usr/local/share/nmap 40755 501/20
./usr/local/share/nmap/nmap-mac-prefixes 100644 501/20 309349 4022722137
[...]
Dessa forma podemos saber exatamente quais foram os arquivos instalados e removê-los. Por fim, não testei todos os "desinstaladores", mas não acredito que seja dificil encontrar o bom correspondente a uma aplicação, listar e remover os arquivos. Para reinstalar aplicações, basta apagar o .bom e o .pslist, que o installer não vai mais detectar a aplicação como instalada.
UPDATE: o comando pkgutil --pkgs lista os pacotes instalados, e o comando pkgutil --unlink
