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