मैं केवल एक उपयोगकर्ता के लिए DEB फ़ाइल द्वारा एक एप्लिकेशन कैसे स्थापित करूं?


33

सॉफ़्टवेयर केंद्र या DEB फ़ाइल के माध्यम से एप्लिकेशन इंस्टॉल करते समय उन्हें आमतौर पर सभी उपयोगकर्ताओं के लिए सिस्टम चौड़ा स्थापित किया जाएगा।

क्या केवल एक उपयोगकर्ता के लिए एक एप्लिकेशन इंस्टॉल करने का एक तरीका है?

जवाबों:


5

आप जो हासिल करना चाहते हैं, उसके आधार पर, इस काम को करने के लिए अलग-अलग तरीके हो सकते हैं (या कम से कम आप चाहते हैं कि कार्यक्षमता की हैकी झलक दे)।

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

चाहे आप प्रिंटर तक पहुंच प्रदान करने की बात कर रहे हों, या उपयोगकर्ता को किसी निश्चित निर्देशिका में प्रोग्राम निष्पादित करने की अनुमति दे रहे हों, इसे पूरा करने के तरीके हैं, और हालांकि वे उबंटू के मूल निवासी हो सकते हैं, इस प्रकार के समाधान आम तौर पर (निश्चित रूप से) होने जा रहे हैं एक स्थापना स्थापना के तथ्य के बाद जोड़ा जाएगा।

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

विजिबिलिटी कंट्रोल
मेरे पास शायद कुछ इसी तरह की स्थिति है, लेकिन मेरे मामले में, उपयोगकर्ता बहुत परिष्कृत नहीं थे (सभी 7 साल से कम उम्र के थे)। मेरे लिए, बस गनोम मेनू को छुपाना या डेस्कटॉप लांचर को हटाना काम किया।

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

निष्पादन नियंत्रण
संसाधन का नियंत्रण यूनिक्स अनुमतियों, ऐपमोरर प्रोफाइल, SELinux अनुमतियों, और इसी तरह से किया जा सकता है। नियंत्रण फ़िल्टरिंग के अन्य स्तर हो सकते हैं जो अनुप्रयोग के आधार पर खेल में आ सकते हैं। अधिक लक्षित समाधानों की अनुपस्थिति में, आपको उपयोगकर्ता या प्रक्रिया एक्सेस को नियंत्रित करने के लिए कुछ कार्यक्रमों के आसपास रैपर लिखना पड़ सकता है।


3
दृश्यता और निष्पादन नियंत्रण पहलू को अलग करने के लिए +1
ताकत

10

कुंआ dpkg यह आपकी मदद नहीं करेगा क्योंकि यह इसका डिज़ाइन उद्देश्य नहीं है। यह एक सिस्टम पर स्थापित पैकेजों का मूल स्वामित्व वाली एकमात्र जनगणना बनना चाहता है।

केवल एक चीज जो मन में उछलती है, वह है सिर्फ पैकेज निकालना और फाइलों को होम डायर में मैन्युअल रूप से रखने की कोशिश करना।

हालांकि यह केवल कुछ चीजों के लिए काम करेगा। बहुत सारे पैकेज विखंडू (निष्पादन योग्य या स्क्रिप्ट /usr/bin, लाइब्रेरी, /libऔर अन्य गारब इन /usr/shareइत्यादि) में विभाजित हैं और ये स्थान बिल्ड स्क्रिप्ट द्वारा हार्ड-कोडित हैं। इस प्रकार यदि आप कोशिश करते हैं और इस तरह से कुछ में खींचते हैं ~, तो यह टूट जाएगा। आप निर्भरता को कम करने में घंटों बिता सकते हैं लेकिन आप अपने समय के साथ कुछ उपयोगी कर सकते हैं जैसे कि कैंसर का इलाज ढूंढना या दुनिया की कुछ सुंदरता को अवशोषित करना।

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


1
अंतिम विकल्प के रूप में: यह मुझे लगता है कि यह कुछ (सरल प्रोग्राम) मामलों में मदद कर सकता है, लेकिन आमतौर पर उदाहरण के लिए पैकेज init स्क्रिप्ट स्थापित करता है /etc/init, में कॉन्फ़िगर फ़ाइलों की तलाश करता है /etc, या कुछ अन्य रास्तों को हार्डकोड किया गया है।
व्यवस्था करें

2
ऑटोकॉन्फ़ पर आधारित परियोजनाएँ कस्टम स्थापित करने की अनुमति दे सकती हैं ./configure --prefix=$HOME/local
इंगो करकट

6

मुझे इस विषय के बारे में बहुत अधिक जानकारी नहीं है, लेकिन यह अन्य उत्तरों से लगता है कि आप पैरामीटर के उपयोग के /साथ एक पैकेज को दूसरी निर्देशिका में स्थापित करने में सक्षम हो सकते हैं , और फिर कर सकते हैंdpkg--rootchroot dir जो पैकेज था, "करने के लिए स्थापित "में (जो उपयोगकर्ता की होम डायरेक्टरी में निश्चित रूप से एक निर्देशिका हो सकती है)।

