makefile - चेकऑप्ट बेकार डेब बनाता है?




deb checkinstall (2)

मुझे यकीन नहीं है कि यह वास्तव में इस प्रश्न का उत्तर देता है, परन्तु यहां जो कुछ मैंने पाया है (उबुंटू स्पष्ट, 1.6.1 की जांच करें):

मैंने एक ओपन-सोर्स प्रोजेक्ट बनाने की कोशिश की, जिसने अभी ठीक बनाया। फिर मैंने इसे डेबियन के लिए पैकेजिंग करने की कोशिश की:

checkinstall -D --install=no --pkgname=$PKGNAME --pkgversion=0.0.1 --pkgrelease="svn-001" [email protected] --strip=no --stripso=no --addso=yes

यह मूल रूप से एक ही Building file list... FAILED! ; और एक समान grep: /var/tmp/tmp.NaoiwTHT6F/newfile: No such file or directory की सूचना नहीं मिली थी।

मैंने ऊपर checkinstall कमांड के अंत में भी जोड़ने की कोशिश की - जो कि बहुत कुछ नहीं करता है

अंत में, मैंने यह कोशिश की:

make clean
checkinstall -D --install=no --pkgname=$PKGNAME --pkgversion=0.0.1 --pkgrelease="svn-001" [email protected] --strip=no --stripso=no --addso=yes -d2 make

डीबग सक्षम करने के लिए स्विच- -d2 है; और ... make एक बार फिर से फिर से दोबारा बनाने के लिए।

-d2 अस्थायी निर्देशिका का प्रिंट आउट होगा:

debug: The temporary directory is: [ /var/tmp/tmp.NaoiwTHT6F ]
, इसलिए यह लिस्टिंग द्वारा जांच की जा सकती है ... और वास्तव में, मैं पुष्टि कर सकता हूं कि मेरे मामले में एक newfile उत्पन्न नहीं की newfile है (हालांकि, newfiles , newfiles.installwatch , newfiles-tar newfiles.installwatch , newfiles-tar , और newfiles.tmpnewfiles.tmp )। वास्तव में, पता चला है कि newfile एक bash स्क्रिप्ट है, और इसलिए यह पुष्टि कर सकता है कि केवल newfile केवल एक बार दिखाई देती है:

$ grep 'newfile ' `which checkinstall`
    grep '^/home' ${TMP_DIR}/newfile > /${TMP_DIR}/unwanted

इसके अलावा, डिबग इन फाइलों / निर्देशिकाओं को बताएगा:

debug: INSTW_EXCLUDE=/dev,/path/to/myproject-build,/proc,/tmp,/var/tmp,
debug: INSTW_ROOTPATH=/var/tmp/tmp.NaoiwTHT6F
debug: INSTW_LOGFILE=/var/tmp/tmp.NaoiwTHT6F/newfiles.tmp
debug: INSTW_DBGFILE=/var/tmp/tmp.NaoiwTHT6F/dbgfile

ध्यान दें कि डिफ़ॉल्ट रूप से, मेरे बिल्ड फ़ोल्डर का /path/to/myproject-build , /path/to/myproject-build को बाहर रखा जाता है - और वह यह है कि यह प्रोजेक्ट भी निर्मित निष्पादनयोग्य स्टोर करता है!

जाहिर है, checkinstall भीतर जब पहली बार निर्माण के लिए चला जाता है, तो वह नए उत्पन्न निष्पादन योग्य फ़ाइलों को हासिल कर सकती है - वे ${TMP_DIR}/newfile s में सूचीबद्ध होंगे; हालांकि, मेरे मामले में, समस्या यह है कि निष्पादन योग्य एक ही निर्देशिका के अंतर्गत समाप्त होता है जहां जांच को कहा जाता है; इस प्रकार, इस संवाद पर:

Some of the files created by the installation are inside the build
directory: /path/to/myproject-build

You probably don't want them to be included in the package,
especially if they are inside your home directory.
Do you want me to list them?  [n]: y
Should I exclude them from the package? (Saying yes is a good idea)  [y]: n

... मुझे, वास्तव में, उत्तर चाहिए - अन्यथा मैं कुछ भी शामिल नहीं होता! मैं इसके साथ सामग्री की जांच कर सकता हूं:

dpkg --contents mytest.deb | less

