Como instalar aplicativos no Snow Leopard após uma nova reinstalação e ainda manter o MacBook em um estado anterior à primeira inicialização?

8

Estou vendendo meu MacBook Branco de 2007.

De acordo com muitas sugestões que eu vi online, limpei a unidade com segurança e fiz uma reinstalação, mas encontrei um problema.

A máquina veio com o OS X 10.4 Tiger, mas eu a atualizei para o Leopard e depois para o Snow Leopard.

Idealmente, eu gostaria de dar ao novo proprietário a nova experiência do MacBook com o texto de boas-vindas giratório, mas também gostaria de colocá-los no mais recente Snow Leopard. O problema é que, quando faço uma nova instalação do Snow Leopard, a máquina não possui os aplicativos iLife (eles estão nos discos de instalação originais do Tiger).

Existe uma maneira de obter os aplicativos iLife lá sem precisar configurar uma conta na máquina?

Se não, qual é a melhor coisa a fazer? Configurar uma conta é algo que eu prefiro não fazer (sei que ficaria aborrecido se comprasse um MacBook usado e ele já tivesse uma conta). Por outro lado, instalar o Tiger e fornecer os discos de atualização também parece um pouco ruim.

Alguma sugestão, por favor?

Desde já, obrigado.

Acompanhamento:
Todas as respostas abaixo foram muito informativas, explicadas claramente e provavelmente igualmente eficazes. Eu escolhi a que melhor se adequava às minhas circunstâncias, mas espero que todas elas sejam úteis para futuros leitores desta questão. Obrigado a todos que contribuíram.

Grevas de Darren
fonte

Respostas:

7

Duas coisas - se você não conhece o básico de uma sintaxe de shell unix (ter um espaço no lugar certo importa, pontuação como / importa) não execute a etapa 2, a menos que você possa se dar ao luxo de reinstalar tudo novamente - o rmcomando é implacável - exclua o arquivo ou diretório errado rm -rfe o mac não inicializa. Você pode estar mais seguro usando o srmcomando em vez de rme ele fragmentará lentamente os arquivos - eu uso em srm -sz -rfvez de rm -rfabaixo para fragmentar uma vez e depois zerar (o que acaba sendo duas passagens e depois uma exclusão) - bastante seguro para minhas necessidades e não tão lento quanto a substituição padrão de 35 passagens antes da exclusão)

  1. Verifique se a pessoa que está comprando a máquina sabe para que está recebendo os discos de recuperação. É muito bom criar uma conta de teste para executar todas as atualizações em vez de entregá-las ao disco do Snow Leopard.

  2. Configure o seu Snow Leopard Mac para adicionar uma conta de administrador chamada teste sem senha e exclua outras contas usando a conta de teste. Reinicie no modo de usuário único pressionando command+ se digite exatamente:

    / sbin / mount -uw /
    cd / var / db
    srm .AppleSetupDone
    cd dslocal / nós / Padrão / usuários
    srm test.plist
    cd / Usuários
    teste rm -rf
    parar

Agora você pode inicializar o mac para ver a configuração do filme de boas-vindas e encerrar o assistente com algumas etapas usando command+ qquando começar a fazer perguntas sobre o nome e será encerrado sem nenhuma conta criada, mas com todos os aplicativos preservados. Ele lembrará suas configurações de wifi, exclua-as antes de iniciar a etapa 2 ou use ethernet / um wifi público seguro para executar atualizações, se você estiver preocupado com esse tipo de coisa.

bmike
fonte
Depois de avaliar todas as opções, optei por essa abordagem. Obrigado pela dica sobre como executar todas as atualizações e definir os comandos de maneira clara.
Darren Greaves
Ótimos comentários aqui e com o script mais robusto (e mais complicado) de Hobs. Confiei nessas dezenas de vezes para atualizar uma máquina para um novo usuário.
bmike
7

Você definitivamente pode instalar o iLife, inicializar no modo de usuário único, excluir a conta de usuário através deste link de superusuário (também abaixo e fazê-lo no modo de usuário único) e, em seguida, no modo de usuário único, digitar o rm /var/db/.AppleSetupDoneque é como uma chave de alternância, informa o mac para iniciar a partir da inicialização inicial.

#!/bin/bash

