흥미로운 참고 사항

흥미로운 참고 사항

내가 사용하는 Linux와 달리 FreeBSD에서는 /usr/local일반적으로 설치된 디렉토리가 사용하지 않을 때에도 많이 채워집니다.어느포트. 실제로 기본이 아닌 쉘(Bash 및 Z-Shell)은 거기( /usr/local/bin)에 배치됩니다.

/usr/localLinux에서는 사용자 정의 스크립트나 소프트웨어를 트리에 두어 배포 소프트웨어와 명확하게 분리 하는 것이 좋습니다 (예: /usr/local이러한 "수정 사항"을 제거하여 쉽게 "비활성화" $PATH).

그 이유는 무엇입니까? FreeBSD를 Linux처럼 작동하게 만드는 방법이 있는지 의심스럽기 때문에 모든 사용자가 액세스할 수 있는 사용자 정의 소프트웨어 및 파일을 설치하는 모범 사례는 무엇입니까?

답변1

/usr/localLinux에서는 분산 소프트웨어와 명확하게 구분되도록 트리에 사용자 정의된 스크립트나 소프트웨어를 두는 것이 더 좋습니다.

그건FreeBSD에서 얻을 수 있는 것과 정확히 같습니다.. Z 쉘 및 Bourne Again 쉘과 같은 쉘FreeBSD의 일부가 아닙니다. 제3자에 의해 추가됩니다. 운영 체제는 때때로 "base"라는 속어로 지칭됩니다. 일반적으로 BSD 세계에서는 "기본" 위에 제3자가 추가한 것이 존재하지 않습니다 /usr./usr/local

BSD 세계에서는(OpenBSD와 같은 다른 BSD 운영 체제에서도 마찬가지입니다) /운영 체제 자체는 및 에 있고 /usrOS가 아닌 항목은 에 있습니다 /usr/local. 어떤 사람이 부가 기능 없이 운영 체제 기능만을 원한다면 자신이 /usr/local무엇을 하고 있는지 생각하지 않는 것입니다.

약간 다른 점에서 TrueOS Server 및 TrueOS Desktop과 같은 FreeBSD 파생 제품은 FreeBSD 위에 추가하는 것이 운영 체제의 일부가 아니라는 점을 겸허하게 고려합니다. 따라서 /usr/local비운영 체제 항목과 함께 즉시 사용할 수 있는 TrueOS 항목이 많이 있습니다 . 예를 들어 여기에서 PCDM(TrueOS 디스플레이 관리자)을 찾을 수 있습니다.

반면에, /usr/local어디모두운영 체제의 일부가 아닌 사용자 정의 소프트웨어는 제거됩니다.

이 부서가 얼마나 강력한지 보여주기 위해:

  • rcOS 이외의 항목에 대한 Mewburn 스크립트는 /usr/local/etc/rc.d/에 추가되지 않습니다 /etc/rc.d/. 여기에서 찾을 수 있습니다 /usr/local/etc/rc.d/nginx.
  • 비운영 체제 구성 파일 /usr/local/etc//etc/. 여기서 찾을 수 있습니다 /usr/local/etc/cups.
  • /usr/share/man운영 체제 매뉴얼과 비운영 체제 매뉴얼 /usr/local/man의 위치에 차이가 있습니다 .

패키지 관리자 자체도 (아직) 운영 체제 자체의 일부가 아닙니다. "부트스트랩" 패키지 관리자가 있습니다 . 이는 구성 파일을 포함 하고 그 자체로 추가 기능인 실제 패키지 관리자를 pkg-static설치합니다 .pkg/usr/local/etc/pkg

Linux "배포" 세계에서 이루어져야 하는 개념적 도약은 "배포자"가 제공하는 뒤죽박죽된 패키지에서 패키지를 선택하여 운영 체제를 구축하지 않는다는 것입니다. 완전한 운영 체제는 일관된 장치(설치 프로그램에 의해 설치되고 freebsd-update. 만약에당신 자신개발자이든 시스템 관리자이든 타사 항목을 제공하면 포트 및 패키지를 수행할 수도 있고 /usr/local어떤 방식으로든 직접 넣을 수도 있습니다.

반면에 맞춤형 소프트웨어는운영 체제의 일부 부분은 운영 체제가 있는 곳으로 이동합니다 /. 전체 운영 체제에 대한 소스 코드와 빌드 시스템은 이 자급자족 시스템의 일부로 제공됩니다 /usr. /usr/src거기에서 로컬 수정을 수행하고 필요한 경우 Subversion(FreeBSD) 및 git(TrueOS)을 사용하여 다른 사람과 공유하고 "사용자 영역"을 개별적으로 또는 전체 OS(둘 다)를 다시 빌드할 수 있습니다."쉘"과 "코어") 그때부터.

흥미로운 참고 사항

여전히 시스템에 대한 자체 구조를 만드는 경우 운영 체제 매뉴얼 자체에 따라 hier운영 체제 매뉴얼 페이지 대신 로컬 매뉴얼 페이지를 제공해야 합니다. ☺

