ตำแหน่งเริ่มต้นของ postgresql เมื่อติดตั้งผ่าน apt-get


15

เมื่อคุณติดตั้ง postgresql ใน 14.04 มันจะติดโปรแกรมเซิร์ฟเวอร์หลัก postgres ไว้ที่:

/usr/lib/postgresql/9.3/bin/postgres

ไดเรกทอรีข้อมูลที่กลุ่มฐานข้อมูลทั้งหมดจะถูกเก็บไว้ที่:

/var/lib/postgresql/9.3/main

และไฟล์การกำหนดค่าที่:

/etc/postgresql/9.3/main/postgresql.conf

ตอนนี้ฉันสามารถเข้าใจว่าทำไม postgresql.conf และไฟล์การกำหนดค่าอื่น ๆ ถูกเก็บไว้ใน /etc/postgresql/9.3/main ท้ายที่สุด, / etc คือที่เก็บไฟล์การกำหนดค่าในระบบ linux.

อย่างไรก็ตามทำไมวางพื้นที่จัดเก็บฐานข้อมูลใน / var / lib ฉันสามารถเข้าใจ / var เนื่องจากเป็นสถานที่สำหรับข้อมูลที่ไม่คงที่และฐานข้อมูลจะไม่คงที่ แต่ทำไม / var / lib โดยเฉพาะ

เพิ่มเติมฉันเชื่อว่า / bin สำหรับโปรแกรมที่จำเป็นสำหรับการบูต / usr / bin สำหรับโปรแกรมที่รวมอยู่ในการกระจาย และ / usr / local / bin ควรมีไว้สำหรับโปรแกรมที่ไม่รวมอยู่ในการกระจาย แต่มีให้สำหรับการใช้งานทั่วทั้งระบบ และเนื่องจาก postgresql มีไว้สำหรับการใช้งานทั่วทั้งระบบจึงควรมีอยู่ใน / usr / local / bin แต่พวกเขาวางไว้ใน / usr / lib ซึ่งฉันไม่รู้ว่าทำไม

ทำไมฉันถึงถามคำถามนี้ เนื่องจากไม่มีคำสั่งซื้อและโครงสร้างจึงเป็นการยากที่จะจำตำแหน่งของโปรแกรมที่คุณใช้ทุกวัน

คำตอบ:


11

ใน Filesystem Hierarchy Standard `/ var / lib /ถูกระบุว่า (ในส่วนที่เป็นตัวเอียงที่สำคัญที่สุด):

5.8.1 วัตถุประสงค์

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

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

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

/ var / lib / เป็นตำแหน่งที่ต้องใช้สำหรับการสนับสนุนบรรจุภัณฑ์การกระจายทั้งหมด การแจกแจงที่แตกต่างกันอาจใช้ชื่อที่แตกต่างกันแน่นอน

ในระยะสั้น: / var / lib / สำหรับข้อมูลที่ใช้ในเครื่อง

ดังนั้นจึงทำให้รู้สึกดีที่จะนำข้อมูลของฐานข้อมูลลงใน / var / lib / {MySQL | postgress} / directory แต่ที่ ... FHS เป็นมาตรฐานที่สร้างขึ้นส่วนใหญ่สำหรับการใช้งานโดยการแจกแจง ในฐานะผู้ใช้คุณมีอิสระที่จะใส่ข้อมูลของคุณได้ทุกที่ที่ต้องการและเป็นเรื่องของความคิดเห็น


คุณกำลังเข้าใจผิดคำว่า "ท้องถิ่น" / usr / local / bin / ไม่ได้มีไว้สำหรับซอฟต์แวร์ระบบ แต่สำหรับซอฟต์แวร์ของคุณเอง (โดยทั่วไปสิ่งใดก็ตามที่มี "local" ในจะต้องไม่ถูกสัมผัสโดยระบบดังที่อธิบายไว้โดย FHS:

/ usr / / ท้องถิ่น

4.9.1 วัตถุประสงค์

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

ปฏิบัติการที่ติดตั้งจากซอฟต์แวร์ระบบไม่ควรไปที่ใดในพื้นที่


ตอนนี้สำหรับ/ usr / lib /

4.7.1 วัตถุประสงค์

/ usr / lib รวมถึงวัตถุไฟล์ไลบรารีและไบนารีภายในที่ไม่ได้ตั้งใจให้เรียกใช้งานโดยตรงจากผู้ใช้หรือสคริปต์เชลล์ แอปพลิเคชันอาจใช้ไดเรกทอรีย่อยเดียวภายใต้ / usr / lib หากแอปพลิเคชันใช้ไดเรกทอรีย่อยข้อมูลทั้งหมดขึ้นอยู่กับสถาปัตยกรรมที่ใช้โดยเฉพาะแอปพลิเคชันจะต้องอยู่ในไดเรกทอรีย่อยนั้น

postgressql น่าจะเป็น daemon เมื่อบูต ถ้าเป็นเช่นนั้นมันก็สมเหตุสมผลที่จะใส่ไว้ที่นี่ คุณไม่ควรใช้คำสั่งด้วยตัวเอง แต่ให้เริ่มบริการ ไฟล์ใน / usr / lib / มักจะมีผู้ใช้และกลุ่มของตนเองและ / หรือ daemon ที่ จำกัด การเข้าถึง / var / lib (อินสแตนซ์ mysqld เท่านั้นที่สามารถเข้าถึง / var / lib / mysql / นี้จะเหมือนกันสำหรับ PostgresSQL)

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