যদি আমি উত্স থেকে কোনও প্যাকেজ তৈরি করি তবে কীভাবে আমি আনইনস্টল করতে পারি বা সম্পূর্ণরূপে অপসারণ করতে পারি?


137

আমি নীচে যেমন একটি প্যাকেজ তৈরি করতে উত্স কোড ব্যবহার করেছি:

./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libexecdir=/usr/lib --with-package-name="Myplugin" --with-package-origin="http://www.ubuntu.org/" --enable-gtk-doc --disable-static
make
make install

তবে দুর্ভাগ্যক্রমে, আমি এটি আবিষ্কার করেছি যে এটির সর্বশেষতম সংস্করণ রয়েছে এবং এতে প্রচুর বাগ রয়েছে, তাই আমার এটি সরিয়ে / আনইনস্টল করা দরকার। তবে আমি কীভাবে এটি করতে পারি? আমি চেষ্টা করেছি make clean; make uninstallকিন্তু তবুও দেখতে পাচ্ছি এটি বিদ্যমান:

# pkg-config --list-all | grep Myplugin
myplugin-....
$ ls /usr/lib/myplugin/libXYZ.so
exist....

আপনি এখন এটি কীভাবে সরিয়ে ফেলবেন?

উত্তর:


177

সাধারণত আপনি কেবল ব্যবহার করতে পারেন:

make uninstall

অথবা

sudo make uninstall

অ্যাপটি যদি রুট হিসাবে ইনস্টল করা থাকে।

তবে এটি কেবল তখনই কাজ করবে যদি প্যাকেজের বিকাশকারী একটি ভাল আনইনস্টল নিয়ম তৈরির যত্ন নেয়।

আপনি চালিয়ে সফটওয়্যারটি ইনস্টল করতে ব্যবহৃত পদক্ষেপগুলি একবার দেখার চেষ্টা করতে পারেন:

make -n install

এবং তারপরে ম্যানুয়ালি এই পদক্ষেপগুলি উল্টানোর চেষ্টা করুন।

ভবিষ্যতে এই ধরণের সমস্যা এড়াতে যখনই সম্ভব সম্ভব checkinstallহওয়ার পরিবর্তে ব্যবহার করার চেষ্টা করুন make install(এএফএআইকি সবসময় আপনি যদি না একই সময়ে সংকলিত এবং প্যাকেজযুক্ত সংস্করণ উভয়ই রাখতে চান)। এটি একটি ডেব ফাইল তৈরি এবং ইনস্টল করবে যা আপনি আপনার প্রিয় প্যাকেজ পরিচালক ব্যবহার করে আনইনস্টল করতে পারেন।

make cleanসাধারণত বিল্ডিং ডিরেক্টরিগুলি পরিষ্কার করে, এটি প্যাকেজটি আনইনস্টল করে না। এটি ব্যবহার করা হয় যখন আপনি নিশ্চিত হতে চান যে কেবলমাত্র পরিবর্তিত ফাইলগুলিই পুরো জিনিসটি সংকলিত হয়েছে।


আমি এটাও করেছি। তবে এখনও এটি বিদ্যমান, যেমন
পিকেজি

36
ব্যবহারের জন্য +1 checkinstall- এটি পুরো সমস্যাটিকে বাষ্পে পরিণত করে।
অলি

6
@ গুগল: যদি আনইনস্টলটি কাজ না করে তবে আপনাকে কী ইনস্টল করেছে তা ট্র্যাক করতে হবে এবং ম্যানুয়ালি এটিকে পূর্বাবস্থায় ফেরাতে হবে।
জাভিয়ের রিভেরা

4
আরেকটি বিষয় মনে রাখবেন তা হ'ল যদি সাধারণত make installরুট (যেমন, sudo make install) হিসাবে চালিত sudo make uninstallহয় তবে সফ্টওয়্যারটি অপসারণ করার জন্য এটি ভার্চুয়াল সর্বদা চালানো দরকার ।
এলিয়াহ কাগন

