Linux 배포판에 Debian 패키지를 설치하는 방법

데비안 패키지는 Linux 생태계에서 가장 널리 사용되는 패키지 형식 중 하나입니다. 많은 경우, Linux 환경으로 프로그램을 배포할 때 .deb 확장자를 가진 데비안 패키지 형태로 제공됩니다. 이는 특정 Linux 배포판만을 위한 지원이 아닌, 광범위한 Linux 사용자에게 접근성을 제공하기 위한 것입니다. 하지만, 모든 Linux 배포판이 데비안 패키지를 완벽하게 지원하도록 설계된 것은 아닙니다. 이 글에서는 데비안 패키지를 직접 설치하고, Linux 배포판에서 해당 프로그램이 원활하게 작동하도록 만드는 방법을 살펴볼 것입니다.

여기서 ‘변환’과 같은 복잡한 과정은 필요하지 않습니다. 대신, 패키지에서 필요한 데이터를 추출하여 시스템에 적절히 이동시키는 과정을 다룰 것입니다. 먼저, 설치하고자 하는 데비안 패키지를 다운로드해야 합니다. 이 예시에서는 Google Chrome 패키지를 사용하겠습니다. 이 가이드는 Google Chrome 데비안 패키지에 초점을 맞추지만, 제시된 방법은 다른 데비안 패키지에도 적용될 수 있습니다.

데이터 추출 과정

대부분의 Linux 사용자는 .deb 패키지가 압축을 풀 수 있는 아카이브 파일이라는 사실을 잘 모릅니다. 먼저, 다운로드한 데비안 패키지를 압축 해제해야 합니다. 이 예시에서는 Chrome 패키지가 이미 시스템에 다운로드되어 압축이 풀린 상태라고 가정합니다. 터미널을 열고, 새 폴더를 생성합니다. 이 폴더는 추출된 패키지 데이터를 보관할 것입니다.

mkdir -p ~/deb-extracted

다운로드한 Chrome .deb 파일을 새로 생성한 폴더로 이동시킵니다.

mv google-chrome-stable_current_amd64.deb ~/deb-extracted

이제 해당 폴더로 이동한 후, `ar` 도구를 사용하여 Chrome 패키지 내부를 확인합니다.

cd ~/deb-extracted
ar tv google-chrome-stable_current_amd64.deb

`ar` 도구는 Chrome .deb 파일 내부에 “debian-binary”, “control.tar.gz”, “data.tar.xz” 세 개의 압축 파일이 있음을 보여줍니다. 이 중에서 실제 프로그램 데이터는 `data.tar.xz` 아카이브에 담겨 있으며, `control.tar.gz` 역시 중요한 정보를 포함하고 있습니다.

`ar` 도구는 단순히 아카이브 내부를 확인하는 것 외에도, 파일을 추출하는 기능도 제공합니다. 다음 명령을 사용하여 Chrome .deb 파일에서 세 가지 항목을 추출합니다.

ar xv google-chrome-stable_current_amd64.deb

이제 `~/deb-extracted` 폴더에 세 항목이 모두 추출되었습니다. `debian-binary` 파일은 Debian 기반 시스템이 아니므로 필요하지 않으니 삭제합니다.

다음으로 `data.tar.xz` 파일에서 프로그램 실행에 필요한 모든 데이터를 추출해야 합니다. `tar` 명령을 사용하여 압축을 해제합니다.

tar -xvf data.tar.xz

데이터 아카이브 압축 해제가 완료되면 “opt”, “usr”, “etc” 세 개의 폴더가 생성됩니다. 이 중에서 “etc” 폴더는 데비안 업데이트 작업과 관련된 파일이 들어있으므로 삭제해도 무방합니다.

주의: 다음 명령 실행 시 경로를 절대 경로로 지정하지 않도록 주의해야 합니다. `~/deb-extracted`에서 추출한 `etc` 폴더를 삭제해야 합니다. 실수로 `/etc/` 폴더를 삭제하지 않도록 조심해야 합니다.

