अगर मैं स्रोत से पैकेज बनाता हूं तो मैं कैसे स्थापना रद्द कर सकता हूं या पूरी तरह से हटा सकता हूं?


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आमतौर पर इमारत निर्देशिकाओं को साफ करता है, यह पैकेज की स्थापना रद्द नहीं करता है। इसका उपयोग तब किया जाता है जब आप यह सुनिश्चित करना चाहते हैं कि पूरी चीज़ संकलित है, न कि केवल परिवर्तित फ़ाइलें।


मैंने वो भी किया। लेकिन फिर भी यह मौजूद है, जैसा कि pkg-config और ls /usr/lib/myplugin/libXYZ.so दिखाया गया है
YumYumYum

36
उपयोग करने के लिए +1 checkinstall- यह इस पूरी समस्या को वाष्पित कर देता है।
ओली

6
@Google: यदि स्थापना रद्द करना काम नहीं करता है, तो आपको यह ट्रैक करने की आवश्यकता होगी कि क्या स्थापित किया था और इसे मैन्युअल रूप से पूर्ववत करें।
जेवियर रिवेरा

4
ध्यान रखने वाली एक और बात यह है कि अगर make installरूट के रूप में चलाया जाता है (उदाहरण के लिए sudo make install), जो कि आमतौर पर होता है, तो sudo make uninstallसॉफ़्टवेयर को हटाने के लिए इसे चलाना हमेशा आभासी होता है ।
एलियाह कगन

5
यदि आप पहले ही दौड़ चुके हैं make install, तो भी आप उपयोग कर सकते हैं checkinstall। आम तौर पर बनाई गई checkinstallहर चीज को ओवरराइट कर देगा make install। उसके बाद बस उपयोग करें dpkg -r <package.deb>, और सब कुछ हटा दिया जाना चाहिए।
user502144

28

मुझे नहीं लगता कि यह एक बग है, स्रोत से इंस्टॉल करने के बारे में पढ़ने और चेक-इन का उपयोग करने के लिए सीखना अच्छा होगा।

आप रिपॉजिटरी से चेकइंस्टाल कर सकते हैं, पैकेज का संक्षिप्त विवरण;

CheckInstall आपके इंस्टॉलेशन स्क्रिप्ट ("इनस्टॉल" "make_ install_modules", "setup", आदि) द्वारा बनाई या संशोधित की गई सभी फाइलों पर नज़र रखता है, एक मानक बाइनरी पैकेज बनाता है और आपके सिस्टम में इसे इंस्टॉल करता है जो आपको अनइंस्टॉल करने की क्षमता देता है। आपके वितरण का मानक पैकेज प्रबंधन उपयोगिताओं।

बेहतर समझ पाने के लिए नीचे दिए गए ये लिंक सहायक हो सकते हैं। http://en.wikipedia.org/wiki/CheckInstall

http://checkinstall.izto.org/


16

यह एक बग नहीं है - स्रोत से संकलन सॉफ्टवेयर स्थापित करने का एक असमर्थित तरीका है जो पैकेज प्रबंधन प्रणाली (जो सॉफ्टवेयर सेंटर द्वारा उपयोग किया जाता है) को पूरी तरह से बायपास करता है।

कोई मानक तरीका नहीं है कि स्रोत से संकलित सॉफ़्टवेयर इंस्टॉल किया गया है या अनइंस्टॉल किया गया है, इसलिए कोई भी तरीका उबंटू को पता नहीं चल सकता है कि क्या करना है। सॉफ्टवेयर भी एक स्थापित कार्यक्रम के रूप में सूचीबद्ध नहीं है।

आपको ऐसे कस्टम सॉफ़्टवेयर की स्थापना और हटाने के लिए वितरक के निर्देशों का पालन करना चाहिए। आप डेबियन पैकेज बनाने के लिए उनसे पूछने के लिए डेवलपर से संपर्क कर सकते हैं ताकि पैकेज प्रबंधन प्रणाली का उपयोग किया जा सके।


3

यह बग नहीं है, यह तब होता है जब डेवलपर्स स्रोत के माध्यम से वितरण का सहारा लेते हैं और देशी पैकेजिंग विधियों के माध्यम से नहीं।

आप अपने स्रोत फ़ाइलों को चेकबाइक या dhbuild का उपयोग करके डेबियन पैकेज बनने के लिए प्राप्त कर सकते हैं। ईमानदारी से, मेरी राय में - नए उपयोगकर्ताओं को स्रोत से इंस्टॉल करने से बचना चाहिए, और डेवलपर्स को केवल स्रोत द्वारा वितरण से बचना चाहिए।


मुझे पता है लेकिन कभी-कभी यह अपरिहार्य है ... इस मामले में यह सिर्फ एक छोटा सा खेल था जो वास्तव में आवश्यक नहीं है, लेकिन कुछ समय पहले मुझे MATLAB को अपने विश्वविद्यालय में इस्तेमाल होने वाला एक कम्प्यूटेशनल उपकरण स्थापित करना पड़ा और इसे स्रोत द्वारा स्थापित करना पड़ा क्योंकि उन्होंने किया था ubuntu के लिए एक बहस फ़ाइल नहीं है ... लेकिन मैं निश्चित रूप से तरीकों की जाँच के माध्यम से जाना जाएगा स्थापना और dhbuild ... धन्यवाद
nik90

