Як знайти відсутні код C


9

Я успадкував успадковану систему розробки, яка задокументована, і вихідний код не відомий, чи він ще доступний.

Тепер я міг знайти частину вихідного коду і фактично побудувати одну частину системи.

Цікаво, чи зможу я знайти решту вихідного коду і чи є кращий спосіб, ніж locate *.cі вручну перевіряти файли (саме так я знайшов частину коду).

Є 3 машини і лише одна, де я знайшов вихідний код, який, здається, є розробником. У ньому також є 61 .debархів, який, здається, є пакетованою версією проектів, але перегляд .debархівів показує, що джерело не в архівах або, принаймні, не там, де я шукав.

Чи є хороший спосіб "сканувати" весь диск на вихідний код?

Відповіді:


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база даних все ще нова про вихідний код, якого не було. (Це все ще може бути корисною інформацією, якщо є резервні копії ...)
Стівен Кітт

1
Переходячи по unix.stackexchange.com/questions/382857 , це не пакети Debian.
JdeBP

1
@JdeBP Я збирався "У ньому також є 61 .debархів, який, здається, є пакетом проектів" (sic).
Стівен Кітт

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.