डेबियन चैक स्थापना को अनदेखा करता है = नहीं; यह कैसे बनाया है, लेकिन एक पैकेज autoinstall नहीं?


14

ठीक है, यहाँ एक चीज है जो मुझे पहेली करती है ... मैं स्रोत से एक पैकेज बनाने की कोशिश कर रहा हूं, और फिर checkinstallएक .deb पैकेज बनाने के लिए उपयोग करता हूं । ध्यान दें कि मैं सिर्फ .deb पैकेज बनाना चाहता हूं, लेकिन मैं इसे इंस्टॉल नहीं करना चाहता ।

इसलिए, यहां एक उदाहरण है - मैं उबंटू 11.04 पर हूं, और पहले मैं इसे fehडिफ़ॉल्ट रिपॉजिटरी से पैकेज स्थापित करता हूं ; जिसका वर्जन नंबर जाहिरा तौर पर 1.3.4.dfsg.1-3 है

फिर मैं feh स्रोत से निर्माण करने की कोशिश कर रहा हूं ; पास makeकरने के लिए मिला है, और fehकमांड लाइन से नया चला सकते हैं ; शानदार।

अब अंत में, एक डिबेट पैकेज बनाने के लिए, मैं निम्नलिखित कमांड लाइन का उपयोग करता हूं:

sudo checkinstall -D -y \
  --install=no \
  --fstrans=no \
  --reset-uids=yes \
  --pkgname=feh \
  --pkgversion=2.7 \
  --pkgrelease="tar.bz2" \
  --arch=i386 \
  --pkglicense=GPL \
  --maintainer="Debian PhotoTools Maintainers <pkg-phototools-devel@lists.alioth.debian.org>" \
  --pakdir=../.. \
  --requires=libc6,libice6,libsm6,libx11-6,libxaw7,libxext6,libxmu6,libxt6,dpkg,install-info

ठीक है, ध्यान दें कि मैंने --install=noवहां उपयोग किया है? यहां तक ​​कि man checkinstallकहते हैं:

- बनाए गए पैकेज की टॉगल स्थापना को अनइंस्टॉल करें।

खैर, यह वही है जो यह checkinstallआदेश देता है:

checkinstall 1.6.2, Copyright 2009 Felipe Eduardo Sanchez Diaz Duran
           This software is released under the GNU GPL.

/usr/bin/checkinstall: eval: line 598: syntax error near unexpected token `newline'
/usr/bin/checkinstall: eval: line 598: `echo Debian PhotoTools Maintainers <pkg-phototools-devel@lists.alioth.debian.org>'

The package documentation directory ./doc-pak does not exist. 
Should I create a default set of package docs?  [y]: y

Preparing package documentation...OK

*****************************************
**** Debian package creation selected ***
*****************************************

This package will be built according to these values: 

0 -  Maintainer: [ root@mypc ]
1 -  Summary: [ Package created with checkinstall 1.6.2 ]
2 -  Name:    [ feh ]
3 -  Version: [ 2.7 ]
4 -  Release: [ tar.bz2 ]
5 -  License: [ GPL ]
6 -  Group:   [ checkinstall ]
7 -  Architecture: [ i386 ]
8 -  Source location: [ feh-2.7 ]
9 -  Alternate source location: [  ]
10 - Requires: [ libc6,libice6,libsm6,libx11-6,libxaw7,libxext6,libxmu6,libxt6,dpkg,install-info ]
11 - Provides: [ feh ]
12 - Conflicts: [  ]
13 - Replaces: [  ]

Enter a number to change any of them or press ENTER to continue: 

Installing with make install...

========================= Installation results ===========================
installing manuals to /usr/local/share/man
installing docs to /usr/local/share/doc/feh
installing executables to /usr/local/bin
installing fonts to /usr/local/share/feh/fonts
installing images to /usr/local/share/feh/images
installing examples to /usr/local/share/doc/feh/examples

======================== Installation successful ==========================

NOOOOOOOOOOOOOOOOO !!!!!!!!!!

मैं नहीं चाहता था कि लानत पैकेज INSTALL करने के लिए - क्या मुझे --install=noCRUTIN के बारे में पता है!

और फिर, जाहिरा तौर पर व्यंग्यात्मक होने के प्रयास में, लॉग जारी है:

Copying documentation directory...
./
./TODO
./AUTHORS
./COPYING
./ChangeLog
./README

Copying files to the temporary directory...OK

