vị trí mặc định của postgresql khi cài đặt thông qua apt-get


15

Khi bạn cài đặt postgresql vào ngày 14.04, nó sẽ đăng các postgres của chương trình máy chủ chính tại:

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

thư mục dữ liệu nơi tất cả các cụm cơ sở dữ liệu sẽ được lưu trữ tại:

/var/lib/postgresql/9.3/main

và tập tin cấu hình tại:

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

Bây giờ tôi có thể hiểu tại sao postgresql.conf và các tệp cấu hình khác được lưu trữ trong /etc/postgresql/9.3/main. Xét cho cùng, / etc là nơi các tệp cấu hình được lưu trữ trong một hệ thống linux.

Tuy nhiên, tại sao lại đặt vùng lưu trữ cơ sở dữ liệu trong / var / lib? Tôi có thể hiểu / var, vì đó là nơi dành cho dữ liệu phi dữ liệu và cơ sở dữ liệu là phi ngôn ngữ. Nhưng tại sao / var / lib nói riêng?

Hơn nữa, tôi tin rằng / bin là dành cho các chương trình cần thiết để khởi động. / usr / bin dành cho các chương trình có trong bản phân phối. và / usr / local / bin nên dành cho các chương trình không có trong bản phân phối nhưng có sẵn để sử dụng trên toàn hệ thống. Và do đó, postgresql được thiết kế để sử dụng trên toàn hệ thống, nên nó có sẵn trong / usr / local / bin. Tuy nhiên, họ đặt nó trong / usr / lib, mà tôi không biết tại sao.

Tại sao tôi hỏi câu hỏi này? Bởi vì không có thứ tự và cấu trúc, rất khó để nhớ vị trí của các chương trình bạn sử dụng hàng ngày.

Câu trả lời:


11

Trong Tiêu chuẩn phân cấp hệ thống tập tin, `/ var / lib / được nêu là (in nghiêng phần quan trọng nhất):

5.8.1 Mục đích

Hệ thống phân cấp này chứa thông tin trạng thái liên quan đến một ứng dụng hoặc hệ thống. Thông tin trạng thái là dữ liệu mà các chương trình sửa đổi trong khi chúng chạy và liên quan đến một máy chủ cụ thể. Người dùng không bao giờ cần phải sửa đổi các tệp trong / var / lib để định cấu hình hoạt động của gói.

Thông tin trạng thái thường được sử dụng để bảo vệ tình trạng của một ứng dụng (hoặc một nhóm các ứng dụng liên quan đến nhau) giữa các yêu cầu và giữa các phiên bản khác nhau của cùng một ứng dụng. Thông tin trạng thái nói chung sẽ vẫn còn hiệu lực sau khi khởi động lại, không nên ghi nhật ký đầu ra và không nên lưu dữ liệu.

Một ứng dụng (hoặc một nhóm các ứng dụng liên quan đến nhau) phải sử dụng thư mục con / var / lib cho dữ liệu của nó. Có một thư mục con bắt buộc, / var / lib / misc, dành cho các tệp trạng thái không cần thư mục con; các thư mục con khác chỉ nên có mặt nếu ứng dụng đang được đề cập được đưa vào bản phân phối.

/ var / lib / là vị trí phải được sử dụng cho tất cả các hỗ trợ đóng gói phân phối. Các bản phân phối khác nhau có thể sử dụng tên khác nhau, tất nhiên.

Tóm lại: / var / lib / dành cho dữ liệu được sử dụng cục bộ.

Vì vậy, sẽ rất hợp lý khi đưa dữ liệu của cơ sở dữ liệu vào thư mục / var / lib / {mysql | postTHER} / nhưng ... FHS là một tiêu chuẩn được tạo ra chủ yếu để sử dụng cho các bản phân phối . Là người dùng, bạn có thể tự do đặt dữ liệu của mình bất cứ nơi nào bạn muốn và chủ yếu là vấn đề quan điểm.


Bạn đang hiểu nhầm từ "địa phương". / usr / local / bin / không dành cho phần mềm hệ thống mà dành cho phần mềm của riêng bạn (về cơ bản mọi thứ có "cục bộ" không bao giờ được hệ thống chạm vào. Như FHS giải thích:

/ usr / địa phương /

4.9.1 Mục đích

Hệ thống phân cấp / usr / cục bộ được quản trị viên hệ thống sử dụng khi cài đặt phần mềm cục bộ. Nó cần được an toàn để không bị ghi đè khi phần mềm hệ thống được cập nhật. Nó có thể được sử dụng cho các chương trình và dữ liệu có thể chia sẻ giữa một nhóm các máy chủ, nhưng không được tìm thấy trong / usr. Phần mềm được cài đặt cục bộ phải được đặt trong / usr / local chứ không phải / usr trừ khi nó được cài đặt để thay thế hoặc nâng cấp phần mềm trong / usr.

Một tập tin thực thi được cài đặt từ phần mềm hệ thống sẽ không bao giờ đi đến bất cứ thứ gì cục bộ.


Bây giờ cho / usr / lib / .

4.7.1 Mục đích

/ usr / lib bao gồm các tệp đối tượng, thư viện và các tệp nhị phân nội bộ không được thực hiện trực tiếp bởi người dùng hoặc tập lệnh shell. Các ứng dụng có thể sử dụng một thư mục con dưới / usr / lib. Nếu một ứng dụng sử dụng thư mục con, tất cả dữ liệu phụ thuộc vào kiến ​​trúc được sử dụng riêng cho ứng dụng phải được đặt trong thư mục con đó.

postTHERql có lẽ là một daemon bắt đầu lúc khởi động? Nếu vậy nó có ý nghĩa để đặt nó ở đây. Bạn không nên tự mình sử dụng lệnh mà bắt đầu một dịch vụ. Các tệp trong / usr / lib / có xu hướng có người dùng và nhóm riêng của họ và / hoặc một trình nền hạn chế quyền truy cập vào / var / lib (ví dụ, chỉ mysqld có thể truy cập / var / lib / mysql /; bưu điện

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.