서버에서는 어떤 디렉터리 사양을 따라야 합니까?

서버에서는 어떤 디렉터리 사양을 따라야 합니까?

PC에서 XDG 데스크탑 사양을 사용하면 각 데스크탑이 다양한 데이터에 대해 서로 다른 폴더를 가질 수 있습니다. 서버에서만 실행되는 애플리케이션을 작성할 때 단순히 하드코딩해야 합니까 /etc/myapp, /var/cache/myapp아니면 확인해야 할 잠재적인 환경 변수 또는 유사 항목이 있어야 합니까?

답변1

내가 아는 한, 대부분의 Linux 애플리케이션에는 하드코딩된 경로가 있지만 때로는 환경 변수와 명령줄 매개변수를 사용하여 경로를 재정의할 수 있도록 허용합니다.

이 경로를 하드코딩하는 데 아무런 문제가 없지만 구성 파일 위치를 명령줄 매개변수로 지정하고 이 conf 파일의 변경을 허용하는 경우 /var/cache/myapp.

모든 것을 하드코딩하는 경우 최소한 배포판의 기존 패키지가 해당 위치와 충돌하지 않는지 확인하십시오. DNF 기반 배포의 경우 다음과 같습니다(예시임).

dnf whatprovides '/var/cache/dnf'
dnf-4.9.0-1.fc35.noarch : Package manager
Repo        : @System
Matched from:
Filename    : /var/cache/dnf

dnf-4.9.0-1.fc35.noarch : Package manager
Repo        : fedora
Matched from:
Filename    : /var/cache/dnf

그래서 당신은 분명히 사용할 수 없습니다 /var/cache/dnf.

결국에는 또는 에 모든 것을 설치하는 것이 /opt/appname훨씬 쉽습니다 /usr/local/opt/appname. 기본 Linux 애플리케이션은 이러한 디렉터리를 사용하지 않습니다.

답변2

프로그램에 경로를 하드코딩해야 합니까? 아니요!

최소한 /var/local, /opt, , 또는 /home/someuser시스템 관리자가 원하는 위치에 애플리케이션을 설치할 수 있도록 컴파일 타임에 경로를 구성해야 합니다. 더 좋은 점은 프로그램이 해당 구성 파일을 가리키도록 하는 데 사용할 수 있는 명령줄 옵션이 있다는 것입니다. 그런 다음 필요한 다른 경로를 설정하는 데 사용할 수 있습니다. (기본 위치는 컴파일 타임에 설정됩니다.)

관련 정보