Comment localiser le code C manquant


9

J'ai hérité d'un système de développement hérité qui est mal documenté et le code source n'est pas connu s'il est toujours disponible.

Maintenant, je pouvais localiser une partie du code source et créer une partie du système.

Je me demande si je peux trouver le reste du code source et s'il existe un meilleur moyen que d' locate *.cinspecter manuellement les fichiers (c'est ainsi que j'ai trouvé une partie du code).

Il y a 3 machines et une seule où j'ai trouvé le code source qui semble être une machine de développement. Il possède également 61 .debarchives qui semblent être les versions packagées des projets, mais la recherche dans les .debarchives montre que la source n'est pas dans les archives ou du moins pas où j'ai regardé.

Existe-t-il un bon moyen de "scanner" un lecteur entier pour le code source?

Réponses:


9

Cela ne répondra pas à votre question plus générale, mais dans votre cas spécifique, puisque vous avez des packages sur le système, cela vaut la peine de chercher le code source correspondant:

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

Cela recherchera les archives sources nommées de la manière attendue par les outils de construction de paquets Debian et les fichiers de contrôle des paquets sources. Si vous les trouvez, recherchez .debian.tar*ou .diff.gzfichiers à côté d'eux. Tous ces fichiers combinés vous donneraient le code source et les règles de construction, ainsi que toutes les métadonnées du package.

Vous pouvez également rechercher des fichiers de contrôle décompressés:

find / -name control

Ceux-ci vivent généralement dans le debiansous - répertoire de la source d'un package, qui doit contenir tout ce dont vous avez besoin pour reconstruire le package à partir de la source.


1
aussi: find / -wholename '*/debian/rules'. ou (plus rapide, si mlocate est installé)locate -r /debian/rules$
cas

2
@cas J'essaie de jouer en toute sécurité ici, j'ai vu des configurations très étranges pour construire des paquets Debian. locateserait plus rapide, mais j'ai été déçu par le passé de l'exécuter sur des systèmes récupérés qui avaient été nettoyés - la locatebase de données était encore nouvelle sur le code source qui avait disparu. (Cela peut toujours être une information utile si des sauvegardes sont disponibles ...)
Stephen Kitt

1
En passant par unix.stackexchange.com/questions/382857 , ce ne sont pas des paquets Debian.
JdeBP

1
@JdeBP J'allais par «Il a aussi 61 .debarchives qui semblent être la version packagée des projets» (sic).
Stephen Kitt

2
@DjDac ça va, juste findessayer de lire des fichiers dans /proclesquels disparaissent entre le moment où il findconstruit sa liste de fichiers et le moment où il les lit. Vous pouvez sauter /proccomplètement.
Stephen Kitt

1

J'utilise généralement une combinaison de scripts pour travailler avec des fichiers source. Tout comme la réponse ci-dessus, cela ne résoudra pas exactement votre cas, mais la recherche de symboles peut aider à localiser les fichiers source.

Le texte suivant est ajouté à 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"
}

Ensuite, je peux lister les fichiers source en utilisant list-code-files | xargs -0 echo, ou rechercher des symboles en utilisantcsym some-symbol-regexeg

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.