निर्देशिका कैसे बनाएं और यह डिबेट पैकेज के साथ उसके मालिक को कैसे बदलें


11

मुझे डिब पैकेज बनाने की आवश्यकता है जो लॉग के लिए निर्देशिका बनाएगा। मैं निर्देशिका बनाना चाहता हूं /var/logs/my_packageऔर इसके स्वामी को बदलना चाहता हूं my_user

में डॉक्स जानकारी नहीं है कि मैं फ़ाइल बना सकते हैं debian/dir। लेकिन जानकारी है कि यह ऐसा करने का सबसे अच्छा तरीका नहीं है। और कोई जानकारी नहीं है कि किसी को निर्देशिका मालिक को कैसे बदलना चाहिए (मैं chown my_user.my_user /var/logs/my_packageइसे debian/postinstफाइल में कमांड रखने के बारे में सोच रहा हूं )।

डिबेट पैकेज के साथ डायरेक्टरी बनाने का अनुशंसित तरीका क्या है?


उबंटू पूछने के लिए आपका स्वागत है। कृपया, आप अपने समय में से कुछ पढ़ने के लिए डाल सकता है askubuntu.com/help/someone-answers
सिल्वेन पिनाओ

जवाबों:


9

आप सही थे, आपको debian/my_package.postintइस तरह के ऑपरेशन को करने के लिए एक फ़ाइल की आवश्यकता है :

#!/bin/sh

#DEBHELPER#

set -e

USER="my_user"

mkdir -p /var/log/my_package/    
if id -u $USER > /dev/null 2>&1; then    
    chown ${USER}:${USER} /var/log/my_package/
fi

नोट : यदि उपयोगकर्ता कॉल करने से पहले मौजूद है तो स्क्रिप्ट की जाँच करता है chown


1
मुझे बेहद खेद है, लेकिन यह मेरे सवाल का जवाब नहीं देता है।
बिसरबॉव

कृपया बताएं कि यह पोस्टस्टाइन स्क्रिप्ट आपके मूल प्रश्न का उत्तर क्यों नहीं देती है। मैं अब थोड़ा हैरान हूँ।
सिल्वेन पिनेउ

मुझे खेद है कि मैंने इसे उचित तरीके से नहीं समझाया। आपका समाधान ठीक काम करता है और यही मैंने लागू किया है। लेकिन डॉक्स का कहना है कि This generally means there is a problem with the Makefile.मैं इस संदेश को समझता हूं कि इसे करने का कोई और तरीका है। और मैं यह पता लगाना चाहता हूं कि इस कार्य को करने का तरीका क्या है।
बिसरबॉव

1
निर्देशिका निर्माण किया जा सकता है debian/rulesजिसमें Makefileडेबियन पैकेज हैं। चूँकि मुझे नहीं पता था कि debian/rulesमैं एक फ़ाइल के आधार पर एक समाधान प्रस्तावित करना पसंद करता हूँ। लेकिन chownकमांड एक स्थापना के बाद की प्रक्रिया होनी चाहिए। डेबियन / डायर से बचा जाना चाहिए लेकिन मेरा प्रारंभिक उत्तर बिल्कुल ठीक है। कृपया वोट करें और इसे स्वीकार करें, धन्यवाद।
सिल्वेन पिनेउ

3

यो को postinstस्क्रिप्ट बनाने की आवश्यकता नहीं है , लेकिन समाधान अभी भी थोड़ा मुश्किल है। मैं dhवाइल्डकार्ड का उपयोग करता हूं debian/rules:

#!/usr/bin/make -f
%:
        dh $@

binary:
        dh $@

जो सभी आवश्यक सामान करता है। लेकिन मुझे कुछ dir के स्वामित्व को ओवरराइड करने की आवश्यकता है (इसे डेटा कहते हैं)। इसलिए मुझे कुछ अपवाद करना चाहिए, मैं विशेष निर्देश का उपयोग करता हूं (यह एक उदाहरण है):

    override_dh_install:
        dh_install   #calls default *.install and *.dirs installation
        install -d -o www-data -g www-data $(CURDIR)/debian/<package_name>/var/www/<something>/data 

डेटा निर्देशिका को * .dirs फ़ाइल में होने की आवश्यकता नहीं है। लेकिन फिर भी एक तरकीब है। देबेल्पर में स्क्रिप्ट dh_fixperms शामिल है, जो स्वामित्व को मूल रूप से ठीक करेगा, इसलिए हमें भी ओवरराइड करने की आवश्यकता है:

override_dh_fixperms:
    dh_fixperms --exclude data

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


क्या यह आवश्यक है कि उपयोगकर्ता और समूह उस सिस्टम पर मौजूद है जहाँ पैकेज बनाया गया है? और यदि हाँ, तो क्या यह सुनिश्चित करने का एक तरीका है कि डेबियन-आधारित तंत्र के साथ?
मोरित्ज़

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