गुम सी कोड का पता कैसे लगाएं


9

मुझे विरासत में मिली विकास प्रणाली विरासत में मिली, जो खराब दस्तावेज है और स्रोत कोड ज्ञात नहीं है अगर यह अभी भी उपलब्ध है।

अब मैं कुछ स्रोत कोड का पता लगा सकता था और वास्तव में सिस्टम के एक हिस्से का निर्माण कर सकता था।

मुझे आश्चर्य है कि क्या मुझे बाकी स्रोत कोड मिल सकता है और यदि locate *.cफ़ाइलों की मैन्युअल रूप से निरीक्षण करने की तुलना में कोई बेहतर तरीका है (तो यह है कि मुझे कोड का हिस्सा कैसे मिला)।

3 मशीनें हैं और केवल एक ही है जहां मुझे स्रोत कोड मिला है जो एक विकास मशीन लगती है। इसमें 61 .debअभिलेखागार भी हैं जो परियोजनाओं के पैकेज्ड संस्करण प्रतीत होते हैं, लेकिन .debअभिलेखागार में देखने से पता चलता है कि स्रोत अभिलेखागार में नहीं है या कम से कम जहां मैंने देखा था।

क्या स्रोत कोड के लिए संपूर्ण ड्राइव को "स्कैन" करने का एक अच्छा तरीका है?

जवाबों:


9

यह आपके अधिक सामान्य प्रश्न का उत्तर नहीं देगा, लेकिन आपके विशिष्ट मामले में, चूंकि आपके पास सिस्टम पर पैकेज हैं, यह संबंधित स्रोत कोड की तलाश में लायक है:

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

यह स्रोत अभिलेखागार की तलाश करेगा जिस तरह से डेबियन पैकेज बिल्डिंग टूल्स की उम्मीद है, और स्रोत पैकेज नियंत्रण फाइलें। यदि आप उन्हें ढूंढते हैं, तो उनके साथ .debian.tar*या .diff.gzफ़ाइलों को देखें। इन सभी फ़ाइलों को आप सभी पैकेज मेटाडेटा के साथ स्रोत कोड और बिल्ड नियम प्रदान करेंगे।

तुम भी नियंत्रण फ़ाइलों के लिए देख सकते हैं:

find / -name control

ये आमतौर पर debianएक पैकेज के स्रोत के उपनिर्देशिका में रहते हैं , जिसमें वह सब कुछ होना चाहिए जो आपको स्रोत से पैकेज के पुनर्निर्माण के लिए चाहिए।


1
भी: find / -wholename '*/debian/rules'। या (तेज, अगर mlocate स्थापित किया गया है)locate -r /debian/rules$
cas

2
@ कैस मैं इसे यहाँ सुरक्षित खेलने की कोशिश कर रहा हूँ, मैंने डेबियन पैकेज बनाने के लिए कुछ बहुत ही अजीब सेटअप देखे हैं। locateतेजी से होगा, लेकिन मैं अतीत में इसे हटा दिया गया है जो इसे ठीक किए गए सिस्टम पर चल रहा है - जो locateअभी भी स्रोत कोड के बारे में नया था जो चला गया था। (यह अभी भी उपयोगी जानकारी हो सकती है यदि बैकअप उपलब्ध हो ...)
स्टीफन किट

1
Unix.stackexchange.com/questions/382857 द्वारा जाना , ये डेबियन पैकेज नहीं हैं।
JdeBP

1
@JdeBP मैं "यह भी 61 .debअभिलेखागार कि परियोजनाओं के पैक संस्करण लगता है द्वारा जा रहा था " (ss)।
स्टीफन किट

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 Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.