วิธีสร้างไดเรกทอรีและเปลี่ยนเจ้าของด้วยแพ็คเกจ deb


11

ฉันต้องสร้างแพคเกจ deb ที่จะสร้างไดเรกทอรีสำหรับบันทึก ฉันต้องการที่จะสร้างไดเรกทอรีและจะเปลี่ยนเจ้าของไป/var/logs/my_packagemy_user

ในเอกสารมีข้อมูลที่ฉันสามารถสร้างไฟล์debian/dirได้ แต่มีข้อมูลว่านี่ไม่ใช่วิธีที่ดีที่สุดที่จะทำ และไม่มีข้อมูลว่าควรเปลี่ยนเจ้าของไดเรคทอรีได้อย่างไร (ฉันกำลังคิดที่จะวางคำสั่งchown my_user.my_user /var/logs/my_packageไว้ในdebian/postinstไฟล์)

วิธีที่แนะนำในการสร้างไดเรกทอรีด้วยแพ็คเกจ deb คืออะไร?


ยินดีต้อนรับสู่ถาม Ubuntu ได้โปรดคุณใช้เวลาอ่านaskubuntu.com/help/someone-answers ได้ไหม
Sylvain Pineau

คำตอบ:


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
ฉันขอโทษอย่างยิ่ง แต่สิ่งนี้ไม่ตอบคำถามของฉัน
bessarabov

โปรดอธิบายสาเหตุที่สคริปต์ postinst นี้ไม่ตอบคำถามเดิมของคุณ ตอนนี้ฉันงุนงงไปหน่อย
Sylvain Pineau

ฉันขอโทษที่ฉันไม่ได้อธิบายในลักษณะที่เหมาะสม โซลูชันของคุณใช้งานได้ดีและนี่คือสิ่งที่ฉันได้ดำเนินการ แต่เอกสารบอกว่าThis generally means there is a problem with the Makefile.ฉันเข้าใจข้อความนี้ว่ามีวิธีอื่นที่จะทำ และฉันต้องการค้นหาว่าอะไรคือวิธีที่แนะนำในการทำงานนี้
bessarabov

1
การสร้างไดเรกทอรีสามารถทำได้debian/rulesซึ่งเป็นMakefileแพ็คเกจสำหรับเดเบียน เนื่องจากฉันไม่รู้ว่าคุณdebian/rulesต้องการเสนอวิธีแก้ปัญหาโดยใช้ไฟล์เดียว แต่chownคำสั่งจะต้องเป็นกระบวนการหลังการติดตั้ง เดเบียน / dirs ควรหลีกเลี่ยง แต่คำตอบแรกของฉันดีมาก กรุณาลงคะแนนและยอมรับขอบคุณ
Sylvain Pineau

3

Yo ไม่จำเป็นต้องสร้างpostinstสคริปต์ แต่วิธีการแก้ปัญหายังค่อนข้างยุ่งยาก ฉันใช้dhไวด์การ์ดในdebian/rules:

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

binary:
        dh $@

ซึ่งทำทุกสิ่งที่จำเป็น แต่ฉันต้องลบล้างความเป็นเจ้าของของผู้ใช้บางคน (เรียกว่าข้อมูล) ดังนั้นฉันต้องทำข้อยกเว้นฉันใช้คำสั่งพิเศษ (นี่คือตัวอย่าง):

    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 แต่ก็ยังมีเคล็ดลับอยู่ Debhelper มีสคริปต์ dh_fixperms ซึ่งจะแก้ไขความเป็นเจ้าของกลับไปที่รูทดังนั้นเราจึงต้องแทนที่ด้วย:

override_dh_fixperms:
    dh_fixperms --exclude data

นั่นคือทั้งหมดที่ โปรดจำไว้ว่าข้อมูล dir ไม่นับเป็น conffile ดังนั้นมันจะถูกลบออกเมื่อแพ็กเกจลบออก หากคุณต้องการทำให้มันเป็นเรื่อง conffile มันเป็นอีกเรื่องหนึ่ง


สิ่งนี้ต้องการให้ผู้ใช้และกลุ่มมีอยู่ในระบบที่สร้างแพ็คเกจหรือไม่ และถ้าใช่มีวิธีที่จะทำให้แน่ใจว่ามีกลไกแบบอิงเดเบียนหรือไม่?
moritz

สิ่งนี้จะสร้างไดเรกทอรีบนระบบที่ใช้ในการสร้างแพ็คเกจ debian ไม่ใช่ระบบที่ติดตั้งแพ็คเกจ
gerardw
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.