हालांकि, तब समस्या यह है कि जांच की गई:

  • इसमें .o फ़ाइलें भी शामिल हैं, साथ ही साथ .svn निर्देशिकाएं भी शामिल हैं
  • पूर्ण पथ को सापेक्ष के रूप में गिना जाता है (स्वचालित रूप से "निष्पादनयोग्य" नहीं कहने के लिए, /usr/bin , और .so /usr/lib

संक्षेप में - ऊपर के कुछ दृष्टिकोणों को एक .deb हो सकता है जो पूरी तरह से खाली नहीं है; लेकिन इसका अर्थ यह नहीं है कि वहां केवल वहां आवश्यक फाइलें हैं, या उन्हें सामान्य स्थापित गंतव्यों में रूट किया जाएगा ...

खैर, आशा है कि यह कम से कम एक बिट में मदद करता है,
चीयर्स!

मेरे पास एक तुच्छ सरल कमांड लाइन कार्यक्रम है जिसमें शाब्दिक रूप से एक अजगर स्क्रिप्ट और कुछ सहायक शैल स्क्रिप्ट शामिल हैं। मैं इस कार्यक्रम की पैकेजिंग के बारे में जानना चाहता हूं, हालांकि यह तुच्छ है।

मैंने जो भी इकट्ठा किया था, उससे मैं कॉन्फ़िगर / मैक / इंस्टॉल मार्ग चला गया। चूंकि मेरे पास कॉन्फ़िगर करने के लिए कुछ भी नहीं था, या बनाने के लिए कुछ भी नहीं था, मैंने एक आसान बनाने वाला एक मेकफाइल बनाया है, लेकिन कुछ भी नहीं स्थापित अनुभाग:

install:
        cp ./myProgram /usr/bin/my-program
        chown root:root /usr/bin/my-program
        chmod 777 /usr/bin/my-program
        cp -r ./ProgramResources /usr/lib/my-program
        chown -hR root:root /usr/lib/my-program
        chmod -R 777 /usr/lib/my-program

इस बिंदु पर, मेरा प्रोग्राम स्थापित करता है और सुडो के साथ ठीक चल रहा है।

उसके बाद, मैं एक डीईआर फाइल बनाने का प्रयास करता हूं, जैसे कि जांच की प्रक्रिया निम्नानुसार है:

sudo checkinstall sudo make install

ऐसा लगता है कि इंस्टॉल हिस्सेदारी पिछले हो, क्योंकि यह रिपोर्ट सफल करता है, लेकिन फिर विफल रहता है:

======================== Installation successful ==========================
cp: cannot stat `//var/tmp/tmp.jKCmESc0v7/newfiles.tmp': No such file or directory

Copying files to the temporary directory...OK

Stripping ELF binaries and libraries...OK

Compressing man pages...OK

Building file list... FAILED!

Building Debian package...OK

Installing Debian package...OK

Erasing temporary files...OK

Deleting temp dir...OK


**********************************************************************

 Done. The new package has been installed and saved to

 ...

कार्यक्रम स्थापित है, लेकिन जहाँ तक मैं बता सकता हूं, इस नए बनाया .deb फ़ाइल कुछ भी नहीं है। डीपीकेजी-एल माइ-प्रोग्राम उपज केवल

/.

और इसे मैन्युअल रूप से निकालना और डेब फ़ाइल से स्थापित करना कुछ भी नहीं दिखाई देता है - यह वास्तव में किसी भी फाइल को कहीं भी नहीं डालती है

तो, (1) क्या मेरे दृष्टिकोण में कुछ गड़बड़ है? और (2) मैं कैसे जांच की समस्या को ठीक कर सकता हूँ?

जवाब के लिए बहुत बहुत धन्यवाद, भले ही मैं कोड के साथ अच्छा हूँ, मुझे पैकेजिंग / वितरण के बारे में कुछ नहीं पता है


मेरे पास इसी तरह की समस्याएं हैं अंत में मैंने यह बहुत ही सरल, लेकिन काफी मैनुअल दृष्टिकोण का पालन किया।

उदाहरण के लिए, जिन फ़ाइलों को आप डेबियन / usr / bin में पैकेज करना चाहते हैं उन्हें रखें। हमेशा सामान्य configure, make, make install चरणों configure, make, make install नहीं है।