Cómo localizar el código C faltante

9

Heredé un sistema de desarrollo heredado que está mal documentado y el código fuente no se sabe si todavía está disponible.

Ahora podría localizar parte del código fuente y construir una parte del sistema.

Me pregunto si puedo encontrar el resto del código fuente y si hay alguna manera mejor locate *.ce inspeccionar manualmente los archivos (así es como encontré parte del código).

Hay 3 máquinas y solo una donde encontré el código fuente que parece ser una máquina de desarrollo. También tiene 61 .debarchivos que parecen ser las versiones empaquetadas de los proyectos, pero mirar los .debarchivos muestra que la fuente no está en los archivos o, al menos, no es donde busqué.

¿Hay una buena manera de "escanear" una unidad completa en busca de código fuente?

Niklas
fuente

Respuestas:

9

Esto no responderá a su pregunta más general, pero en su caso específico, dado que tiene paquetes en el sistema, vale la pena buscar el código fuente correspondiente:

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

Esto buscará archivos fuente nombrados de la forma en que las herramientas de creación de paquetes Debian esperan, y archivos de control de paquetes fuente. Si los encuentra, búsquelos .debian.tar*o .diff.gzarchivos junto a ellos. Todos estos archivos combinados le darían el código fuente y las reglas de compilación, junto con todos los metadatos del paquete.

También puede buscar archivos de control desempaquetados:

find / -name control

Por lo general, estos vivirían en el debiansubdirectorio de la fuente de un paquete, que debería contener todo lo que necesita para reconstruir el paquete desde la fuente.

Stephen Kitt
fuente
1
También: find / -wholename '*/debian/rules'. o (más rápido, si está instalado mlocate)locate -r /debian/rules$
cas
2
@cas Estoy tratando de ir a lo seguro aquí, he visto algunas configuraciones muy extrañas para construir paquetes Debian. locatesería más rápido, pero me ha decepcionado en el pasado ejecutarlo en sistemas recuperados que se habían limpiado: la locatebase de datos aún era nueva sobre el código fuente que había desaparecido. (Eso todavía puede ser información útil si hay copias de seguridad disponibles ...)
Stephen Kitt
1
Yendo por unix.stackexchange.com/questions/382857 , estos no son paquetes de Debian.
JdeBP
1
@JdeBP Iba por "También tiene 61 .debarchivos que parecen ser la versión empaquetada de los proyectos" (sic).
Stephen Kitt
2
@DjDac está bien, solo findintento leer archivos en los /procque desaparecen entre el momento en que findconstruye su lista de archivos y el momento en que los lee. Puedes saltarte por /proccompleto.
Stephen Kitt
1

Usualmente uso una combinación de scripts para trabajar con archivos fuente. Al igual que la respuesta anterior, esto no resolverá exactamente su caso, pero la búsqueda de símbolos puede ayudar a localizar los archivos fuente.

Se agrega lo siguiente 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"
}

Luego puedo enumerar los archivos fuente usando list-code-files | xargs -0 echo, o buscar símbolos usandocsym some-symbol-regexeg

Kotte
fuente