ডেবিয়ান চেকইনস্টল ইনস্টল = না উপেক্ষা করে; এটি কীভাবে তৈরি করা যায় তবে একটি প্যাকেজটি স্ব-ইনস্টল করবেন না?


14

ঠিক আছে, এখানে একটি জিনিস আমাকে ধাঁধা দেয় ... আমি উত্স থেকে একটি প্যাকেজ তৈরি করার চেষ্টা করছি এবং তারপরে checkinstallএকটি .deb প্যাকেজ উত্পন্ন করার জন্য ব্যবহার করব । মনে রাখবেন যে আমি কেবল .deb প্যাকেজটি তৈরি করতে চাই, তবে আমি এটি ইনস্টল করতে চাই না।

সুতরাং, এখানে একটি উদাহরণ রয়েছে - আমি উবুন্টু ১১.০৪ এ আছি, এবং প্রথমে আমি এটি 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=noক্রাইনের জন্য বেশি জোরে ব্যবহার করেছি !!!

এবং তারপরে স্পষ্টতই ব্যঙ্গাত্মক হওয়ার প্রয়াসে লগটি চালিয়ে যায়:

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উপরের হিসাবে কমপক্ষে হওয়া উচিত ছিল ?) - তবে এটি নির্দোষ যে স্পষ্টভাবে যে ২. D ইনস্টল করা হয়নি, আমার নির্দেশ সত্ত্বেও ইনস্টল করা হয়নি ...

অবশ্যই, আমি পরে অপসারণ করতে চেষ্টা করতে পারেন:

$ 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'"। আমার ধারণা আমি লেখকের সাথে বা অন্য কিছুর সংস্পর্শে আসার চেষ্টা করব।
ছয়

উত্তর:


13

রাইট; আমার মনে হয় আমি শেষ পর্যন্ত বুঝতে পেরেছি কি হচ্ছে - আমি যে কী লাইনটি মিস করেছি তা হ'ল:

Installing with make install...

এর অর্থ হল যে make install২. source উত্স প্যাকেজটি চালিত হয়েছিল - সম্ভবত "দেখুন" যেখানে এই ফাইলগুলি শেষ পর্যন্ত শেষ হবে, যাতে নতুন .deb এ সেই অবস্থানগুলি লিখতে পারে? তবে যে কোনও ক্ষেত্রে, নতুন 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 করার হ্যাঁ checkinstall নিশ্চিত করার বাস্তব filetree স্পর্শ করবে না

--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 চেকইনস্টল -ডি মেক-ইনস্টল করুন


আপনার উত্তর ব্যাখ্যা করুন।
ভোনব্র্যান্ড

1
make -n installmakeআসলে ফাইলগুলি ইনস্টল করা থেকে বিরত checkinstallথাকে তবে ফলাফলগুলি সঠিকভাবে ব্যাখ্যা করে না। আপনার একটি ডেব ফাইল শেষ হবে যাতে আপনার প্রয়োজনীয় সমস্ত ফাইল থাকে না। সুতরাং, এটি কাজ করে না।
টিম টিসডাল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.