5
আপনি যদি ইতিমধ্যে চালিয়ে থাকেন তবে আপনি make installএখনও ব্যবহার করতে পারেন checkinstall। সাধারণত checkinstallযা কিছু make installতৈরি হয়েছিল সেগুলি ওভাররাইট করে দেবে । এর পরে কেবল ব্যবহার করুন dpkg -r <package.deb>, এবং সমস্ত কিছু মুছে ফেলা উচিত।
ব্যবহারকারী 502144

28

আমি মনে করি না এটি একটি ত্রুটি, উত্স থেকে ইনস্টল করার সময় চেকইনস্টল সম্পর্কে পড়তে এবং ব্যবহার করা শিখাই ভাল ধারণা হবে।

আপনি সংগ্রহস্থল থেকে চেকইনস্টল ইনস্টল করতে পারেন, প্যাকেজের সংক্ষিপ্ত বিবরণ;

চেকইনস্টল আপনার ইনস্টলেশন স্ক্রিপ্ট দ্বারা তৈরি বা সংশোধিত সমস্ত ফাইলের নজর রাখে ("ইনস্টল করুন" "ইনস্টল করুন_মডিউলগুলি তৈরি করুন", "সেটআপ", ইত্যাদি), একটি স্ট্যান্ডার্ড বাইনারি প্যাকেজ তৈরি করে এবং এটি ইনস্টল করে আপনার সিস্টেমে এটি আনইনস্টল করার সুযোগ দেয় আপনার বিতরণের মানক প্যাকেজ পরিচালনার ইউটিলিটিগুলি।

নীচের এই লিঙ্কগুলি আরও ভাল বোঝার জন্য সহায়ক হতে পারে। http://en.wikipedia.org/wiki/CheckInstall

http://checkinstall.izto.org/


16

এটি কোনও ত্রুটি নয় - উত্স থেকে সংকলন হ'ল সফ্টওয়্যার ইনস্টল করার একটি অসমর্থিত পদ্ধতি যা প্যাকেজ পরিচালনা সিস্টেম (যা সফ্টওয়্যার কেন্দ্র ব্যবহার করে) পুরোপুরি বাইপাস করে।

উত্স থেকে সংকলিত সফ্টওয়্যার ইনস্টল বা আনইনস্টল করা হয়নি এমন কোনও মানক উপায় নেই যাতে কোনওভাবেই উবুন্টু কী করতে পারে তা জানতে পারে না। এমনকি সফ্টওয়্যারটি ইনস্টলড প্রোগ্রাম হিসাবে তালিকাভুক্ত নয়।

এই জাতীয় কাস্টম সফ্টওয়্যার ইনস্টলেশন ও অপসারণের জন্য আপনার বিতরণকারীর নির্দেশাবলী অনুসরণ করা উচিত। আপনি বিকাশকারীদের সাথে ডেবিয়ান প্যাকেজ তৈরি করতে বলার জন্য যোগাযোগ করতে পারেন যাতে প্যাকেজ পরিচালনা ব্যবস্থা ব্যবহার করা যায়।


3

এটি কোনও বাগ নয়, যখন ডেভেলপাররা স্থানীয় প্যাকেজিং পদ্ধতির মাধ্যমে নয় বরং উত্সের মাধ্যমে বিতরণ শুরু করে it

আপনি চেকইনস্টল বা ডিএইচ বিল্ড ব্যবহার করে আপনার উত্স ফাইলগুলি ডেবিয়ান প্যাকেজ হতে পারেন। সত্য, আমার মতে - নতুন ব্যবহারকারীদের উত্স থেকে ইনস্টল করা এড়ানো উচিত এবং বিকাশকারীদের কেবল উত্স দ্বারা বিতরণ করা এড়ানো উচিত।


