Debian의 Postgresql 설치는 세 개의 폴더 위치로 분할된 것 같습니다.
구성: /etc/postgresql
바이너리: /usr/lib/postgresql
데이터: /var/lib/postgresql
구성 파일과 데이터를 분할하면 얻을 수 있는 이점을 이해하지만 바이너리의 위치가 혼란스럽습니다. 왜 단순히 /usr/bin에 있지 않습니까?
더 중요한 것은 왜 일부 바이너리는 /usr/bin에 들어가고 다른 바이너리는 /usr/lib에 들어가나요?
답변1
데비안 배포 정책에 따르면 구성 파일, 바이너리, 데이터는 이 세 가지 다른 위치에 저장됩니다. 여기에는 다음과 같은 여러 가지 이유가 있습니다.
- 패키지 간 일관성
- 백업, 감사, 조정 등을 수행할 디렉터리를 파악하는 것이 더 쉽습니다.
- /usr은 읽기 전용으로 마운트할 수 있습니다.
바이너리가 두 개의 디렉터리로 분할되는 이유는 데비안에서 PostgreSQL의 여러 주요 버전을 병렬 설치할 수 있는 방법과 관련이 있습니다. 이것에 대해 자세히 설명하십시오 /usr/share/doc/postgresql-common/architecture.html
. 간단히 말해서:
- 모든 프로그램은
/usr/lib/postgresql/X.Y/bin
. - 서버 측 프로그램의 경우 전체 경로를 사용하여 직접 호출하거나 Debian 래퍼를 사용하여
pg_ctlcluster
액세스할 수 있습니다. - 클라이언트 프로그램의 경우 심볼릭 링크가
/usr/bin
해당 포인터 에 삽입pg_wrapper
되고 호출할 올바른 버전을 자동으로 파악합니다.
답변2
이 분할은 대부분의 서비스에서 매우 일반적입니다. 저는 Fedora를 사용하고 있지만 대부분의 배포판은 파일 유형에 따라 지정된 영역에 파일을 구성하는 것과 동일한 작업을 수행합니다.
Postgres SQL 서버를 살펴보십시오.
- 구성 파일 항목
/etc/
- 실행 파일 항목
/usr/bin
- 도서관 입장
/usr/lib64/pgsql/
- 지역 설정 정보 입력
/usr/share/locale/
- 매뉴얼 페이지 및 문서 항목
/usr/share/
- 데이터 입력
/var/lib/
usr/lib/postgresql
귀하의 경우(내 설치와 동일) 라이브러리 디렉터리를 갖는 이유는 /usr/lib64/pgsql/
응용 프로그램이 Postgres에서 제공하는 라이브러리를 사용할 수 있도록 하기 위한 것입니다. 이러한 함수는 이러한 라이브러리에 포함되어 있습니다.
따라서 애플리케이션 개발자로서 여기의 라이브러리에 연결하여 Postgres 및 애플리케이션에 함수 호출을 통합할 수 있습니다. 이러한 라이브러리에는 일반적으로 API 문서가 포함되며 Postgres 개발자는 API가 지정되고 이러한 라이브러리를 통해 올바르게 작동하는지 확인하므로 이를 사용하는 응용 프로그램은 해당 특정 버전의 Postgres에서 올바르게 작동함을 보장할 수 있습니다.