การกระจายที่แตกต่างกันจะแก้ไขตำแหน่งของไฟล์กำหนดค่าสำหรับโปรแกรมอย่างไร


14

โปรแกรม Linux จำนวนมากระบุว่าตำแหน่งไฟล์ config นั้นขึ้นอยู่กับการกระจาย ฉันสงสัยว่าการกระจายที่แตกต่างกันทำสิ่งนี้อย่างไร พวกเขาปรับเปลี่ยนรหัสต้นฉบับจริงหรือไม่ มีพารามิเตอร์บิลด์ที่กำหนดตำแหน่งเหล่านี้หรือไม่ ฉันค้นหาสิ่งนี้แล้ว แต่ไม่พบข้อมูลใด ๆ ฉันรู้ว่ามันอยู่ที่นั่นฉันไม่สามารถหามันเจอ "วิธี Linux" ในเรื่องนี้คืออะไร?

คำตอบ:


14

ขึ้นอยู่กับการแจกจ่ายและแหล่งที่มาดั้งเดิม ('ต้นน้ำ')

ด้วยแพ็กเกจ autoconf- และ automake-using ส่วนใหญ่จึงเป็นไปได้ที่จะระบุไดเรกทอรีที่จะค้นหาไฟล์การกำหนดค่าโดยใช้--sysconfdirพารามิเตอร์ ระบบการสร้างอื่น ๆ (เช่น CMake) มีตัวเลือกที่คล้ายกัน หากแพ็กเกจซอร์สใช้หนึ่งในระบบบิลด์เหล่านั้นตัวทำแพ็กเกจสามารถระบุพารามิเตอร์ที่ถูกต้องได้อย่างง่ายดายและไม่ต้องการแพตช์ แม้ว่าพวกเขาจะไม่ได้ (เช่นเนื่องจากแหล่งที่มาอัปสตรีมใช้ระบบการสร้างที่สร้างขึ้นในบ้าน) บางครั้งก็ยังคงเป็นไปได้ที่จะระบุการกำหนดค่าการสร้างบางอย่างเพื่อย้ายไฟล์กำหนดค่าไปยังตำแหน่งเฉพาะโดยไม่ต้องแก้ไขแหล่งที่มา

มันไม่ใช่กรณีนั้นบ่อยครั้งที่การกระจายจะต้องเพิ่มแพตช์ลงในแหล่งที่มาเพื่อให้มันย้ายไฟล์ในสิ่งที่พวกเขาคิดว่าเป็นตำแหน่งที่ 'ถูกต้อง' ในกรณีส่วนใหญ่ผู้แจกจ่ายแพ็คเก็ตจะเขียนแพตช์ซึ่งจะอนุญาตให้กำหนดค่าซอร์สในแง่ข้างต้นเพื่อให้พวกเขาสามารถส่งแพตช์ไปยังผู้ดูแลอัปสตรีมและไม่จำเป็นต้องทำการบำรุงรักษา / อัปเดตต่อไป นี่เป็นกรณีสำหรับตำแหน่งไฟล์การกำหนดค่า แต่สำหรับสิ่งอื่น ๆ เช่นbin/ sbinexecutables (การตีความสิ่งที่คำสั่งของผู้ดูแลระบบแตกต่างกันระหว่างการแจกแจง) ตำแหน่งที่จะเขียนเอกสารและอื่น ๆ

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


8

มีแพทช์นำไปใช้กับแผนผังซอร์สโค้ดที่ปรับตำแหน่ง

มี "มาตรฐาน" เพียงพอที่การกระจายทุกครั้งสามารถเลือกได้ตามความชอบ (ส่วนตัว) และ / หรือวิธีปฏิบัติทางประวัติศาสตร์ ไม่ค่อยมีวิธีการแก้ปัญหาที่เพียงมีข้อได้เปรียบ บางครั้งก็น่ารำคาญ / สับสน แต่ความสม่ำเสมอในการกระจายข้อมูลเป็นวัตถุประสงค์ที่สำคัญที่สุด: มันทำให้เกิดความยุ่งเหยิงน้อยลงและคาดเดาได้ง่ายขึ้นว่าสิ่งใดที่อาจเป็นโปรแกรม Y หากคุณทราบว่าสิ่งใดที่คล้ายกัน (ไฟล์ตั้งค่า / การกำหนดค่าเช่น) เอ็กซ์

ตัวอย่างการใช้งานโปรแกรมปะแก้

แพคเกจหลามของฉันruamel.yamlมีอยู่ใน Debian Sid มันเคยเป็นที่พึ่งruamel.baseและผู้ใช้ที่ติดตั้งผ่านทาง PyPI อาจยังคงมีเวอร์ชั่นที่เก่ากว่าเข้ากันไม่ruamel.baseได้ การใช้setup.py/ PyPI ไม่ใช่การจัดการแพ็คเกจจริงดังนั้นคุณจึงไม่สามารถลบแพ็คเกจที่ติดตั้งไว้ก่อนหน้านี้ผ่านการอ้างอิง ฉันแก้ไขปัญหาสำหรับผู้ใช้ PyPI ด้วยการสร้างเวอร์ชันที่ใหม่กว่าruamel.baseซึ่งลบปัญหาที่เกี่ยวข้องกับruamel.baseแพ็คเกจเก่าและทำให้ruamel.yamlขึ้นอยู่กับเวอร์ชันที่ใหม่กว่านั้น

สำหรับ Sid นี่ไม่ใช่ปัญหา: ruamel.baseไม่ได้ติดตั้งเวอร์ชันเก่ากว่า(หรือสามารถลบออกได้ด้วยการจัดการแพ็คเกจ) ดังนั้นพวกเขาจึงใช้แพทช์ซึ่งคุณสามารถหาได้ในruamel.yamlหน้าข้อมูลสำหรับซิดที่เอาการพึ่งพาของบนruamel.yamlruamel.base

การแจกแจงอื่น ๆ มีการตั้งค่าที่คล้ายกัน เช่นถ้าคุณดูที่ข้อกำหนดในการสร้างไฟล์ RPM ต้นทาง (เช่น RedHat / CentOS / SuSE) คุณจะเห็นว่าคุณรวม tarball ดั้งเดิมดั้งเดิมของแพ็กเกจเข้ากับแพทช์หนึ่งตัวหรือมากกว่าที่จะใช้ก่อนการกำหนดค่า / รวบรวม .

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