ठीक है, यहाँ एक चीज है जो मुझे पहेली करती है ... मैं स्रोत से एक पैकेज बनाने की कोशिश कर रहा हूं, और फिर 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=no
CRUTIN के बारे में पता है!
और फिर, जाहिरा तौर पर व्यंग्यात्मक होने के प्रयास में, लॉग जारी है:
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
काम नहीं करता है?
eval echo $1
... यह वास्तव में होना चाहिए eval "echo '$1'"
। मुझे लगता है कि मैं लेखक या किसी चीज़ के संपर्क में आने की कोशिश करूँगा।