আমি জানি তবে কখনও কখনও এটি অনিবার্য হয় ... এক্ষেত্রে এটি কেবল একটি ছোট খেলা ছিল যা সত্যই প্রয়োজনীয় নয় তবে কিছুটা সময় আগে আমার বিশ্ববিদ্যালয়ে ব্যবহৃত একটি গণনার সরঞ্জাম ম্যাটল্যাব ইনস্টল করতে হয়েছিল এবং উত্স দ্বারা এটি ইনস্টল করতে হয়েছিল যেহেতু তারা করেছিল উবুন্টুর জন্য কোনও ডেবি ফাইল নেই ... তবে আমি অবশ্যই চেকইনস্টল এবং ধুবিল্ড পদ্ধতিগুলি ব্যবহার করব ... ধন্যবাদ
নিক 90 ডিসেম্বর

1

আমি এমন কয়েকটি প্যাকেজ সম্পর্কে জানি যা "মেক আনইনস্টল" সমর্থন করে তবে আরও অনেকগুলি সমর্থন করে যে মঞ্চস্থ ইনস্টলের জন্য "DESTDIR = xxx" ইনস্টল করে মেক করে।

আপনি উত্স থেকে সরাসরি ইনস্টল না করে ইনস্টল করা প্যাকেজ তৈরি করতে আপনি এটি ব্যবহার করতে পারেন। চেকইনস্টল নিয়ে আমার ভাগ্য নেই তবে এফএম খুব ভাল কাজ করে।

এটি মেক ইনস্টল ব্যবহার করে পূর্বে ইনস্টল করা প্যাকেজ অপসারণ করতে আপনাকে সহায়তা করতে পারে । আপনি কেবল নিজের তৈরি প্যাকেজটি মেক ইনস্টলডটির উপর জোর করে ইনস্টল করুন এবং তারপরে এটি আনইনস্টল করুন।

উদাহরণস্বরূপ, আমি প্রোটোবুফ -৩.৩.০ এর সাথে ডিল করতে সম্প্রতি এটি ব্যবহার করেছি। RHEL7 এ:

make install DESTDIR=dest
cd dest
fpm -f -s dir -t rpm -n protobuf -v 3.3.0 \
 --vendor "You Not RedHat" \
 --license "Google?" \
 --description "protocol buffers" \
 --rpm-dist el7 \
 -m you@youraddress.com \
 --url "http:/somewhere/where/you/get/the/package/oritssource" \
 --rpm-autoreqprov \
 usr

 sudo rpm -i -f protobuf-3.3.0-1.el7.x86_64.rpm
 sudo rpm -e protobuf-3.3.0      

পারলে ইউএমকে আরপিএম পছন্দ করুন।

দেবিয়ান 9 তে:

make install DESTDIR=dest
cd dest
fpm -f -s dir -t deb -n protobuf -v 3.3.0 \
-C `pwd` \
--prefix / \
--vendor "You Not Debian" \
--license "$(grep Copyright ../../LICENSE)" \
--description "$(cat README.adoc)" \
--deb-upstream-changelog ../../CHANGES.txt \
 --url "http:/somewhere/where/you/get/the/package/oritssource" \
 usr/local/bin \
 usr/local/lib \
 usr/local/include

 sudo apt install -f *.deb
 sudo apt-get remove protobuf

আপনি যেখানে পারেন সেখানে অ্যাপ্লিকেশনকে পছন্দ করুন p

আমি এই উত্তরটি স্ট্যাকওভারফ্লোতেও পোস্ট করেছি


0

আমাদের এই বিষয়ে আলোচনা করতে হবে যে আনইনস্টল করা সবসময় কাজ করে না , সুতরাং নীচে আরও একটি প্র্যাক্টিভ সমাধান রয়েছে।

এর মধ্যে উকুন্টু সফটওয়্যার সেন্টারে পাওয়া প্যাকো প্রোগ্রামের ব্যবহার জড়িত। একবার আমরা প্যাকো ইনস্টল করার পরে, আমরা যখন কোনও প্রোগ্রাম "ইনস্টল" করব তখন আমরা এটি লগ মোডটি ব্যবহার করতে পারি। প্যাকো আপনার "মেক ইনস্টল" এর জন্য মোড়কের মতো কাজ করে এবং বিভিন্ন ডিরেক্টরিতে অনুলিপি করা ফাইলগুলির তালিকা সহ / var / লগ / প্যাকো ডিরেক্টরিতে একটি লগ তৈরি করে। তদতিরিক্ত, আপনি প্যাকো ফ্রন্ট প্রান্তে ফাইলগুলি দেখতে পেতেন।

