lokasi default postgresql saat menginstal melalui apt-get

15

Ketika Anda menginstal postgresql pada 14.04, itu menempel program server utama postgres di:

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

direktori data tempat semua cluster basis data akan disimpan di:

/var/lib/postgresql/9.3/main

dan file konfigurasi di:

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

Sekarang saya bisa mengerti mengapa postgresql.conf dan file konfigurasi lainnya disimpan di /etc/postgresql/9.3/main. Bagaimanapun, / etc adalah tempat file konfigurasi disimpan dalam sistem linux.

Namun, mengapa menempatkan area penyimpanan basis data di / var / lib? Saya dapat mengerti / var, karena itu adalah tempat untuk data tidak statis dan database tidak statis. Tapi mengapa / var / lib khususnya?

Lebih lanjut, saya percaya bahwa / bin adalah untuk program yang diperlukan untuk boot. / usr / bin adalah untuk program yang termasuk dalam distribusi. dan / usr / local / bin harus untuk program yang tidak termasuk dalam distribusi tetapi tersedia untuk penggunaan seluruh sistem. Dan karena postgresql ditujukan untuk penggunaan di seluruh sistem, seharusnya postgresql tersedia di / usr / local / bin. Namun, mereka meletakkannya di / usr / lib, yang saya tidak tahu mengapa.

Mengapa saya menanyakan pertanyaan ini? Karena tanpa urutan dan struktur, sulit untuk mengingat lokasi program yang Anda gunakan sehari-hari.

Donato
sumber

Jawaban:

11

Dalam Standar Hierarki Filesystem, `/ var / lib / dinyatakan sebagai (huruf miring bagian yang paling penting):

5.8.1 Tujuan

Hirarki ini menyimpan informasi status yang berkaitan dengan aplikasi atau sistem. Informasi negara adalah data yang diubah oleh program saat dijalankan, dan yang berkaitan dengan satu host tertentu. Pengguna tidak perlu memodifikasi file di / var / lib untuk mengkonfigurasi operasi paket.

Informasi negara umumnya digunakan untuk menjaga kondisi aplikasi (atau sekelompok aplikasi yang saling terkait) antara doa dan antara berbagai contoh aplikasi yang sama. Informasi negara umumnya tetap valid setelah reboot, tidak boleh mencatat output, dan tidak boleh spooled data.

Aplikasi (atau sekelompok aplikasi yang saling terkait) harus menggunakan subdirektori / var / lib untuk datanya. Ada satu subdirektori yang diperlukan, / var / lib / misc, yang ditujukan untuk file status yang tidak memerlukan subdirektori; subdirektori lain hanya boleh ada jika aplikasi yang dimaksud termasuk dalam distribusi.

/ var / lib / adalah lokasi yang harus digunakan untuk semua dukungan kemasan distribusi. Distribusi yang berbeda mungkin menggunakan nama yang berbeda, tentu saja.

Singkatnya: / var / lib / adalah untuk data yang digunakan secara lokal.

Jadi masuk akal untuk memasukkan data database ke direktori / var / lib / {mysql | postgress} / tapi ... FHS adalah standar yang dibuat sebagian besar untuk digunakan oleh distribusi . Sebagai pengguna, Anda bebas untuk meletakkan data di mana pun Anda inginkan dan itu sebagian besar masalah pendapat.


Anda salah mengerti kata "lokal". / usr / local / bin / bukan untuk perangkat lunak sistem tetapi untuk perangkat lunak Anda sendiri (pada dasarnya segala sesuatu dengan "lokal" di tidak boleh disentuh oleh sistem. Seperti dijelaskan oleh FHS:

/ usr / local /

4.9.1 Tujuan

Hirarki / usr / lokal untuk digunakan oleh administrator sistem ketika menginstal perangkat lunak secara lokal. Itu harus aman dari ditimpa ketika perangkat lunak sistem diperbarui. Ini dapat digunakan untuk program dan data yang dapat dibagikan di antara sekelompok host, tetapi tidak ditemukan di / usr. Perangkat lunak yang diinstal secara lokal harus ditempatkan di dalam / usr / local daripada / usr kecuali jika sedang diinstal untuk mengganti atau memutakhirkan perangkat lunak di / usr.

Sebuah executable yang diinstal dari perangkat lunak sistem tidak boleh pergi ke sesuatu yang lokal.


Sekarang untuk / usr / lib / .

4.7.1 Tujuan

/ usr / lib termasuk file objek, pustaka, dan binari internal yang tidak dimaksudkan untuk dieksekusi langsung oleh pengguna atau skrip shell. Aplikasi dapat menggunakan subdirektori tunggal di bawah / usr / lib. Jika suatu aplikasi menggunakan subdirektori, semua data yang bergantung pada arsitektur yang digunakan secara eksklusif oleh aplikasi harus ditempatkan di dalam subdirektori itu.

postgressql mungkin daemon dimulai saat boot? Jika demikian, masuk akal untuk meletakkannya di sini. Anda tidak seharusnya menggunakan perintah sendiri tetapi memulai layanan. File-file di / usr / lib / cenderung memiliki pengguna dan grup sendiri dan / atau daemon yang membatasi akses ke / var / lib (hanya mysqld yang dapat mengakses / var / lib / mysql / misalnya; ini akan sama untuk postgressql)

Rinzwind
sumber