के अलावा किसी अन्य उपयोगकर्ता के लिए एक पैकेज स्थापित rootकरने के लिए, इसके fakechrootबजाय उपरोक्त प्रक्रिया का उपयोग करना संभव हो सकता है chroot

डिस्क्लेमर : मैंने यह कोशिश नहीं की, और इसके साथ लिखने के समय बहुत अधिक अनुभव नहीं है dpkgया chroot, लेकिन इन उपकरणों के बारे में मुझे क्या पता है, यह प्रक्रिया सिर्फ काम कर सकती है

लिंक जिसमें ऐसी जानकारी है जो उन लोगों के लिए उपयोगी हो सकती है जो chrootबिना rootक्षमताओं के प्रभाव को प्राप्त करना चाहते हैं :

अद्यतन करें

मैंने अब उन चीजों के साथ थोड़ा सा काम किया है जो इस विषय पर छूती हैं, और कुछ और पता चला है ...

टुकड़े (स्थानीय पर्यावरण निर्माण ब्लॉक):

  • फ़ेचरोच - अनुकरण करता हैchroot(1)
  • डीबूटस्ट्रैप - एक निर्देशिका के अंदर एक और डेबियन फ़ाइल सिस्टम पदानुक्रम बनाएँ
  • फ़ेकरूट-एनजी / फ़ेकरूट - कुछ चीज़ों के लिए मूल होने का दिखावा कर सकता है
  • EmDebian - एक डेबियन संस्करण जो कम जगह का उपयोग करता है और अक्सर चेरोट वातावरण में उपयोग किया जाता है
  • binfmt_misc - अपने दुभाषियों का उपयोग करके फ़ाइलें चला सकते हैं, जैसे कि वे मूल बायनेरिज़ हों; विदेशी आर्किटेक्चर ( स्क्रिप्ट / qemu-binfmt-conf.sh जो QEMU स्रोत कोड के साथ आता है ) के बायनेरिज़ (या (नकली) चेरोट ) के साथ काम करने के लिए qemu- उपयोगकर्ता के साथ उपयोगी है।
  • Qemu उपयोगकर्ता स्थान - अन्य आर्किटेक्चर के बायनेरी चला सकते हैं; इन उपकरणों में से कुछ के साथ इस्तेमाल किया जा सकता है जब वे कुछ प्रोसेसर आर्किटेक्चर का समर्थन नहीं करते हैं
  • LwIP - एक टीसीपी / आईपी नेटवर्किंग स्टैक जो यूजर स्पेस से चलाया जा सकता है

पूर्ण (पूर्ण स्थानीय पर्यावरण प्रदाता):

  • उपयोगकर्ता मोड लिनक्स - एक नियमित प्रक्रिया / कार्यक्रम के रूप में एक और लिनक्स सिस्टम चलाता है
  • Qemu - एक पूर्ण वर्चुअल कंप्यूटर चलाएँ
  • PRoot - की कार्यक्षमताओं प्रदान करता है chroot(1), mount --bind, binfmt_misc, और का उपयोग अन्य आर्किटेक्चर से बाइनरी चल qemu-उपयोगकर्ता के अंतरिक्ष
  • लिनक्स नेमस्पेस - यूजर नेमस्पेस का उपयोग करते समय एक स्थानीय वातावरण के अंदर पूर्ण रूट की अनुमति देता है , एक सुविधा जो लिनक्स कर्नेल संस्करण 3.8 और उसके बाद में उपलब्ध है।

सारांश : स्थानीय रूप से रूट विशेषाधिकार का अनुकरण या वास्तव में होने से, DEB संकुल को स्थानीय वातावरण के लिए स्थापित किया जा सकता है।


3
यदि आपके पास ऐसी जानकारी है जो आपके पिछले जानकारी के विपरीत है (या यदि आपको लगता है कि यह कुछ भी जोड़ता है) तो अपने जवाब को पूरी तरह से सुधारने के लिए स्वतंत्र महसूस करें। कई मामलों में आपका उत्तर अधिक स्पष्ट होगा यदि आप अतिरिक्त "एडिट" या "अपडेट" अनुभागों को जोड़ने के बजाय रीफ़्रेज़ करते हैं। आपकी जानकारी दिलचस्प है, लेकिन संभवतः सबसे अधिक प्रासंगिक भाग नीचे स्थित हैं।
बेलाक्वा

@jgbelacqua - reformatted, टिप के लिए धन्यवाद।
अब्बाफेई

4

