Score:2

วิธีอย่างเป็นทางการของ Debian/Ubuntu ในการติดตั้งไฟล์กำหนดค่าใหม่ในไดเร็กทอรีผู้ใช้คืออะไร

ธง ph

ฉันกำลังสร้างแพ็คเกจที่มีการตั้งค่าเริ่มต้นสำหรับผู้ใช้ สิ่งที่มักปรากฏภายใต้ ~/.<บางชื่อ> หรือ ~/.config/<app>/<some>.conf และไฟล์ที่คล้ายกัน

ในกรณีส่วนใหญ่ ไฟล์เหล่านี้จะถูกติดตั้งในไดเร็กทอรี Skeleton (/etc/skel) แต่สิ่งเหล่านี้จะถูกติดตั้งเฉพาะในโฮมไดเร็กทอรีของผู้ใช้ใหม่เท่านั้น ฉันต้องการให้ผู้ใช้ที่มีอยู่ได้รับไฟล์ในขณะที่ติดตั้งแพ็คเกจด้วย

มาตรฐานเดเบียนพูดอะไรเกี่ยวกับเรื่องนั้น?


สำหรับตัวอย่างที่เป็นรูปธรรม ฉันมี .lessfilter สคริปต์ที่ฉันต้องการเพิ่มลงใน แพ็คเกจส่วนบุคคล ด้วยวิธีนี้มันจึงถูกติดตั้งบนเครื่องทั้งหมดของฉัน

ดังนั้นในของฉัน alex-tools.install ไฟล์ที่ฉันมี:

สคริปต์/.lessfilter /etc/skel

ฉันรู้ว่าฉันสามารถสร้าง alex-tools.postinst สคริปต์เป็นเช่นนั้น (ยังไม่ได้ทดสอบ ใช้ด้วยความระมัดระวัง):

#!/bin/sh -e
#
#จบการติดตั้ง

#DEBHELPER#

# แหล่งไลบรารี debconf
. /usr/share/debconf/confmodule

ถ้า [ "$1" = "กำหนดค่า" ]
แล้ว
    # ติดตั้งไฟล์ในโฟลเดอร์ผู้ใช้
    #
    สำหรับคุณใน /root /home/*
    ทำ
        ถ้า ! ทดสอบ -f "${u}/.lessfilter"
        แล้ว
            cp /etc/skel/.lessfilter "${u}/.lessfilter"
            chmod 700 "${u}/.lessfilter"
            chown "${u}" "${u}/.lessfilter"
        ไฟ
    เสร็จแล้ว
ไฟ

แต่ฉันคิดว่าสิ่งนี้อาจไม่ถือว่า "ถูกกฎหมาย" ใน Debian และอาจมีวิธีที่สะอาดกว่าในการนำไปใช้

มีบางอย่างเกี่ยวกับสิ่งนี้ในการอ้างอิงของ Debian หรือไม่

Score:1
ธง jp

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

การติดตั้งไฟล์คอนฟิกูเรชัน

หลายโปรแกรมจะตรวจสอบตำแหน่งการกำหนดค่าส่วนกลางก่อน (เช่น /etc/my_program) ก่อนตรวจสอบการกำหนดค่าต่อผู้ใช้ (เช่น ~/.my_program). เมื่อเป็นไปได้ ควรวางการกำหนดค่าไว้ที่ตำแหน่งส่วนกลาง

ตัวอย่างที่ชัดเจนของการติดตั้งไฟล์คอนฟิกูเรชันต่อผู้ใช้สำหรับ ~/.lessfilter เป็นเรื่องที่น่าสนใจเพราะว่า ไม่มีไฟล์การกำหนดค่าส่วนกลาง ตัวเลือก. ในกรณีนี้ หากคุณกำลังจัดเตรียมแพ็คเกจ my_package ถ้าอย่างนั้นก็สามารถ

  • สร้างการกำหนดค่าส่วนกลางที่ /usr/share/my_package/lessfilter
  • เพิ่มสคริปต์ /etc/profile.d/my_package ด้วยเนื้อหาเช่น
[ -f "${HOME}/.lessfilter" ] || cp /usr/share/my_package/lessfilter "${HOME}/.lessfilter"

สิ่งนี้จะช่วยให้มีความยืดหยุ่นมาก ข้อเสียที่ชัดเจนก็คือ /etc/profile อาจส่งผลต่อเซสชัน Bash แบบโต้ตอบเท่านั้น และคุณอาจต้องรองรับสถานการณ์อื่นๆ

ลิงค์

ph flag
โอ้ ทุกครั้งที่มีคนเข้าสู่ระบบ สคริปต์ภายใต้ `/etc/profile.d` จะทำงาน ดีแล้ว. `cp` อาจเป็น `ln -s ...` ในกรณีนั้น ด้วยวิธีนี้ฉันสามารถเสนอสคริปต์ที่ "เป็นกลาง" ซึ่งไม่ทำอะไรเลย จากนั้นผู้ใช้สามารถสลับระหว่างเวอร์ชันเต็มหรือสคริปต์ที่ไม่ทำอะไรเลย
ph flag
ฉันสร้างโครงการชื่อ [advgetopt](https://github.com/m2osw/advgetopt) ซึ่งมีความสามารถในการรองรับผู้ดูแลระบบส่วนกลาง (`/usr/share/...`) (`/ etc/...`) และไฟล์การกำหนดค่าที่ผู้ใช้กำหนด (`~/.config/...`) ในโหมดอ่านและเขียนและรูปแบบที่แตกต่างกันบ้าง ดังนั้นฉันจึงเข้าใจวิธีปกติของการตั้งค่า น่าเสียดายที่ `less' ยังไม่ก้าวหน้าเท่าที่คุณค้นพบ นอกจากนี้ แพ็คเกจส่วนตัวของฉันยังเป็นส่วนหนึ่งของฉันเพื่อหลีกเลี่ยงการติดตั้งทั้งหมดด้วยมือทุกครั้งที่ฉันติดตั้งเซิร์ฟเวอร์ Ubuntu ใหม่...

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา