저는 프로그래밍 경험이 없지만 쉘 스크립트가 이론적으로 어떻게 작동하는지 이해합니다. 스크립트를 실행 가능하게 만드는 데는 두 가지 중요한 단계만 있습니다.
#!/path/to/interpreter
스크립트 내용을 해석하는 방법을 쉘에 알려주어야 합니다.- 파일 실행 권한을 부여해야 합니다
chmod +x filename
.
지금까지는 이해할 수 있지만, 하나의 .tar.gz
패키지에 많은 파일이 압축되어 있는 "실제" 프로그램은 이러한 종류의 설치와 어떻게 다르며, 이 프로그램을 실행 가능하게 만들기 위해 Linux는 무대 뒤에서 어떤 중요한 단계를 수행해야 합니까? 즉, Linux에서 설치가 실제로 무엇을 의미합니까?
답변1
Unix 프로그램 설치는 일반적으로 두 부분으로 구성됩니다.
1) 파일을 적당한 위치에 넣어주세요
2) 파일 권한과 소유권을 적절하게 설정하십시오.
첫 번째 점에 관해서는,Linux 파일 계층 표준
관련이 있습니다. 이는 Linux에만 해당되지만 대부분 역사적으로 성문화된 Unix 규칙을 따릅니다. 구체적으로 사용자가 실행하도록 의도된 바이너리는 에 배치되고 /usr/bin
, 관리 등에 사용되는 시스템 수준 바이너리는 에 배치되며 , 로컬에 설치된 바이너리는 일반적으로 등에 /bin
배치됩니다 . /usr/local/bin
이는 데비안에서 PATH 변수를 기반으로 런타임 시 시스템이 확인하는 위치입니다 . 마찬가지로 라이브러리는 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
유사한 규칙에 따라 특정 위치 /usr/lib
등에 배치됩니다. 다시 말하지만, 기본적으로 시스템은 런타임에 이러한 디렉터리를 확인하도록 설계되었습니다./lib
/usr/local/bin
문서(맨 페이지 포함) 및 데이터 파일을 위한 다른 지정된 위치가 있지만 이는 시스템 기능에 그다지 중요하지 않습니다.
두 번째 요점의 경우, 시스템의 여러 부분에 있는 파일은 소유권과 권한이 다릅니다. 대부분의 파일은 루트가 소유하지만 관련 그룹은 다양합니다.
실제 설치 메커니즘은 다양하지만 일반적으로 빌드 시스템의 설치 대상에 의해 처리됩니다. 무료 Unix 계열 시스템(예: Linux 기반 시스템)의 경우 가장 일반적인 빌드 시스템은 Autotools 및 Cmake입니다.
일반적으로 추가 레이어가 있습니다. 일반적으로 Linux 시스템에는 바이너리 패키지 관리자가 있습니다. 이러한 패키지는 일반적으로 설치 대상을 호출하여 빌드되지만 파일을 시스템에 설치하는 대신 바이너리 패키지 빌드 프로세스의 일부로 임시 디렉터리에 설치합니다. Debian의 경우 이는 일반적으로 debian/tmp
소스 디렉터리의 하위 디렉터리입니다.
시스템에 바이너리 패키지를 설치하면 로컬 설치에 비해 많은 이점이 있습니다. 특히 어떤 파일이 어떤 패키지/소프트웨어에 속하는지 추적하고 패키지/소프트웨어 제거를 깨끗하고 안정적인 방식으로 처리합니다. 빌드 시스템에 오프로드 대상이 있을 수 있지만 이는 오프로드를 처리하는 안정적인 방법이 아닙니다.
답변2
설치 프로세스는 운영 체제의 패키지 관리자에 의해 수행됩니다. 따라서 운영 체제에 따라 다릅니다(Linux가 커널임).
예를 들어 Debian은 소프트웨어 패키지를 apt
설치하는 데 사용되는 Gnu/Linux입니다 . deb
레드햇, 수세, Freebsd. 등. 다른 패키지 관리자를 사용하십시오.
기본적으로 파일을 원하는 위치(일반 사용자가 변경할 수 없는 위치)에 복사하고 적절한 권한을 설정합니다. 또한 적절한 구성 파일을 조정합니다.
마법 같은 것은 없습니다. 커튼 뒤에 있는 것은 제거를 더 쉽게 만들기 위해 추적하는 것뿐입니다.