উদাহরণস্বরূপ যখন আমি উত্স থেকে পিএইচপি সংকলন করেছি তখন নিম্নলিখিতগুলি করেছি:

paco -lp php5 "make install"

প্যারামিটার l প্যাকোটিকে লগ মোডে চালিত করে his এটিতে সমস্ত ফাইল রয়েছে যা ইনস্টল করার সময় বিভিন্ন মানক স্থানে অনুলিপি করা হয়েছিল। ফাইলগুলি দেখতে আপনি একটি কমান্ড লাইন সম্পাদক বা প্যাকো গুই ব্যবহার করতে পারেন।

নীচে সেড কমান্ড লাইন সম্পাদক ব্যবহার করে ফাইল তালিকা পাওয়ার উদাহরণ রয়েছে
(আপনার ফাইলের সাথে পিএইচপি 5 প্রতিস্থাপন করুন)।

cat /var/log/paco/php5 | sed -n 's/|\(.*\)//;/^#\(.*\)/d;p'

একবার আপনি ফাইলগুলির তালিকা পেয়েছেন, আপনি কীভাবে সেগুলি মুছবেন জানেন? প্রকৃতপক্ষে, আপনি উপরের কমান্ডের ফলাফলগুলি নীচে দেখানো মত ব্যাকটিকগুলি ব্যবহার করে আরএম করতে পারবেন :

sudo rm `cat /var/log/paco/php5 | sed -n 's/|\(.*\)//;/^#\(.*\)/d;p'`

কাজ শেষ!

দ্রষ্টব্য: LD_PRELOAD সীমাবদ্ধতার কারণে প্যাকো suid প্রোগ্রামগুলির ট্রেস অনুসরণ করতে পারে না। ম্যান পৃষ্ঠা দেখুন।


0

আমি কম্পাইল ছিল পিএইচপি-5.6.30 OpenSSL সঙ্গে এটি কনফিগার ছাড়া উৎস থেকে, তাই আমি ফিরে যান এবং আনইনস্টল করতে scratch.Using থেকে এটি ইনস্টল করা ছিল না Makefile নামক হিসেবে কাজ পিএইচপি এটা সমর্থন করেন না।

তবে, এই পদক্ষেপটি আমার পক্ষে কাজ করেছে - আমি পিএইচপি সম্পর্কিত সমস্ত ফাইল তালিকাভুক্ত করেছি এবং সেগুলি ম্যানুয়ালি মুছে ফেলেছি, ঘাম না ভাঙতে আমার প্রায় 5 মিনিট সময় লেগেছে। আপনি একইভাবে আপনার সংকলিত সফ্টওয়্যার আনইনস্টল করতে এই পদক্ষেপগুলি ব্যবহার করতে পারেন।

আপনার যে সফ্টওয়্যারটি আনইনস্টল করতে হবে তা দিয়ে পিএইচপি প্রতিস্থাপন করুন

whereis php

উপরের কমান্ডটি ডিরেক্টরিগুলি তালিকাভুক্ত করে যেখানে বাইনারিগুলি ইনস্টল করা আছে যেমন: / usr / local / bin / php, / usr / bin / php .. আপনার আউটপুটে তালিকাভুক্ত প্রতিটি ফাইল / ডিরেক্টরি সরান।

sudo rm -f /usr/local/bin/php

উপরের আউটপুটে তালিকাভুক্ত সমস্ত ফাইলের সাথে এটি করুন এবং আপনি স্ক্র্যাচ থেকে নতুন সংস্করণ ইনস্টল করতে প্রস্তুত।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.