Como localizar o código C ausente

9

Eu herdei um sistema de desenvolvimento legado que está mal documentado e o código-fonte não é conhecido se ainda estiver disponível.

Agora eu conseguia localizar parte do código fonte e, na verdade, construir uma parte do sistema.

Gostaria de saber se consigo encontrar o restante do código-fonte e se existe alguma maneira melhor do que a locate *.cinspeção manual dos arquivos (foi assim que encontrei parte do código).

Existem três máquinas e apenas uma onde encontrei o código fonte que parece ser uma máquina de desenvolvimento. Ele também possui 61 .debarquivos que parecem ser as versões compactadas dos projetos, mas examinar os .debarquivos mostra que a fonte não está nos arquivos ou, pelo menos, não onde eu estava.

Existe uma boa maneira de "verificar" uma unidade inteira em busca de código-fonte?

Niklas
fonte

Respostas:

9

Isso não responderá à sua pergunta mais geral, mas no seu caso específico, como você possui pacotes no sistema, vale a pena procurar o código-fonte correspondente:

find / -name \*.orig.tar\* -o -name \*.dsc

Isto procurará por arquivos fonte nomeados da maneira que as ferramentas de construção de pacotes Debian esperam, e arquivos de controle de pacotes fonte. Se você os encontrar, procure .debian.tar*ou .diff.gzarquivos ao lado deles. Todos esses arquivos combinados forneceriam o código fonte e as regras de compilação, juntamente com todos os metadados do pacote.

Você também pode procurar por arquivos de controle descompactados:

find / -name control

Eles normalmente residem no debiansubdiretório da fonte de um pacote, que deve conter tudo o que você precisa para reconstruir o pacote da fonte.

Stephen Kitt
fonte
1
também: find / -wholename '*/debian/rules'. ou (mais rápido, se o mlocate estiver instalado)locate -r /debian/rules$
cas
2
@cas Estou tentando jogar pelo seguro aqui, vi algumas configurações muito estranhas para a criação de pacotes Debian. locateseria mais rápido, mas fiquei decepcionado no passado em executá-lo em sistemas recuperados que foram limpos - o locatebanco de dados ainda novo sobre o código-fonte que havia desaparecido. (Isso ainda pode ser uma informação útil se os backups estão disponíveis ...)
Stephen Kitt
1
Indo para unix.stackexchange.com/questions/382857 , estes não são pacotes Debian.
JdeBP
1
@JdeBP Eu estava dizendo "Ele também tem 61 .debarquivos que parecem ser o pacote de versões dos projetos" (sic).
Stephen Kitt
2
@DjDac, tudo bem, apenas findtentando ler arquivos nos /procquais desaparecem entre o tempo que findcria sua lista de arquivos e o tempo em que os lê. Você pode pular /proccompletamente.
Stephen Kitt
1

Eu costumo usar uma combinação de scripts para trabalhar com arquivos de origem. Assim como a resposta acima, isso não resolverá exatamente o seu caso, mas a pesquisa de símbolos pode ajudar na localização dos arquivos de origem.

O seguinte é adicionado a bashrc:

function list-code-files() {
    find -type f \( \
        -name '*.cpp' -o \
        -name '*.java' -o \
        -name '*.php' -o \
        -name '*.[chS]' -o \
        -name 'Makefile' -o \
        -name '*.mk' \
        \) -print0
}

function csym() {
    list-code-files | xargs -0 grep -ne "$1"
}

Depois, posso listar os arquivos de origem usando list-code-files | xargs -0 echoou procurar símbolos usandocsym some-symbol-regexeg

Kotte
fonte