Cách xác định mã C bị thiếu


9

Tôi được thừa hưởng một hệ thống phát triển kế thừa được ghi chép kém và mã nguồn không được biết nếu nó vẫn còn khả dụng.

Bây giờ tôi có thể định vị một số mã nguồn và thực sự xây dựng một phần của hệ thống.

Tôi tự hỏi nếu tôi có thể tìm thấy phần còn lại của mã nguồn và liệu có cách nào tốt hơn locate *.cvà kiểm tra thủ công các tệp không (đó là cách tôi tìm thấy một phần của mã).

Có 3 máy và chỉ có một nơi tôi tìm thấy mã nguồn dường như là một máy phát triển. Nó cũng có 61 .debtài liệu lưu trữ dường như là phiên bản đóng gói của các dự án, nhưng nhìn vào .debtài liệu lưu trữ cho thấy nguồn không nằm trong kho lưu trữ hoặc ít nhất là không phải nơi tôi nhìn.

Có cách nào tốt để "quét" toàn bộ ổ đĩa để tìm mã nguồn không?

Câu trả lời:


9

Điều này sẽ không trả lời câu hỏi chung chung hơn của bạn, nhưng trong trường hợp cụ thể của bạn, vì bạn có các gói trên hệ thống, nên tìm mã nguồn tương ứng:

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

Điều này sẽ tìm kiếm các tài liệu lưu trữ nguồn có tên theo cách mà các công cụ xây dựng gói Debian mong đợi và các tệp kiểm soát gói nguồn. Nếu bạn tìm thấy chúng, hãy tìm .debian.tar*hoặc .diff.gztập tin cùng với chúng. Tất cả các tệp này được kết hợp sẽ cung cấp cho bạn mã nguồn và quy tắc xây dựng, cùng với tất cả siêu dữ liệu gói.

Bạn cũng có thể tìm kiếm các tệp điều khiển được giải nén:

find / -name control

Chúng thường sống trong debianthư mục con của nguồn của gói, trong đó sẽ chứa mọi thứ bạn cần để xây dựng lại gói từ nguồn.


1
cũng : find / -wholename '*/debian/rules'. hoặc (nhanh hơn, nếu cài đặt mlocate)locate -r /debian/rules$
cas

2
@cas Tôi đang cố gắng chơi nó an toàn ở đây, tôi đã thấy một số thiết lập rất kỳ quặc để xây dựng các gói Debian. locatesẽ nhanh hơn, nhưng trước đây tôi đã thất vọng khi chạy nó trên các hệ thống đã được khôi phục - locatecơ sở dữ liệu vẫn còn mới về mã nguồn đã biến mất. (Đó vẫn có thể là thông tin hữu ích nếu có bản sao lưu ...)
Stephen Kitt

1
Đi theo unix.stackexchange.com/questions/382857 , đây không phải là các gói Debian.
JdeBP

1
@JdeBP Tôi đã đi bằng cách Nó cũng có 61 .debtài liệu lưu trữ dường như là phiên bản đóng gói của các dự án mà (sic).
Stephen Kitt

2
@DjDac không sao, chỉ cần findcố gắng đọc các tệp trong /procđó biến mất giữa thời gian findxây dựng danh sách các tệp và thời gian nó đọc chúng. Bạn có thể bỏ qua /prochoàn toàn.
Stephen Kitt

1

Tôi thường sử dụng kết hợp các tập lệnh để làm việc với các tệp nguồn. Giống như câu trả lời ở trên, điều này sẽ không giải quyết chính xác trường hợp của bạn, nhưng tìm kiếm các biểu tượng có thể giúp xác định vị trí các tệp nguồn.

Sau đây được thêm vào 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"
}

Sau đó, tôi có thể liệt kê các tệp nguồn bằng cách sử dụng list-code-files | xargs -0 echohoặc tìm kiếm các ký hiệu bằng cách sử dụngcsym some-symbol-regexeg

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.