Stripping ELF binaries and libraries...OK

Compressing man pages...OK

Building file list...OK

Building Debian package...OK

NOTE: The package will not be installed

आपको इस " नोट: पैकेज को स्थापित नहीं किया जाएगा ", सही, श्री के साथ मजाक कर रहे होंगेcheckinstall ? बिल्कुल तुम हो; यह हो जाने के बाद, ध्यान दें कि मुझे क्या मिलेगा:

$ apt-cache show feh | grep Version
Version: 1.10-1

$ feh --version
feh version 2.7
Compile-time switches: curl xinerama 

$ which feh
/usr/local/bin/feh

निश्चित नहीं है कि यह कहाँ 1.10-1से आया है (यह कम से कम 1.3.4, ऊपर के अनुसार होना चाहिए ?) - लेकिन इसका लानत स्पष्ट है कि 2.7 DID स्थापित हो गए हैं, IN SPITE ऑफ माई इंस्ट्रक्शन नॉट इंस्टाल ...

निश्चित रूप से, मैं बाद में हटाने की कोशिश कर सकता हूं:

$ sudo dpkg -r feh
(Reading database ... 202193 files and directories currently installed.)
Removing feh ...
$ sudo dpkg --purge feh
(Reading database ... 202163 files and directories currently installed.)
Removing feh ...
Purging configuration files for feh ...
$ feh --version
feh version 2.7
Compile-time switches: curl xinerama 
$ which feh
/usr/local/bin/feh

... लेकिन यह भी dpkg --purgeकाम नहीं करता है ( apt-get removeशुरू करने के लिए काम नहीं करेगा, क्योंकि यह मैन्युअल रूप से स्थापित है। deb पैकेज)। और dpkg -rएक संस्करण नहीं देने के अलावा (इसलिए मुझे वास्तव में यकीन नहीं है कि यह क्या है जिसे हटा दिया जाना चाहिए) - यह वास्तव में खूनी निष्पादन योग्य नहीं हटा था!

लेकिन कर सकते हैं किसी को भी समझाने यहाँ क्या चल रहा है - और कैसे प्राप्त करने के लिए checkinstallकरने के लिए केवल एक .deb उत्पन्न करते हैं, और एक ही समय में इसे स्थापित नहीं? बोनस प्रश्न - निष्पादक सहित सभी फ़ाइलों को कैसे हटाया जाए /usr/local/bin/, जो इस तरह से स्थापित हो गए - चूंकि स्पष्ट रूप से dpkg -rकाम नहीं करता है?


मैं चकरा गया हूं। यदि आप बाइनरी पैकेज रखते हैं, तो आप स्रोत से इंस्टॉल क्यों करना चाहते हैं?
फहीम मीठा

और आपने --maintainer के बारे में त्रुटि कैसे ठीक की?
कुंभ राशि

मैंने जांच स्थापना सूत्रों RE: --maintainer त्रुटि पर एक नज़र डाली। मुद्दा निर्विवाद <और> प्रतीकों का परिणाम है। तो आसान जवाब है: प्रतीकों का उपयोग न करें। अधिक समस्याग्रस्त उत्तर यह है कि चेक स्थापना के साथ एक गंभीर समस्या है। पूरा स्रोत इससे अटा पड़ा है eval echo $1... यह वास्तव में होना चाहिए eval "echo '$1'"। मुझे लगता है कि मैं लेखक या किसी चीज़ के संपर्क में आने की कोशिश करूँगा।
छह

जवाबों:


13

सही; मुझे लगता है कि मुझे अंत में समझ में आया कि क्या हो रहा है - कुंजी लाइन जो मैं याद कर रहा हूं वह है:

Installing with make install...

इसका मतलब है कि make install2.7 स्रोत पैकेज में से एक चलाया गया था - शायद "देखने" के लिए जहां वे फाइलें अंततः समाप्त हो जाएंगी, ताकि नए स्थानों में उन स्थानों को लिख सकें। लेकिन किसी भी मामले में, नया 2.7 .deb वास्तव में स्थापित नहीं हुआ - और इसीलिए इसे हटाया नहीं जा सका dpkg -rऔर निष्पादन योग्य अभी भी इसके बाद भी सुस्त था dpkg -r

तो इस इंस्टॉलेशन को चलाने के बाद हटाने के लिए checkinstall, वास्तव make uninstallमें fehस्रोत फ़ोल्डर से कॉल करना चाहिए :