# cf. http://www.macos.utah.edu/documentation/authentication/dscl.html

if [[ "$(/usr/bin/whoami)" != "root" ]]; then printf '\nMust be run as root!\n\n'; exit 1; fi

OPATH=$PATH
export PATH=/usr/bin:/usr/sbin:/bin:/sbin

OIFS=$IFS
export IFS=$' \t\n'

declare sudo=/usr/bin/sudo

printf "\e[1mDelete user account\e[m: "
read user

if [[ -z "$user" ]]; then printf '\nNo user specified! Please, try again!\n\n'; exit 1; fi

# make sure the user exists
usertest="$(/usr/bin/dscl . -search /Users name "$user" 2>/dev/null)"

if [[ -z "$usertest" ]]; then printf "\nUser does not exist: $user\n\n"; exit 1; fi 


# get user's group memberships
groups_of_user="$(/usr/bin/id -Gn $user)"

if [[ $? -eq 0 ]] && [[ -n "$(/usr/bin/dscl . -search /Groups GroupMembership "$user")" ]]; then 
   # delete the user's group memberships
   for group in $groups_of_user; do
      $sudo /usr/bin/dscl . -delete "/Groups/$group"  GroupMembership "$user"
      #$sudo /usr/sbin/dseditgroup -o edit -d "$user" -t user "$group"           
   done
fi


# delete the user's primary group
if [[ -n "$(/usr/bin/dscl . -search /Groups name "$user")" ]]; then
   $sudo /usr/sbin/dseditgroup -o delete "$user"
fi

# if the user's primary group has not been deleted ...
if [[ -n "$(/usr/bin/dscl . -search /Groups name "$user")" ]]; then
printf "
   \e[1mWarning\e[m:
   The group memberships of the user \e[1m$user\e[m have been deleted\x21
   groups_of_user: $groups_of_user
   The user's primary group \e[1m$user\e[m, however, has not been deleted\x21
   Please, try again\x21
   Exiting ...\n
"
  exit 1
fi


# find the GeneratedUID of the user and remove the password hash file 
# from /private/var/db/shadow/hash/<GeneratedUID>
# sudo ls -a /private/var/db/shadow/hash
# sudo ls -l /private/var/db/shadow/hash/<GeneratedUID>

guid="$(/usr/bin/dscl . -read "/Users/$user" GeneratedUID | /usr/bin/awk '{print $NF;}')"

if [[ -f "/private/var/db/shadow/hash/$guid" ]]; then
   $sudo /bin/rm -f /private/var/db/shadow/hash/$guid
fi


# delete the user
$sudo /usr/bin/dscl . -delete "/Users/$user"

# make a backup
if [[ -d "/Users/$user" ]]; then
   $sudo /usr/bin/ditto -rsrc -c -k "/Users/$user" "/Users/${user}-archive-$(/bin/date).zip"
fi

# remove the user's home directory
if [[ -d "/Users/$user" ]]; then
   $sudo /bin/rm -rf "/Users/$user"
fi

export IFS=$OIFS
export PATH=$OPATH

exit 0
ConstantineK
fonte
Obrigado pela informação - vou tentar a outra opção sugerida, mas tentarei isso se essa falhar.
Darren Greaves
Boa sorte! Deixe-nos saber como vai.
ConstantineK
Quando inicializado no modo de usuário único no Snow Leopard, esse script não funciona para mim - ele diz que o usuário não existe.
Ivan X
Por algum motivo, a raiz não existe ao executar / usr / bin / dscl. -search / Nome do usuário "$ user" (onde $ user é root). Isso é muito estranho.
ConstantineK
2

Instale o Tiger normalmente, em seguida, inicialize os discos de instalação do Snow Leopard e faça uma instalação de atualização sem inicializar a unidade interna e criar uma conta de usuário.

Cajunluke
fonte
Isso parece um pouco mais simples do que a opção de limpeza sugerida, portanto, tente - obrigado.
precisa saber é o seguinte
Também é muito fácil excluir um usuário de teste. Darei uma resposta para cobrir que isso é muito mais simples do que o script acima, um pouco mais completo, mas que verificar e deixar extra uma cópia de backup de uma pasta inicial "vazia" não se justifica na situação que você descreve.
bmike