/ etc와 / usr / local / etc의 차이점은 무엇입니까?


24

많은 응용 프로그램 데이터를 저장 해야하는 데몬을 개발 중이며 시스템 (Fedora 15)에 /usr/local/etc디렉토리 가 있음을 알았습니다 .

에 데몬을 설치하기로 결정했으며 /usr/local/bin구성 파일을 저장할 장소가 필요합니다.

Wikipedia에서 이것을 보지 못했습니다 . 이것이 비표준 /usr/local/bin입니까, 아니면 구성 파일을 저장 하기 위해 설치된 프로그램의 표준 장소 입니까?

이유는, 이것을 sys-admins에게 마케팅하고 싶습니다. 이와 같은 것을 얻는 것은 큰 판매 포인트가 아닙니다 ...


2
직접 아래에 두지 않는 이유는 /etc/myapp무엇입니까? 구성을 변경하려는 경우 가장 먼저 볼 것입니다.
new123456

@ new123456- 개인적으로 설정 파일을 바이너리에 가깝게 유지하는 아이디어를 좋아 하지만 (예 : /usr/local/bin-> /usr/local/etc)이 경우 규칙이 이깁니다.
beatgammit

답변:


24

/usr/local일반적으로 소스에서 빌드 된 애플리케이션을위한 것입니다. 즉 apt, 와 같은 것을 사용하여 대부분의 패키지를 설치 하지만 배포판의 일부가 아닌 최신 버전의 소프트웨어 또는 소프트웨어를 다운로드하면 소스에서 빌드하여 모든 것을`/ usr / local '계층 구조에 넣습니다.

이것은 나머지 분포와의 분리를 허용합니다.

당신은 다른 사람을위한 소프트웨어의 조각을 개발하는 경우, 당신은 그래서 사람들이 원하는 어느 곳을 설치할 수 있습니다를 설계해야하지만 일반 기본합니다 FHS 가 할 접두사를 지정하면 시스템 디렉토리를 지정 /usr( /etc, /usr/bin, 등)

/usr/local, 개인적인 용도로 사용하는 것이 소프트웨어를 설치하는 유일한 장소가되어서는 안됩니다.

FHS를 잘 읽고 표준 Linux 도구를 사용하여 소스를 어디에서나 빌드하고 설치할 수 있으므로 다양한 배포판의 패키지 빌더가 배포판에 따라 필요에 따라 구성 할 수 있으며 /usr/local 원하는 경우 사용자가 배치 할 수 있습니다. 또는 원하는 경우 일반 시스템 디렉토리.


예, 사용자 정의를 허용하는 것이 좋지만 /usr/local/etc이러한 종류의 프로그램에 대한 구성 파일의 표준 인지 궁금 합니다.
beatgammit

/ usr / local / etc는 소스에서 데몬을 빌드 한 경우 선택할 수있는 항목이지만 / etc는 데몬이나 데비안으로 데몬을 패키지 한 경우 사용자가 선택할 수있는 곳입니다.
EightBitTony

4
실제로 GNU 표준은 소스에서 패키지를 작성하는 사람들이 일반적으로 위치를 지정하지 않기 때문에 패키지를 로컬 경로로 기본값으로 설정해야합니다. 배포판은 패키지 / 빌드시 비 로컬 경로로 변경합니다.
psusi

@ psusi- 좋은 지적이다, 나는 그것을 기본값으로 만들 것이다. 아마도 make install이 루트 또는 일반 사용자로 실행될 때를 알 수있을 것입니다. 루트 인 경우 / usr / local (사용자 인 경우)을 사용자 홈 디렉토리로 기본 설정합니다. 구성 설정도 추가하겠습니다.
beatgammit

@ EightBitTony- 다른 규칙을 가진 다른 플랫폼이 있습니까? 이미 다른 플랫폼 (upstart, systemd, init)에 대해 다른 시작 스크립트를 만들고 있습니다.
beatgammit

7

아주 짧은 대답

/ etc는 OS에서 구성 파일을 위해 사용합니다.

/ usr / local / etc는 사용자 및 추가로 설치된 소프트웨어에서 구성 파일에 사용할 수 있습니다.


4

/usr/local/etc리눅스 세계에서는 거의 사용되지 않습니다. 그러나 결정 매장 구성에있는 파일에 대한 여부 /etc, /usr/local/etc또는 다른 위치는 일반적으로 컴파일시에 만들어 (그리고 종종 명령 행 옵션이나 환경 변수를 통해 대체 될 수 있습니다). 컴파일 할 때 기본값이 무엇인지는 중요하지 않으므로 쉽게 설정할 수 있는지 확인하십시오 (일반적으로 --sysconfdirautoconf에 따라 옵션 ). 데몬이 배포 용으로 패키지 된 경우 실행 파일은 /usr/sbin(소스에서 빌드 할 때 기본값이되어야 함 /usr/local/sbin) 및 구성이에 /etc있습니다.

참고 /etc"응용 프로그램 데이터를 많이"를위한 장소가 아니다. 에 들어갑니다 /var. 소스에서 빌드 할 때의 기본값은 /var/local/mydaemon또는 /var/lib/mydaemon; 소스에서 빌드 할 때 기본값에 대한 강력한 규칙은 없습니다. 컴파일 타임 기본값 (일반적으로 configure --localstatedir)과 런타임 기본값 (구성 파일의 설정, 명령 행 옵션 또는 환경 변수 사용)을 모두 변경하는 방법이 있어야합니다 .


/usr/local/etc자주 사용하지 않는가? 구성 파일을 바이너리와 동일한 수준의 파일 시스템으로 유지한다는 아이디어가 마음에 듭니다.
beatgammit

1
@tjameson 광범위한 이유가 있는지 모르겠습니다. BSD는 그렇게합니다. 관리자로서, 나는 모든 구성 파일 (의 물건과는 달리, 백업 및 변경 제어해야한다는 등 binlib같은 장소에 살고 그래서 어떤에 다시 설치 될 수있다).
Gilles 'SO- 악마 그만'

1

아치 사용자는 / usr / local을 피하고 구성에 / etc 만 사용합니다. 소스에서 설치할 때 작은 PKGBUILD 파일을 쓰는 동안 차후에 다른 컴퓨터에서 다른 사용자와 나 자신을 위해 Arch User Repository (AUR)에 업로드 할 수 있습니다. AUR의 패키지 수와 패키지의 속도에 따라 판단 할 때 혼자 생각하는 것은 아닙니다. 이렇게하면 소스에서 패키지를 설치하지 않고 / usr / local과 같은 쓸모없는 위치를 피할 수있는 대신 모든 사람이 패키지를 사용할 수있게됩니다.

또한 데비안은 같은 / usr / 지방, 따라서 유틸리티에 아무것도 소스의 패키지를 구축하는 대신 설치하는 아이디어를 좋아하는 것 같다 에서는 checkinstall을 .

설치하려는 소스의 패키지를 작성하면 파일의 위치를 ​​추적하고 다른 패키지 나 다른 "설치 설치"가 일부 파일을 일관되게 덮어 쓰지 않는 것이 좋습니다. "make uninstall"으로 제거하는 것은 좋은 해결책이 아닙니다. 어떤 버전이 설치되어 있는지에 대한 정보는 최신 패키지 관리자가 잘 알고있는 또 다른 사항입니다.

나는 단지 / usr / local을 완전히 포기할 것이다. 패키지를 설치하거나 시스템 전체 디렉토리가 더 적합하지 않고 사용자에게 적합하지 않은 것을 배치하는 것은 좋지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.