$ make uninstall
rm -f /usr/local/share/man/man1/feh.1 /usr/local/share/man/man1/feh-cam.1
rm -f /usr/local/share/man/man1/gen-cam-menu.1
rm -rf /usr/local/share/doc/feh
rm: cannot remove `/usr/local/share/doc/feh/TODO': Permission denied
rm: cannot remove `/usr/local/share/doc/feh/examples/keys': Permission denied
rm: cannot remove `/usr/local/share/doc/feh/examples/themes': Permission denied
rm: cannot remove `/usr/local/share/doc/feh/examples/buttons': Permission denied
rm: cannot remove `/usr/local/share/doc/feh/AUTHORS': Permission denied
rm: cannot remove `/usr/local/share/doc/feh/ChangeLog': Permission denied
rm: cannot remove `/usr/local/share/doc/feh/README': Permission denied
make: *** [uninstall] Error 1

$ sudo make uninstall
rm -f /usr/local/share/man/man1/feh.1 /usr/local/share/man/man1/feh-cam.1
rm -f /usr/local/share/man/man1/gen-cam-menu.1
rm -rf /usr/local/share/doc/feh
rm -f /usr/local/bin/feh /usr/local/bin/feh-cam /usr/local/bin/gen-cam-menu
rm -rf /usr/local/share/feh/fonts
rm -rf /usr/local/share/feh/images

... और फिर अंत में मैं नए बनाए गए पैकेज की कोशिश कर सकता हूं:

$ sudo dpkg -i feh_2.7-tar.bz2_i386.deb 
Selecting previously deselected package feh.
(Reading database ... 202165 files and directories currently installed.)
Unpacking feh (from feh_2.7-tar.bz2_i386.deb) ...
Setting up feh (2.7-tar.bz2) ...
Processing triggers for man-db ...

$ feh --version
feh version 2.7
Compile-time switches: curl xinerama 

$ sudo dpkg --purge feh
(Reading database ... 202198 files and directories currently installed.)
Removing feh ...
dpkg: warning: while removing feh, directory '/usr/local/share/doc' not empty so not removed.
Processing triggers for man-db ...

$ feh --version
bash: /usr/local/bin/feh: No such file or directory

# or in new terminal 
$ feh --version
The program 'feh' is currently not installed.  You can install it by typing:
sudo apt-get install feh

ओह अच्छा .... आशा है कि मैं सही ढंग से समझ गया कि प्रक्रिया अब कैसे हो जाती है, हालांकि ..


6

जांच को सुनिश्चित करने के लिए एक व्यक्ति को हां में बदलाव करना चाहिए ताकि वास्तविक फाइलेट्री स्पर्श न हो सके

--fstrans=yes

1
मैंने इस स्विच का उपयोग किया --install=noऔर फ़ाइलों को स्थापित किया dpkgगया था, लेकिन अपडेट नहीं किया गया था।
एंटोनियोस हेजजियोर्गालिस

4

आप "दो बार" स्थापित कर सकते हैं:

  1. आपके द्वारा बनाए गए पैकेज के माध्यम से। आप इसे बंद कर सकते हैं--install=no

  2. मेक वाया। आप इसे केवल टाइप करके make(बिना install) बंद कर सकते हैं

उदाहरण:

  • कोई स्थापना नहीं:

    sudo checkinstall --install=no make

  • बनाने के माध्यम से एक स्थापना:

    sudo checkinstall --install=no make install


मुझे लगता है कि यह सबसे अच्छा जवाब है।
jgomo3

1
"sudo checkinstall --install = no --fstrans = Yes make" ने मेरे लिए काम किया। मैंने इस उत्तर को इस के साथ मिलाया: unix.stackexchange.com/a/170170/156284
Teo

-1

आपको उपयोग करने का प्रयास करना चाहिए:

sudo checkinstall --install=no make -n install

-1

का प्रयोग करें: sudo checkinstall -D make -n install


कृपया अपना उत्तर बताएं।
वॉनब्रांड

1
make -n installmakeवास्तव में फ़ाइलों को स्थापित करने से रोकता है, लेकिन checkinstallपरिणामों की ठीक से व्याख्या नहीं करता है। आप एक डिबेट फ़ाइल के साथ समाप्त होते हैं जिसमें आपकी ज़रूरत की सभी फाइलें नहीं होती हैं। तो, यह काम नहीं करता है।
टिम टिस्डल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.