rm -rf etc

이제 “usr” 및 “opt” 폴더 내부의 파일들을 시스템의 적절한 위치로 이동시켜야 합니다. 예를 들어, Debian 기반이 아닌 Linux 배포판에 Google Chrome을 설치하려면 해당 파일들이 속하는 위치로 수동으로 이동시켜야 합니다.

cd opt

sudo -s

mv google /opt/

ln -snf /opt/google/google-chrome /usr/bin/

cd .. share

mv -f * /usr/share/

위 예시는 `data.tar.xz`에서 추출한 파일을 어떻게 처리해야 하는지를 보여줍니다. 다른 데비안 패키지의 압축을 풀면, 이 튜토리얼에서 본 내용과 다를 수 있습니다. 중요한 것은 `data.tar.xz` 아카이브 내부에 있는 폴더들의 이름을 확인하고, 그 이름에 주목하는 것입니다. 내부 폴더들은 Linux 시스템의 파일 시스템과 동일한 이름을 가지고 있으며, 내부 항목은 해당 위치로 이동되어야 합니다.

패키지 지침 확인

때로는 데비안 패키지를 디컴파일하고 `data.tar.xz` 아카이브를 추출하는 것만으로는 충분하지 않을 수 있으며, 여전히 설치 과정에서 어려움을 겪을 수도 있습니다. 다행히도 각 데비안 패키지 파일에는 지침이 함께 제공됩니다. 이 지침은 `control.tar.gz` 파일 내부에 있습니다.

다음 명령을 사용하여 `~/deb-extracted` 폴더에 `control.tar.gz` 아카이브의 압축을 풉니다.

tar -xvzf control.tar.gz

`control.tar.gz` 아카이브에는 데비안 패키지에 필요한 정보를 알려주는 여러 스크립트가 있습니다. 여기서 우리가 주목해야 할 것은 “postinst”라는 파일입니다. “postinst”는 “설치 후(post-installation)”의 약어로, 필요한 모든 작업을 실행하고 설정하는 Bash 스크립트입니다.

터미널에서 `cat` 명령어를 사용하여 텍스트 파일을 확인합니다. 긴 파일의 경우, `more` 명령어와 함께 사용하여 한 줄씩 확인할 수 있습니다. “postinst” 파일을 확인하고, 스크립트가 수행하는 작업과 특히 파일이 저장되는 위치에 주의를 기울여야 합니다. 이는 `data.tar.xz` 내부의 항목이 어디에 속하는지, 그리고 어떻게 작동하는지 파악하는 데 큰 도움이 됩니다.

cat postinst | more

종속성

데비안 패키지를 디컴파일하고 데이터 파일을 올바른 위치로 옮기는 것만으로는 충분하지 않은 경우가 많습니다. 때로는 올바른 종속성 파일을 설치해야 프로그램이 제대로 작동할 수 있습니다. 다행히도 모든 데비안 패키지에는 `control.tar.gz` 내부에 파일이 있으며, 여기에는 프로그램이 제대로 작동하기 위해 설치해야 하는 라이브러리 파일 목록이 요약되어 있습니다. 이 파일을 확인하려면 `cat` 명령어를 사용하십시오.

cat control | more

예를 들어, Chrome의 경우 제어 파일은 `ca-certificates`, `fonts-liberation`, `libappindicator1`, `libasound2`, `libatk-bridge2.0-0` 등을 요구합니다.

이 파일을 주의 깊게 읽고 Linux 시스템에 필요한 개별 라이브러리를 설치하십시오. 시스템에 올바른 라이브러리가 설치되어 있다면, 추출된 프로그램이 정상적으로 작동할 것입니다.

만약 Redhat 기반의 Linux 시스템을 사용하고 있다면, 이 가이드를 참고하여 해당 시스템에 데비안 패키지를 설치할 수 있습니다.