如何找到丢失的C代码


9

我继承了一个遗留文档的遗留开发系统,如果源代码仍然可用,则不知道源代码。

现在,我可以找到一些源代码,并实际构建系统的一部分。

我想知道是否可以找到其余的源代码,还有没有比locate *.c手动检查文件更好的方法(这就是我找到部分代码的方式)。

一共有3台机器,只有一台我在其中找到了似乎是开发机器的源代码。它还有61个.deb归档文件,这些归档文件似乎是项目的打包版本,但是查看这些.deb归档文件可发现源不在归档文件中,或者至少不在我看过的地方。

是否有一种“扫描”整个驱动器以获取源代码的好方法?

Answers:


9

这不会回答您更笼统的问题,但是在您的特定情况下,由于系统上有软件包,因此值得寻找相应的源代码:

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

这将查找以Debian软件包构建工具期望的方式命名的源档案,以及源软件包控制文件。如果找到这些文件,请在它们旁边查找.debian.tar*.diff.gz归档。所有这些文件组合在一起将为您提供源代码和构建规则,以及所有软件包元数据。

您还可以查找解压缩的控制文件:

find / -name control

这些通常位于debian程序包源的子目录中,该子目录应包含从源程序重建程序包所需的所有内容。


1
也:find / -wholename '*/debian/rules'。或(如果已安装mlocate,则更快)locate -r /debian/rules$
cas

2
@cas我在这里尝试安全,我已经看到了一些非常奇怪的用于构建Debian软件包的设置。locate速度会更快,但是我过去对在已清理的恢复系统上运行它感到失望– locate数据库仍然是源代码消失的新数据库。(如果有备份可用,这仍然可能是有用的信息...)
Stephen Kitt

1
通过unix.stackexchange.com/questions/382857,这些不是Debian软件包。
JdeBP

1
@JdeBP我要去的地方是“它也有61个.deb档案,这些档案似乎是项目的打包版本”(原文如此)。
斯蒂芬·基特

2
@DjDac很好,只是find尝试读取在建立文件列表和读取文件/proc之间消失find的文件。您可以/proc完全跳过。
史蒂芬·基特

1

我通常使用脚本的组合来处理源文件。就像上面的答案不能完全解决您的情况一样,但是搜索符号可以帮助您找到源文件。

将以下内容添加到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"
}

然后,我可以使用列出源文件list-code-files | xargs -0 echo,或使用来搜索符号csym some-symbol-regexeg

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.