Cara menemukan kode C yang hilang

9

Saya mewarisi sistem pengembangan warisan yang tidak terdokumentasi dengan baik dan kode sumbernya tidak diketahui apakah masih tersedia.

Sekarang saya dapat menemukan beberapa kode sumber dan benar-benar membangun satu bagian dari sistem.

Saya bertanya-tanya apakah saya dapat menemukan sisa kode sumber dan apakah ada cara yang lebih baik daripada locate *.cdan secara manual memeriksa file (itulah cara saya menemukan bagian dari kode).

Ada 3 mesin dan hanya satu di mana saya menemukan kode sumber yang tampaknya menjadi mesin pengembangan. Ini juga memiliki 61 .debarsip yang tampaknya merupakan versi paket proyek, tetapi melihat ke .debarsip menunjukkan bahwa sumbernya tidak ada di arsip atau setidaknya tidak di tempat saya melihat.

Apakah ada cara yang baik untuk "memindai" seluruh drive untuk kode sumber?

Niklas
sumber

Jawaban:

9

Ini tidak akan menjawab pertanyaan Anda yang lebih umum, tetapi dalam kasus khusus Anda, karena Anda memiliki paket pada sistem, ada baiknya mencari kode sumber yang sesuai:

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

Ini akan mencari arsip sumber yang dinamai seperti yang diharapkan oleh alat pembuat paket Debian, dan file kontrol paket sumber. Jika Anda menemukan itu, cari .debian.tar*atau .diff.gzfile di sampingnya. Semua file ini digabungkan akan memberi Anda kode sumber dan aturan build, bersama dengan semua paket metadata.

Anda juga dapat mencari file kontrol yang belum dibongkar:

find / -name control

Ini biasanya akan tinggal di debiansubdirektori dari sumber paket, yang harus berisi semua yang Anda butuhkan untuk membangun kembali paket dari sumber.

Stephen Kitt
sumber
1
juga: find / -wholename '*/debian/rules'. atau (lebih cepat, jika mlocate diinstal)locate -r /debian/rules$
cas
2
@cas Saya mencoba untuk bermain aman di sini, saya telah melihat beberapa pengaturan yang sangat aneh untuk membangun paket Debian. locateakan lebih cepat, tapi saya kecewa di masa lalu menjalankannya pada sistem pulih yang telah dibersihkan - locatedatabase masih baru tentang kode sumber yang hilang. (Itu masih bisa menjadi informasi yang berguna jika cadangan tersedia ...)
Stephen Kitt
1
Pergi dengan unix.stackexchange.com/questions/382857 , ini bukan paket Debian.
JdeBP
1
@JdeBP Saya pergi dengan "Ini juga memiliki 61 .debarsip yang tampaknya menjadi versi paket proyek" (sic).
Stephen Kitt
2
@DjDac tidak masalah, hanya findmencoba membaca file /procyang hilang antara waktu findmembuat daftar file dan waktu membacanya. Anda dapat melewati /procsepenuhnya.
Stephen Kitt
1

Saya biasanya menggunakan kombinasi skrip untuk bekerja dengan file sumber. Sama seperti jawaban di atas, ini tidak akan menyelesaikan kasus Anda secara tepat, tetapi mencari simbol dapat membantu menemukan file sumber.

Berikut ini ditambahkan ke 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"
}

Lalu saya bisa daftar file sumber menggunakan list-code-files | xargs -0 echo, atau mencari simbol menggunakancsym some-symbol-regexeg

Kotte
sumber