나는 많은 애플리케이션 데이터를 저장해야 하는 데몬을 개발 중인데 내 시스템(Fedora 15)에 디렉토리가 있다는 것을 발견했습니다 /usr/local/etc
.
데몬을 에 설치하기로 결정했고 /usr/local/bin
구성 파일을 저장할 위치가 필요했습니다.
나는 이것을 보지 못했다위키피디아. 이것은 비표준입니까, 아니면 실제로 /usr/local/bin
구성 파일을 저장하기 위해 설치된 프로그램의 표준 위치입니까?
그 이유는 이것을 시스템 관리자에게 판매하려고 하는데 이와 같은 오류가 발생하는 것은 그다지 좋은 판매 포인트가 아니기 때문입니다...
답변1
/usr/local
일반적으로 소스 코드로 구축된 애플리케이션에 적합합니다. 즉, 나는 그런 것을 사용하여 대부분의 패키지를 설치 apt
하지만 내 배포판의 일부가 아닌 것이나 최신 버전의 소프트웨어를 다운로드하는 경우 소스에서 빌드하고 모든 것을 "/usr/local" 계층 구조에 넣습니다.
이를 통해 나머지 배포판과 분리할 수 있습니다.
다른 사람을 위한 소프트웨어를 개발하는 경우, 사람들이 원하는 곳에 설치할 수 있도록 디자인해야 하지만 기본적으로 일반 버전이어야 합니다.FHS시스템 디렉터리를 지정할 때 접두사 /usr
( /etc
, /usr/bin
등) 를 지정합니다.
즉 /usr/local
, 개인적인 용도로만 사용해야 하며 소프트웨어를 설치하는 유일한 장소가 되어서는 안 됩니다.
잘 읽어보세요FHS, 표준 Linux 도구를 사용하여 소스 코드를 어디에서나 빌드하고 설치할 수 있으므로 개별 배포판의 패키지 빌더는 해당 배포판의 요구 사항에 맞게 구성할 수 있으며 사용자는 이를/usr/local
그들이 원한다면또는 원하는 경우 일반 시스템 디렉토리.
답변2
아주 짧은 대답
/etc는 운영 체제에서 구성 파일을 위해 사용됩니다.
/usr/local/etc는 귀하와 구성 파일을 위해 설치한 추가 소프트웨어에서 사용할 수 있습니다.
답변3
/usr/local/etc
Linux 세계에서는 거의 사용되지 않습니다. 그러나 구성 파일을 다른 위치 /etc
에 저장할지 여부는 /usr/local/etc
일반적으로 컴파일 타임에 결정됩니다(명령줄 옵션이나 환경 변수를 통해 재정의되는 경우가 많습니다). 컴파일 시간 기본값이 무엇인지는 중요하지 않습니다. 설정하기 쉬운지 확인하세요(보통 --sysconfdir
autoconf 다음의 옵션). 데몬이 배포용으로 패키지된 경우 실행 파일이 들어오고 /usr/sbin
(소스에서 빌드할 때 기본적으로 있어야 함 /usr/local/sbin
) 구성은 /etc
.
이곳은 /etc
"많은 응용 프로그램 데이터"를 위한 장소가 아닙니다. 즉 /var
, 소스에서 빌드할 때 기본값은 /var/local/mydaemon
또는 입니다 /var/lib/mydaemon
. 마찬가지로 소스에서 빌드할 때 기본값이 무엇인지에 대한 엄격한 규칙은 없습니다. 컴파일 시간 기본값(일반적으로 사용됨 configure --localstatedir
)과 런타임 기본값(구성 파일의 설정 사용, 명령줄 옵션이나 환경 변수 사용 가능)을 모두 변경할 수 있는 방법이 있어야 합니다 .
답변4
Arch 사용자로서 나는 /usr/local을 완전히 피하고 /etc만 구성에 사용합니다. 소스에서 설치할 때는 작은 PKGBUILD 파일을 작성하고 나중에 다른 컴퓨터에서 다른 사람과 내가 사용할 수 있도록 AUR(Arch User Repository)에 업로드하는 것이 좋습니다. AUR에 있는 패키지 수와 패키지 생성 속도를 판단해 보면 이런 생각을 하는 사람이 나뿐만이 아닙니다. 이렇게 하면 소스에서 패키지를 설치하지 않고도 모든 사람이 패키지를 사용할 수 있는 기회가 늘어나고 /usr/local과 같은 오래된 위치를 피할 수 있습니다.
데비안은 또한 /usr/local에 무엇이든 설치하는 것보다 소스 패키지를 구축하는 아이디어를 좋아하는 것 같습니다. 따라서 다음과 같은 유틸리티가 있습니다.설치 확인.
설치하려는 소스 패키지를 생성하는 것은 파일의 위치를 추적하고 그 중 일부가 다른 패키지나 다른 "make install"에 의해 일관되게 덮어쓰이지 않는지 확인하는 좋은 방법입니다. "make uninstall"을 사용하여 제거하는 것은 좋은 해결책이 아닙니다. 설치된 버전에 대한 정보는 최신 패키지 관리자가 추적하는 데 능숙한 또 다른 정보입니다.
나는 /usr/local을 완전히 포기할 것입니다. 이것은 패키지 설치(시스템 전체 디렉토리가 더 적절할 것임)나 사용자를 위한 것이 아니라 아무것도 넣기에 좋은 장소가 아닙니다.