Computer >> 컴퓨터 >  >> 체계 >> Linux

바이너리 대 소스 패키지:어느 것을 사용해야 합니까?

사용하는 패키지 관리자에 관계없이 Linux에 프로그램을 설치하는 방법에는 두 가지가 있습니다. 미리 빌드된 패키지를 사용하거나 프로그램을 직접 컴파일합니다. 요즘은 기본적으로 전자가 우세하지만 소스 코드에서 컴파일하는 것을 고려하고 싶을 때가 있습니다.

바이너리 패키지란 무엇입니까?

바이너리 대 소스 패키지:어느 것을 사용해야 합니까?

Linux에 프로그램을 설치하는 것은 일반적으로 Windows에 소프트웨어를 설치하는 기존 방법과 상당히 다릅니다. 공급업체 웹 사이트에서 설치 프로그램을 다운로드하는 대신 파일은 일반적으로 Linux 배포에 맞게 조정된 프로그램 저장소에서 가져옵니다. Linux 패키지 관리자 또는 Linux 앱 스토어를 사용하여 이 저장소에 액세스합니다.

이러한 저장소의 프로그램을 구성하는 파일은 아카이브 형식으로 제공됩니다. 쉽게 액세스하고 배포할 수 있도록 모든 항목을 단일 파일로 묶습니다. 예를 들어 데비안은 DEB 형식을 사용하여 프로그램을 저장하고 배포합니다. 이러한 번들은 바이너리 패키지라고 합니다. .

이러한 파일을 추출하여 컴퓨터(일반적으로 패키지 관리자 또는 앱 스토어)에 설치하려면 특별한 프로그램이 필요합니다. 이러한 도구는 설치한 파일을 추적하고 소프트웨어 업데이트를 관리하는 등의 다른 유용한 기능도 수행합니다.

패키지는 어디에서 오나요?

모든 소프트웨어는 C 또는 C++와 같은 특정 프로그래밍 언어로 작성된 소스 코드로 알려진 텍스트 줄로 구성됩니다. 일반적으로 이 소스 코드를 아카이브로 묶고 패키지라고 부를 수는 없습니다. 이 줄은 컴퓨터가 이해하고 실행할 수 있는 언어로 번역되어야 합니다.

이 프로세스를 컴파일이라고 하며 최종 결과는 컴퓨터에서 실행할 수 있는 바이너리를 생성합니다. 패키지와 소프트웨어의 차이점은 소프트웨어 바이너리가 구성 파일과 같은 다른 항목과 함께 패키지 내부에 함께 저장된다는 것입니다.

"소스에서" 설치란 무엇입니까?

바이너리 대 소스 패키지:어느 것을 사용해야 합니까?

'소스에서' 프로그램을 설치한다는 것은 패키지 관리자를 사용하지 않고 프로그램을 설치하는 것을 의미합니다. 대신 소스 코드를 컴파일하고 바이너리를 컴퓨터에 복사합니다.

대부분의 경우 GitHub, GitLab 또는 Bitbucket과 같은 호스팅 서비스에서 프로젝트의 소스 코드를 다운로드할 수 있습니다. 더 큰 프로그램은 개인 웹사이트에서 소스 코드를 호스팅할 수도 있습니다. 코드는 일반적으로 아카이브 형식(소스 패키지이라고도 함)으로 압축됩니다. ).

특별한 도구 세트는 건물 프로세스를 자동화하는 데 도움이 됩니다. Linux 데스크톱에서 이는 종종 make라는 명령줄 프로그램의 형태로 제공됩니다. . 다른 언어로 작성된 소스 코드는 바이너리로 변경하기 위해 특정 컴파일러와 명령이 필요합니다. make 프로그램은 이 과정을 자동화합니다.

이 자동화가 작동하도록 프로그램은 make에 makefile을 제공합니다. 무엇을 하고 컴파일해야 하는지 알려줍니다. 요즘에는 일반적으로 CMake와 같은 특수 소프트웨어에 의해 자동으로 생성됩니다. 여기에서 시작합니다. 여기에서 소프트웨어에 컴파일할 기능을 정확히 지정할 수 있습니다.

"소스에서" 빌드 예제

예를 들어 아래 명령은 CMake를 사용하여 Calligra Office Suite에 대한 구성 파일을 생성합니다. 생성된 파일은 make 프로그램이 Calligra의 Writer 구성 요소만 컴파일하도록 지시합니다.

cmake -DPRODUCTSET=WORDS -DCMAKE_INSTALL_PREFIX=$HOME/kde/inst5 $HOME/kde/src/calligra

이 작업을 수행한 후에는 make 도구를 실행하여 결과를 컴파일하고 컴퓨터에 복사하기만 하면 됩니다. 이것은 다음과 같은 방식으로 이루어집니다:

make
make install

이것이 프로그램 컴파일의 일반적인 패턴이지만 소스 패키지를 설치하는 다른 방법이 많이 있습니다. 예를 들어, Gentoo Linux에는 이를 처리하는 내장된 방법이 있어 프로세스를 훨씬 빠르고 쉽게 만듭니다. 그러나 바이너리 패키지를 빌드하려면 위의 명령보다 몇 단계가 더 필요합니다.

바이너리 패키지 사용의 이점

Linux를 사용하는 경우 다른 사람이 사용자가 설치한 소프트웨어를 미리 컴파일했을 가능성이 큽니다. 이것은 소스 패키지를 사용하는 것보다 훨씬 더 일반적이 되었습니다. 그런데 왜요?

이진 버전은 관리하기 더 쉽습니다.

바이너리 대 소스 패키지:어느 것을 사용해야 합니까?