1

मुझे कुछ पैकेजों का पता है जो "स्थापना रद्द करें" का समर्थन करते हैं, लेकिन कई और समर्थन मंच स्थापित करने के लिए DESTDIR = xxx स्थापित करते हैं।

आप इसका उपयोग एक पैकेज बनाने के लिए कर सकते हैं जिसे आप स्रोत से सीधे इंस्टॉल करने के बजाय स्थापित करते हैं। मुझे चेक-इन के साथ कोई भाग्य नहीं था लेकिन fpm बहुत अच्छी तरह से काम करता है।

यह आपको मेक इनस्टॉल का उपयोग करके पहले से स्थापित एक पैकेज को हटाने में भी मदद कर सकता है । आप बस अपने इंस्टाल किए गए पैकेज को मेक इन इस्टॉल किए हुए पर स्थापित करें और फिर उसे अनइंस्टॉल करें।

उदाहरण के लिए, मैंने हाल ही में प्रोटोबुफ़-3.3.0 से निपटने के लिए इसका उपयोग किया। 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      

यदि आप कर सकते हैं rpm करने के लिए yum पसंद करते हैं।

डेबियन 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

जहाँ आप कर सकते हैं dpkg के लिए उपयुक्त पसंद करते हैं।

मैं भी यह उत्तर भेजा है stackoverflow


0

हमें इस तथ्य पर बातचीत करने की आवश्यकता है कि स्थापना रद्द करना हमेशा काम नहीं करेगा , इसलिए नीचे एक सक्रिय समाधान का अधिक है।

इसमें paco प्रोग्राम का उपयोग शामिल है जो उबंटू सॉफ्टवेयर सेंटर में उपलब्ध है। एक बार जब हम पाको को स्थापित कर लेते हैं, तो हम इसे लॉग मोड का उपयोग कर सकते हैं जब हम एक प्रोग्राम को "इनस्टॉल" करते हैं। पैको आपके "इंस्टॉल करें" के लिए एक आवरण की तरह काम करता है और विभिन्न निर्देशिकाओं में कॉपी की गई फ़ाइलों की सूची के साथ / var / log / paco निर्देशिका में लॉग बनाता है। इसके अलावा, आप पाको फ्रंट एंड में फाइलों को देख सकते हैं।

उदाहरण के लिए जब मैंने स्रोत से php संकलित किया तो मैंने निम्नलिखित किया:

paco -lp php5 "make install"

पैरामीटर l लॉग मोड में पाको को रन करता है। इसने php5 (कमांड में नाम मैंने दिया है) नाम से / var / log / paco में लॉग फाइल बनाई है। इसमें वे सभी फाइलें थीं जो इंस्टॉल के दौरान विभिन्न मानक स्थानों पर कॉपी की जाती हैं। आप फ़ाइलों को देखने के लिए एक कमांड लाइन संपादक या पाको गुई का उपयोग कर सकते हैं।

नीचे कमांड कमांड लाइन एडिटर का उपयोग करके फ़ाइल सूची प्राप्त करने का उदाहरण है
(अपने फ़ाइल नाम के साथ php5 बदलें)।

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

एक बार जब आप फ़ाइलों की सूची प्राप्त कर लेते हैं, तो आप जानते हैं कि उन्हें कैसे हटाया जाए? दरअसल, आप के लिए उपरोक्त आदेश के परिणाम दे सकते हैं RM बैकटिक का उपयोग कर नीचे दिखाया गया है जैसे:

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

काम हो गया!

नोट: LD_PRELOAD सीमाओं के कारण, paco सुसाइड प्रोग्राम्स के ट्रेस का पालन नहीं कर सकता है। मैन पेज देखें


0

मैंने php-5.6.30 को ओपनसिएल से कॉन्फ़िगर किए बिना स्रोत से संकलित किया था , इसलिए मुझे वापस जाना था और इसे स्क्रैच से स्थापित करना था। स्थापना रद्द करने से पीएचपी के लिए मेकफाइल के रूप में काम नहीं किया।

हालांकि, इस कदम ने मेरे लिए काम किया, - मैंने php से संबंधित सभी फाइलों को सूचीबद्ध किया और उन्हें मैन्युअल रूप से हटा दिया, मुझे पसीने को तोड़ने के बिना लगभग 5 मिनट लगे। आप अपने संकलित सॉफ़्टवेयर की स्थापना रद्द करने के लिए इन चरणों का उपयोग कर सकते हैं।

उस सॉफ़्टवेयर के साथ php को बदलें जिसे आपको अनइंस्टॉल करने की आवश्यकता है

whereis php

उपरोक्त कमांड उन निर्देशिकाओं को सूचीबद्ध करती है जहाँ बायनेरिज़ पूर्व स्थापित हैं: / usr / local / bin / php, / usr / bin / php .. अपने आउटपुट में सूचीबद्ध प्रत्येक फ़ाइल / निर्देशिका को हटा दें।

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

उपरोक्त आउटपुट में सूचीबद्ध सभी फाइलों के साथ ऐसा करें और आप नए संस्करण को खरोंच से स्थापित करने के लिए पूरी तरह तैयार हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.