Como eu desinstalo qualquer arquivo do pacote Apple pkg?

51

Apesar das opiniões em contrário , nem todos os pacotes são instalados corretamente em apenas um diretório. Existe uma maneira de reverter o processo de instalação de um arquivo pkg, de preferência com o pacote original (ou de um repositório de informações sobre pacotes instalados)?

Especificamente, instalei o pacote PowerPC MySQL 5.4.1 em um Intel MacBook e gostaria de reverter isso de maneira limpa, recuperando a instalação 5.1 x86 que vejo ainda está lá, mas não está funcionando corretamente agora.

dlamblin
fonte

Respostas:

83

https://wincent.com/wiki/Uninstalling_packages_(.pkg_files)_on_Mac_OS_X descreve como desinstalar .pkg usando nativo pkgutil.

Trecho modificado

$ pkgutil --pkgs # list all installed packages
$ pkgutil --files the-package-name.pkg # list installed files

Após inspecionar visualmente a lista de arquivos, você pode fazer algo como:

$ pkgutil --pkg-info the-package-name.pkg # check the location
$ cd / # assuming the package is rooted at /...
$ pkgutil --only-files --files the-package-name.pkg | tr '\n' '\0' | xargs -n 1 -0 sudo rm -f
$ pkgutil --only-dirs --files the-package-name.pkg | tail -r | tr '\n' '\0' | xargs -n 1 -0 sudo rmdir

Desnecessário dizer que deve-se sempre tomar muito cuidado ao remover arquivos com privilégios de root. Particularmente, esteja ciente de que alguns pacotes podem atualizar componentes compartilhados do sistema; portanto, desinstalá-los pode realmente danificar seu sistema removendo um componente necessário.

Para pacotes menores, provavelmente é mais seguro remover manualmente os arquivos depois de inspecionar visualmente a lista de arquivos do pacote.

Aparentemente, havia uma --unlinkopção disponível no pkgutil, mas a partir do Lion não é mencionada na página de manual. Talvez tenha sido removido porque foi considerado muito perigoso.

Depois de desinstalar os arquivos, você pode remover o recibo com:

$ sudo pkgutil --forget the-package-name.pkg
brablc
fonte
11
Eu recomendo usar em rmdirvez de rm -r; pode-se também usar tacou tail -rreverter a lista de nomes de diretórios de modo que eles são apagados na correta ordem
Sam Mason
18
NÃO EXECUTE O sudo rm -ir PARTE. A lista inclui os diretórios pai! Portanto, se o pkg instalado algo em / usr / ... você irá remover ALL / usr /
FiloSottile
2
Alterei o comando para excluir diretórios a serem usados rmdir(que não exclui diretórios não vazios) e os utiliza tail -rpara listá-los em melhor ordem.
Br172 #
11
Ironicamente, ao usar o pgkutil, encontrei um uninstaller.pl escondido que eu poderia usar. Perfeito!
Cmdrainirgo
Uma coisa que os pkgs parecem não acompanhar são os links simbólicos criados pelos pkgs. É possível que limpar o pacote com as instruções acima (ou qualquer um dos métodos aqui) deixe links simbólicos quebrados para trás.
James McMahon
19

Integrado ao sistema, não há opção para desinstalar os arquivos usando um desinstalador, para que você possa fazer um desinstalador ou remover os arquivos manualmente.

O melhor método para determinar quais arquivos foram instalados é obter o original, .pkgse possível. Se isso não for possível, você também pode usar os recibos encontrados em /Library/Receipts. Seu maior problema é quando você lida com um arquivo .mpkgque contém vários .pkgarquivos, pois você terá que encontrar todos os .pkgarquivos separados nessa pasta (felizmente, não é tão difícil assim, quando classificado por data).

Depois de ter o .pkgarquivo (Recibo ou o arquivo de instalação completa), você poderá usar um utilitário para criar o desinstalador ou localizar os arquivos para removê-los manualmente:

Desinstalador

O Absolute Software InstallEase é um programa gratuito que pode criar desinstaladores a partir de arquivos .pkg existentes. Crie o .pkgarquivo do desinstalador (observação: você precisará das Ferramentas do desenvolvedor da Apple instaladas para criar o .pkgarquivo)

Manualmente

Usando um programa como o Pacifist ou um plugin do QuickLook como Suspicious Package, você pode ver quais arquivos estão instalados e em que local. Usando essa lista, você pode navegar manualmente para essas pastas e remover os arquivos. Eu usei esse método pessoalmente inúmeras vezes antes de descobrir o InstallEase, mas isso ainda é mais rápido se a instalação não estiver espalhada por muitos locais.

Chealion
fonte
Obrigado, enquanto os pacotes mysql 5.1 regulares deixaram um recibo, os pacotes mysql beta 5.4 não. Isso é um pouco estranho.
dlamblin 6/09/09
4
Uau, se eu soubesse disso, nunca teria instalado o .pkgpara começar. yu no Programas e Recursos OS X?
NobleUplift
10

você também pode desinstalar pacotes .pkg com o UninstallPKG ( http://www.corecode.at/uninstallpkg/ )

[divulgação completa: sim, sou o autor]

user1259710
fonte
É importante notar que não é livre, mas não inclui um teste gratuito
Ron E
1

Você pode tentar as sugestões deste site: http://www.entropy.ch/software/macosx/mysql/remove-old-mysql.html . Além disso, há um artigo sobre isso no site de suporte da Adobe; aqui está o link: http://support.adobe.com/devsup/devsup.nsf/docs/52355.htm .

Além disso, os aplicativos que geralmente possuem um arquivo pkg no dmg também possuem outro pkg usado para desinstalação. Não tenho certeza se isso é verdade aqui, mas eu queria que você soubesse para manter o arquivo dmg original.

alex
fonte
1

Eu fiz um srcipt shell

você pode experimentá-lo

https://github.com/iamrToday/pkg-remove

Ele mostra uma demonstração .gif, você pode ver o código fonte, basta quebrar a linha de comando do brablc . Você pode executá-lo para pesquisar informações, também pode remover apk. É interativo.

hoje Lin
fonte
O que isso faz?
Pierre.Vriens
Eu mostro uma demonstração .gif, você pode ver o código fonte, basta quebrar a linha de comando do brablc . você pode executá-lo para pesquisar informações, também pode remover apk. é interativo. :)
rToday Lin