바이너리 패키지에는 컴파일된 설치 파일 이상의 것이 포함되어 있습니다. 또한 패키지 관리자가 모든 프로그램을 쉽게 추적할 수 있도록 하는 정보를 저장합니다. 예를 들어, DEB 파일(Debian 및 Debian 파생 제품의 패키지 형식)에는 프로그램을 실행하는 데 필요한 다른 소프트웨어 및 현재 버전과 같은 중요한 정보도 포함되어 있습니다.

이렇게 하면 프로그램을 성공적으로 실행하는 데 필요한 다른 파일에 대해 걱정할 필요가 없으므로 패키지를 훨씬 쉽게 설치할 수 있습니다. 패키지 관리자는 패키지 자체에서 해당 정보를 읽고 필요한 모든 종속성을 자동으로 다운로드할 수 있습니다.

소스에서 프로그램을 설치할 때 코드를 자체 바이너리 패키지로 컴파일하지 않는 한 당신은 해당 소프트웨어 관리를 담당하게 됩니다. 작동하려면 어떤 다른 프로그램이 필요한지 염두에 두고 직접 설치해야 합니다.

이진 버전의 안정성 향상

패키지 관리자의 저장소를 유지 관리하는 사람들은 바이너리에 문제가 있는지 테스트하고 나타나는 문제를 해결하기 위해 최선을 다하는 경향이 있습니다. 이것은 소스에서 설치한 사람이 놓칠 수 있는 프로그램의 안정성 향상으로 이어질 수 있습니다.

플러스 패키지는 일반적으로 시스템에서 실행될 수 있도록 엄격한 규칙 세트를 준수해야 합니다. 예를 들어 Debian과 Ubuntu에는 다른 많은 Linux 배포판과 마찬가지로 정책 매뉴얼이 있습니다.

일부 프로그램은 실행을 위해 동일한 소프트웨어 종속성의 다른 버전에 의존하기도 합니다. 패키지 저장소는 이러한 충돌을 해결하기 위해 최선을 다하므로 이에 대해 걱정할 필요가 없습니다.

소스 패키지 컴파일의 이점

소스에서 프로그램을 설치하는 것은 모든 사람이 해야 하는 일이 아닙니다. 일반적으로 바이너리 패키지를 고수하면 PC를 유지 관리하는 것이 더 쉽기 때문입니다. 그럼에도 불구하고 이 약간 더 복잡한 프로그램 설치 방법을 사용하면 여전히 몇 가지 이점이 있습니다.

최신 소프트웨어를 제공하는 소스 코드

프로그램을 보다 안정적으로 만드는 것의 한 가지 단점은 개선하고 수정하는 데 시간이 걸린다는 것입니다. 결과적으로 이전 버전의 소프트웨어를 사용하게 될 수 있습니다. 최신의 최고를 원하는 사람들은 그 대가로 약간의 불안정성을 선호할 수도 있습니다.

프로그램을 컴파일하지 않고 이러한 요구를 충족시키는 Linux 운영 체제가 있지만 몇 가지 단점이 있습니다. 예를 들어, 세트 패키지 버전을 자주 릴리스하지 않는 소프트웨어는 소스에서 설치하는 것보다 저장소에서 최신 상태로 유지하기가 더 어렵습니다.

바이너리 패키지는 일반적으로 프로그램의 공식 릴리스에서 만들어지기 때문입니다. 따라서 이러한 버전 간의 변경 사항은 일반적으로 고려되지 않습니다. 소스에서 자신의 소프트웨어를 컴파일하면 이러한 변경 사항의 이점을 즉시 누릴 수 있습니다.

Linux 운영 체제에 원하는 소프트웨어가 미리 만들어지지 않았을 수도 있습니다. 이 경우 소스에서 설치하는 것이 유일한 옵션입니다.

선택 및 선택 가능

바이너리 대 소스 패키지:어느 것을 사용해야 합니까?

소스 패키지를 사용할 때의 또 다른 이점은 설치하는 프로그램을 더 잘 제어할 수 있다는 것입니다. 바이너리 저장소에서 설치할 때 패키지를 사용자 정의할 수 있는 방법이 제한됩니다.

예를 들어 명령줄 기반 오디오 및 비디오 변환기인 FFmpeg를 살펴보십시오. 기본적으로 엄청난 수의 기능이 제공되며 그 중 일부는 만질 수도 없습니다. 예를 들어, 이 소프트웨어는 일반적으로 프로덕션 환경에서만 사용되지만 JACK 오디오 지원은 FFmpeg에서 사용할 수 있습니다.

FFmpeg를 컴파일하면 원하지 않는 것을 제거하여 더 가볍고 필요에 맞게 조정할 수 있습니다. 다른 헤비급 프로그램에도 동일하게 적용됩니다.

리소스가 부족할 때 기능을 제거하면 부하를 줄이는 좋은 방법이 될 수 있습니다. 많은 저가형 컴퓨터에서 볼 수 있는 Chrome OS가 Gentoo Linux를 기반으로 한다는 것은 놀라운 일이 아닙니다. 소스 기반인 Gentoo는 많은 소프트웨어를 컴파일하므로 잠재적으로 이러한 시스템을 훨씬 더 가볍게 실행할 수 있습니다.

둘 다 함께 설치하지 않는 이유는 무엇입니까?

매일 패키지를 컴파일하고 싶지는 않겠지만, 염두에 두면 유용합니다. 즉, Snap Store 및 Flathub와 같은 사이트에서 사용할 수 있는 새로운 범용 패키지 형식을 사용하면 최신 소프트웨어를 얻기 위해 소스에서 빌드할 필요가 줄어듭니다.