listar arquivos não originários de pacotes

4

Muitos arquivos são instalados por pacotes no meu sistema de arquivos.

  • Como eu poderia listar arquivos que são não ? Ou seja, usuário criado, como compilar software manualmente, escrevendo documentos.
  • Existe uma maneira de listar arquivos que são de pacotes, mas são alterados? Para verificar o que eu modifiquei.

Isso seria útil para mim em um projeto para atualizar imagens customizadas que são usadas internamente. Além disso, quando re-instalar em casa e eu esqueci o que fiz. É claro que os mais interessantes estão fora do diretório home, mas mudanças em arquivos de configuração de ponto em casa também são interessantes.

    
por n611x007 10.07.2013 / 13:46

2 respostas

5

Para responder à sua pergunta, literalmente, você pode listar arquivos que não vêm de pacotes dessa maneira:

find / -xdev -type f | sort >/tmp/root.files
sort /var/lib/dpkg/info/*.list >/tmp/installed.files
comm -23 /tmp/root.files /tmp/installed.files

Isso incluirá, é claro, todos os arquivos nos diretórios pessoais. Você pode pular alguns diretórios no comando find adicionando -prune diretivas (você também precisará adicionar -print para imprimir o resto, já que a ação -print é apenas implícita se não houver ação). / p>

find / -xdev -type f -path /home -prune -o -path /var -prune -o -print | sort >/tmp/root.files

Para verificar se um arquivo foi alterado, você pode comparar sua soma de verificação com a de /var/lib/dpkg/info/$PACKAGE.md5sum . Se você quiser comparar todos os arquivos (o que levará muito tempo):

for p in /var/lib/dpkg/info/*.list; do
  diff <(md5sum $(cat $p) | sort) <(sort ${p#.list}.md5sums);
done

Você não deve precisar disso, porque você não deve modificar arquivos que vêm de pacotes. Você não deve adicionar seus próprios arquivos nos diretórios do sistema.

Se você modificar um arquivo de configuração, ele viverá em /etc ; este é o único lugar onde você deve modificar os arquivos do sistema. Instale o pacote etckeeper para acompanhar suas modificações em /etc . Execute sudo etckeeper init , e /etc estará sob controle de versão ( Bazaar por padrão).

Se você instalar o software em todo o sistema, instale-o em /usr/local . Não toque em nada em /bin , /sbin , /lib (exceto módulos de kernel instalados manualmente se você precisar deles porque você tem hardware incomum) ou /usr (exceto /usr/local que é para seu próprio uso ).

Todos os arquivos em seu diretório pessoal foram criados por você (exceto por alguns que foram copiados de /etc/skel quando você criou sua conta). Não há uma maneira geral de saber quais são os padrões do aplicativo, quais resultam da seleção de opções de configuração e quais registram o estado atual (arquivos abertos, histórico de comandos, etc.).

    
por Gilles 10.07.2013 / 15:27
2

Para seu segundo ponto, você pode usar debsums -ac (do pacote com o mesmo nome) para listar todos os arquivos de pacotes (incluindo arquivos de configuração) que foram modificados.

    
por Christian David 10.05.2016 / 15:28