apt-get के लिए एक स्क्रिप्ट हुक


17

मेरे पास /tmpएक अलग विभाजन है, और इसके साथ घुड़सवार है noexec। मैं डेबियन का उपयोग कर रहा हूं।

कुछ पैकेजों की स्थापना विफल हो जाती है, क्योंकि कुछ पैकेजों की पोस्ट-इंस्टॉलेशन स्क्रिप्ट को चलाने की आवश्यकता होती है /tmp

मैं सोच रहा था कि क्या यह एक सरल स्क्रिप्ट को "हुक" करना संभव होगा apt-get, जो हर बार पहले चलाया जाएगा apt-get, और इसके लिए रीमाउंट /tmpकिया जाएगा exec। और इसी तरह, noexecबाद apt-getमें समाप्त करने के लिए इसे बताएं ।

जवाबों:


26

आप dpkgइसे हटाने के लिए हुक प्रणाली का उपयोग कर सकते हैं - इसे इसमें डालें /etc/apt/apt.conf.d/00exectmp:

DPkg::Pre-Invoke {"mount -o remount,exec /tmp";};
DPkg::Post-Invoke {"mount -o remount /tmp";};  

-1

मम्बल, आप बस apt-getआपकी एक स्क्रिप्ट के साथ बदल सकते हैं ।

ले जाएँ apt-getकरने के लिए real-apt-getऔर, फिर, एक स्क्रिप्ट बनाएं जिसका नाम apt-getइस तरह:

#!/bin/sh

mount -o remount -o ... /tmp
real-apt-get "$@"
mount -o remount -o ... -o noexec /tmp

किसी भी मामले में, मुझे यह समाधान पसंद नहीं है। जरूरत पड़ने पर अस्थायी निर्देशिका पर्यावरण चर को बदलना आसान होता है। कुछ इस तरह (एस शैली):

mkdir /root/mytmp
TMPDIR=/root/mytmp
export TMPDIR
apt-get ...
rm -rf /root/mytmp

इस तरह apt-get /root/mytmpअस्थायी dir के रूप में उपयोग करेगा । सिस्टम को बदलने की जरूरत नहीं।


3
... जब तक aptपैकेज अपग्रेड नहीं हो जाता, तब तक । मैं पैकेज द्वारा आपूर्ति की गई फाइलों के साथ खिलवाड़ करने की सलाह नहीं देता।
रीस्टोरियरपोस्ट

पिछली टिप्पणी के अनुसार, अधिलेखित पैकेज की आपूर्ति की गई बायनेरिज़ एक बहुत बुरा विचार है ...! स्वीकृत उत्तर श्रेष्ठ है, लेकिन फिर भी यदि आप इस तरह से कुछ आगे बढ़ना चाहते हैं, तो इसके बजाय, स्क्रिप्ट को usr / usr / local / bin / apt-get (या बेहतर अभी भी, शायद ~ / bin / apt-get संभालने के रूप में सहेजें) कोई अन्य उपयोगकर्ता इसे नहीं चाहेगा; यह भी सुनिश्चित करें कि यह आपके मार्ग में है)। फिर "वास्तविक-उपयुक्त-प्राप्त" को कॉल करने के बजाय बस पूर्ण पथ / usr / bin / apt-get का उपयोग करें। तब आप अपनी स्क्रिप्ट को तोड़े बिना अपडेट कोई समस्या नहीं पा सकते हैं। (यह PATH में / usr / bin से पहले / usr / स्थानीय / बिन पर निर्भर करता है - डेबियन में डिफ़ॉल्ट)।
जेरेमी डेविस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.