제가 보기에는 서로 다른 Linux/Unix 배포판 간에 어떻게 서로 다른 파일 시스템이 구축되는지에 대해 많은 혼란이 있는 것 같습니다(또는 적어도 제가 보기에는 그렇습니다).
각 시스템마다 다른 유형의 패키지를 사용하는 것보다 각 파일 시스템 구조 내에서 다른 디렉터리를 가리키는 환경 변수를 갖는 것이 더 유용할 것입니다.
예: Windows 시스템에서 "Program Files" 디렉터리의 위치를 알고 싶다면 환경 변수를 사용할 수 있습니다 %ProgramFiles%
. %ProgramFiles(x86)%
Linux 또는 Unix 시스템에 해당 도구가 있습니까?
답변1
%ProgramFiles%
Linux에는 Windows가 필요하지 않기 때문에 Windows와 동등한 것이 없습니다 . 자체 디렉토리에 설치된 프로그램의 표준 위치는 /opt
. 대부분의 프로그램은 패키지에 있고 파일이 다른 프로그램에서 찾을 수 있는 위치에 있기 때문에 여기에 설치되지 않습니다. Windows에 변수가 있는 이유는 %ProgramFiles%
실제로 대부분 역사적입니다.
- Windows에는 드라이브 문자가 있습니다. 표준적인 입장 이라고 해도 여전히 그런 것인지 등에
\Program Files
대한 의문이 남는다 .c:\Program Files
Linux에서는D:\Program Files
이런 문제가 발생하지 않습니다.심볼릭 링크디렉토리가 상주하는 물리적 저장 매체에 관계없이 어디에나 나타날 수 있습니다. (최신 Windows에는 동일한 기능이 있으므로 이를 필요로 하지 않지만 이전 버전과의 호환성을 위해 위치를 수정할 수 있습니다.) - Windows에서는 관리자가 시스템 디렉터리의 이름을 선택할 수 있습니다. Linux는 이전에 한 번도 수행된 적이 없기 때문에 괜찮습니다. 반면 Windows는 이전 버전과의 호환성을 위해 다른 위치를 선택하는 관리자를 수용해야 합니다.
- 각 Windows 프로그램에는 자체 설치 프로그램이 제공되므로 실제 패키지 관리 메커니즘이 없으며 어떤 파일이 어떤 패키지에 속하는지 추적하는 유일한 방법은 각 디렉터리에 대한 패키지를 갖는 것입니다. 변화가 시작되고 있지만 완전히는 아닙니다. 그에 비해 리눅스는 일반적으로파일을 찾을 수 있는 곳에 저장그리고 패키지 관리자가 해당 패키지가 누구에게 속해 있는지 추적하도록 하세요.
PATH
Linux에는 실행 가능한 명령, LD_LIBRARY_PATH
공유 라이브러리, MANPATH
매뉴얼 페이지 등 의 경로를 지정하는 환경 변수가 있습니다. 그들은 모두 어디에 있는지에 관한 것입니다찾다파일, 어디로 갈 수 없나요?놓다문서. 파일이 어디에 저장되어 있는지는 중요하지 않습니다프로그램알다시피, 그건 중요한 일이야패키지 관리자알다. 패키지 관리자에는 데이터 파일이 있으므로 항목의 위치를 알려주는 환경 변수가 필요하지 않습니다.
Linux 시스템의 디렉터리 구조는 다음과 같이 표준화되어 있습니다.파일 시스템 계층 표준. 대부분의 경우 위치가 표준이거나 단일 위치가 필요하지 않기 때문에 환경 변수가 필요하지 않습니다.
배포판마다 패키지 시스템이 다르다는 사실은 디렉터리 구조가 다르기 때문이 아닙니다. 이것이 배포판 간의 주요 차이점 중 하나입니다.
답변2
내가 올바르게 이해했다면 Ubuntu, Debian 및 redhat/centos와 같은 다양한 배포판에서 다양한 프로그램의 이름과 경로가 동일해야 한다는 의미입니다.
웹 서버 Apache를 예로 사용하겠습니다. 일부 배포판에서는 이를 apache2로 설치하고 구성 파일 이름을 apache2.conf로 지정하는 반면, 다른 배포판에서는 이를 httpd로 설치하고 구성 파일 이름을 httpd.conf로 지정하며 이러한 파일의 경로는 배포판마다 다릅니다. 차이점도 있습니다.
puppet은 다양한 배포판에서 일관된 구성 관리를 가능하게 하는 프로젝트 중 하나입니다(https://puppetlabs.com/), 다른 하나는 Chef 외 다수입니다.
이러한 구성 관리 시스템은 시스템 관리자로부터 파일 시스템 계층 구조나 경로 이름 또는 다른 패키지 이름의 차이점을 숨깁니다.
답변3
내 형식:
이것파일 시스템 계층 표준(FHS)는 설명입니다협약UNIX 시스템용 레이아웃. "
이는 단지 관례일 뿐이고, 리눅스가 단일 회사에서 만들어진 것이 아니기 때문에 개별 *nix 개발자들은 레거시 코드, 선호도 등 현실적인 문제로 인해 필연적으로 표준에서 벗어나게 됩니다. 믹스에 변수를 추가하면 배포 작성자가 여전히 누구에게도 책임을 지지 않고 쉘 외부의 항목이 작동할 때 "변수"가 매우 모호한 개념이 되기 때문에 문제를 단순화하기보다는 복잡하게 만들 뿐입니다.