आप संभवतः किसी अन्य निर्देशिका में स्थापित करने के --rootविकल्प का उपयोग कर सकते हैं dpkg। लेकिन शायद समस्याओं में चला जाएगा अगर आवेदन निर्धारित स्थानों में सामान के लिए दिखता है/etc

संक्षेप में, मुझे नहीं लगता कि एक आसान तरीका है।


2

आप निष्पादन योग्य फ़ाइल के स्वामित्व को बदल सकते हैं ताकि केवल एक उपयोगकर्ता इसे चला सके। फिर, यदि आवश्यक हो, तो आप अन्य उपयोगकर्ताओं के मेनू से एप्लिकेशन को हटा सकते हैं।


1
किसी एकल उपयोगकर्ता के लिए एप्लिकेशन इंस्टॉल करने की इच्छा के लिए एक आम प्रेरणा स्थापना के लिए प्रशासनिक विशेषाधिकारों का उपयोग करने की आवश्यकता से बचने के लिए है।
ændrük

@ ændrük लेकिन अगर वह पहले से ही एक से स्थापित कर रहा है -deb, क्या हम व्यवस्थापक विशेषाधिकार नहीं मान रहे हैं?
बेलाक्वा

@jgbelacqua मेरे ज्ञान के लिए, हाँ, .deb से संस्थापन के लिए व्यवस्थापक विशेषाधिकारों की आवश्यकता होती है। लेकिन, अधिक आम तौर पर, "केवल एक उपयोगकर्ता के लिए" कुछ स्थापित करने से सिस्टम-वाइड प्रशासन के लिए उपयोग किए जाने वाले विशेषाधिकारों के लिए कभी भी उन्नयन की आवश्यकता नहीं होनी चाहिए। उदाहरण के लिए, मैं अक्सर केवल उन्हें रखकर अपने लिए कार्यक्रम स्थापित करता हूं ~/bin। इस सवाल में एक अस्पष्टता है कि क्या टेककैट एक बहु-उपयोगकर्ता अनुप्रयोग की पहुंच / दृश्यता को प्रतिबंधित करना चाहता है, या क्या वह एकल-उपयोगकर्ता अनुप्रयोग स्थापित करना चाहता है। आपके और व्यवस्था के प्रश्न पूर्व व्याख्या का उपयोग करते हैं, और बाकी उत्तरार्द्ध मानते हैं।
ændrük

1

संदिग्ध।

डिब के मुख्य रूप से अभिलेखागार हैं जो स्थापित होने पर आपके फाइल सिस्टम के मूल में निकाले जाते हैं (साथ ही कुछ कॉन्फिगर)। यदि आप उन्हें केवल एक उपयोगकर्ता के लिए इंस्टॉल करना चाहते हैं, तो आपको किसी तरह उन्हें / होम / उपयोगकर्ता फ़ोल्डर में स्थापित करना होगा। यहां तक ​​कि अगर आपने ऐसा किया है, तो वे काम नहीं करेंगे, क्योंकि फ़े एप्लिकेशन बायनेरिज़ / usr / bin (या sth समान) में नहीं उतरेंगे, और सिस्टम उन्हें नहीं ढूंढेगा यदि आप उन्हें लॉन्च करने का प्रयास करेंगे। इसी तरह पुस्तकालय आदि बेकार होंगे, क्योंकि सिस्टम को नहीं पता होगा कि कहीं / घर हैं। आप ब्रूट-फोर्स एप्रोच की कोशिश कर सकते हैं , और जहाँ भी आपने डीबक आर्काइव से फाइल निकाली है, उसे इंगित करने के लिए पैट वैरिएबल को एडजस्ट कर सकते हैं, लेकिन यह न केवल बहुत असुरक्षित हो सकता है, लेकिन हो सकता है कि संगतता समस्याएं हों (फ़ेन मेनू प्रविष्टियाँ काम नहीं करेंगी, क्योंकि GNOME .desktop फ़ाइलों को / usr / share / एप्लीकेशंस में होने की संभावना है)।

इसके अलावा, यदि आपने कुछ उपयोगकर्ताओं के लिए एक पैकेज स्थापित किया है, तो यह पागल निर्भरता की समस्या पैदा कर सकता है, अगर किसी अन्य उपयोगकर्ता ने पैकेज स्थापित किया है जो किसी अन्य के साथ संघर्ष करता है जिसे आपने अभी अपने लिए स्थापित किया है - और संभवतः अन्य पैकेज प्रबंधन से संबंधित मुद्दों के टन दिखाई देंगे।

इन सभी परेशानियों के कारण उपयोगकर्ताओं के लिए अलग से पैकेजों का प्रबंधन करना बेहद मुश्किल हो जाता है, इसलिए ऐसा लगता है कि उन्हें केवल एक उपयोगकर्ता के लिए इंस्टॉल करना संभव नहीं है, क्योंकि .debs के पीछे का विचार इसे अस्वीकार कर देता है।

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