추가 읽기

답변2

FreeBSD에서는 설치 설정이 기본값 PREFIX으로 설정되어 있습니다 /usr/local. 이는 패키지에서 설치된 파일에 사용됩니다(물론 패키지는 포트를 통해 빌드됩니다). zsh와 bash는 패키지이고 기본에 있지 않으므로 /usr/local.

자신만의 소프트웨어를 설치할 수도 있습니다 /usr/local. 조심하고 충돌을 피하십시오.

다른 대상을 원하면 하나를 만들고 새 대상에서 실행하십시오 PREFIX. 어떤 사람들은 /opt이 아래에서 바이너리를 제공하려는 경우 PREFIX다음 사용자 클래스를 사용할 수 있습니다 .login.conf(5)path그리고 거기에 다음과 같은 항목을 포함하도록 항목을 설정합니다 /opt/bin.cap_mkdb(1)및 사용자 로그인 사양비밀번호(5)).

답변3

/usr/로컬에서매뉴얼 페이지), 모든 로컬 실행 파일, 파일 등의 위치 "네이티브"는 소프트웨어 또는 시스템의 작동이 운영 체제에 국한되지 않음을 의미합니다. 일반적으로 이는 문제의 소프트웨어가 시스템의 포트를 통해 구축되었거나 패키지 관리자에 의해 설치되었음을 나타냅니다. 예를 들어 bash와 bash는 zsh모두 선택적으로 제공되며 기본 설치 후에 추가해야 합니다.

운영 체제별 소프트웨어 및 기타 소프트웨어의 엄격한 계층 구조를 관찰함으로써 운영 체제 업데이트 및 패치의 자동화를 관리하기가 더 쉽습니다. 그렇게 하면 디렉터리를 사용하여 사용자 정의 스크립트와 사용자 정의 콘텐츠를 구별하는 것과 크게 다르지 않습니다. 그러나 간과할 수 있는 점은 FreeBSD의 포트 시스템이 훨씬 더 광범위하다는 것입니다.어떻게단지 선택적 소프트웨어 모음이 아닌 BSD 시스템을 사용자 정의할 수 있습니다.

모범 사례는 포트 트리에 아직 존재하지 않는 모든 사용자에 대해 테스트되지 않은 소프트웨어를 설치하지 않는 것입니다. 독점이라면 에 설치해야 합니다 /usr/local/. 그렇지 않다면 왜 안 될까요?나만의 포트 만들기?

답변4

혼란의 일부는 /usr/local다음에서 비롯됩니다.목적지usrlocal(즉, 해당문맥).

Linux에서 이는 "사용자가 만들고 전역적으로 사용할 수 있는 모든 것"(예: " 사용자가 전역적으로 액세스할 수 있는 " local머신" )을 의미합니다.usr

BSD에서 이는 "기본(BSD) 운영 체제의 일부가 아닌 모든 빌드"(즉, local"운영 체제는 아니지만" usr"기본 운영 체제의 확장")를 의미합니다.

나는 의심한다기본빌드 스크립트( ./configureMakefile) 기본값 의 99.9% /usr/local가 존재하는 이유는 Unix를 "기본적으로" 제공하기 위한 것이며 Linux는 이를 채택합니다(기본 컨텍스트가 약간 다르더라도). BSD에서 이 기본값은 다음과 같습니다.강요된/usr/local무엇 이든아니요"기본 운영 체제"의 일부로 간주됩니다.

usr그건 기억해평상복"드라이브"로 인해 유래(아마도 다른 것일 가능성이 높음)크기 제한시간, 그리고필요싱글을 위해용량더 많은 것을 수용하기 위해. 예를 들어. 심지어 /sbin별도의용량어느 시점에서는 5MB "드라이브"가 사용 가능한 최대 용량이었고 나머지는 모두 /동일한 제한을 초과했습니다(포함되지 않음 /usr).

usr(*) K&R의 기원을 읽은 후에 나는 그들이 항상 구축한다고 말할 것입니다.최종 버전운영 체제나 사용 가능한 서비스에 구체적으로 속하지 않는 소프트웨어, 즉 "네이티브" 소프트웨어( 어느 시점에서는 다른 소프트웨어 /usr/local에 속할 수도 있음 )입니다. volume그리고 그 BSD통과했다"컨텍스트"는 소프트웨어의 양이 증가하고 /운영 체제, /usr운영 체제 확장 및 비운영 체제 소프트웨어 간의 구별을 유지해야 하는 철학적 필요성으로 인해 나타났습니다./usr/local

(*) (여기서는 /url을 참조하는 것이 유용합니다).


FWIW 데비안 차단기에서는 혼란이 확대됩니다:

lrwxrwxrwx 1 root root 7 Jan 12  2021 /bin -> usr/bin
lrwxrwxrwx 1 root root 7 Jan 12  2021 /lib -> usr/lib
lrwxrwxrwx 1 root root 8 Jan 12  2021 /sbin -> usr/sbin

관련 정보