[Linux] alien 명령어 (feat. 확장자 변환 .rpm > .deb)

2 분 소요


최근 우분투에서 .rpm 확장자 파일을 다운받아 .deb 확장자 파일로 변환하여 특정 소프트웨어를 설치하였습니다. 저는 주로 우분투를 사용하였기에 .rpm 확장자를 가지는 파일은 처음 보았습니다. 관련된 내용을 정리해둬야겠습니다.

1. .rpm 파일

  • 레드햇 패키지 매니저(Redhat Package Manager) 프로그램이 관리하는 파일 형식입니다.
  • .rpm 확장자는 레드햇(Redhat) 계열 리눅스의 패키지 매니저가 관리하는 파일 형식입니다.
  • rpm 명령어에 의해 설치, 업데이트, 삭제 그리고 정보 제공이 이뤄집니다.
레드햇(Redhat) 계열 리눅스
  • Red Hat Linux
  • Fedora
  • CentOS

2. .deb 파일

  • 데비안(Debian) 계열 리눅스의 소프트웨어 패키지 포맷의 확장자입니다.
  • .deb 확장자는 데비안 계열 리눅스의 패키지 매니저가 사용하는 파일 형식입니다.
  • dpkg 명령어에 의해 설치, 삭제 그리고 정보 제공이 이뤄집니다.
데비안(Debian) 계열 리눅스
  • Debian
  • Ubuntu
  • Linux Mint

3. alien 명령어

우분투에서 .rpm 파일을 직접 사용할 수 없으니 변환 작업이 필요한 것이었습니다. alien 명령어 설치 방법부터 사용 예시까지 정리해보겠습니다.

3.1. 설치

패키지 최신화
$ sudo apt-get update
$ sudo apt-get upgrade
alien 설치
$ sudo apt install alien

3.2. 명령어 살펴보기

$ alien -h
Usage: alien [options] file [...]
  file [...]                Package file or files to convert.
  -d, --to-deb              Generate a Debian deb package (default).
     Enables these options:
       --patch=<patch>      Specify patch file to use instead of automatically
                            looking for patch in /var/lib/alien.
       --nopatch	        Do not use patches.
       --anypatch           Use even old version os patches.
       -s, --single         Like --generate, but do not create .orig
                            directory.
       --fixperms           Munge/fix permissions and owners.
       --test               Test generated packages with lintian.
  -r, --to-rpm              Generate a Red Hat rpm package.
      --to-slp              Generate a Stampede slp package.
  -l, --to-lsb              Generate a LSB package.
  -t, --to-tgz              Generate a Slackware tgz package.
     Enables these options:
       --description=<desc> Specify package description.
       --version=<version>  Specify package version.
  -p, --to-pkg              Generate a Solaris pkg package.
  -i, --install             Install generated package.
  -g, --generate            Generate build tree, but do not build package.
  -c, --scripts             Include scripts in package.
      --target=<arch>       Set architecture of the generated package.
  -v, --verbose             Display each command alien runs.
      --veryverbose         Be verbose, and also display output of run commands.
  -k, --keep-version        Do not change version of generated package.
      --bump=number         Increment package version by this number.
  -h, --help                Display this help message.
  -V, --version		        Display alien's version number.

3.3. 명령어 사용

3.3.1. 변경 전 디렉토리

~/Downloads$ ls
galera-4-26.4.9-1.el8.x86_64.rpm

3.3.2. 명령어 수행

  • .rpm 파일을 .deb 파일로 변경하는 -d 옵션을 사용합니다.
  • --scripts 옵션으로 패키지 내 스크립트도 함께 포함시킵니다.
  • warning의 원인과 해결 방법에 대해서 확인 중 입니다.
~/Downloads$ sudo alien --scripts -d galera-4-26.4.9-1.el8.x86_64.rpm 
warning: galera-4-26.4.9-1.el8.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 1bb943db: NOKEY
warning: galera-4-26.4.9-1.el8.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 1bb943db: NOKEY
...
galera-4_26.4.9-2_amd64.deb generated

3.3.3. 변경 전 디렉토리

~/Downloads$ ls
galera-4-26.4.9-1.el8.x86_64.rpm  galera-4_26.4.9-2_amd64.deb

CLOSING

개발을 진행하다보면 리눅스 명령어를 자주 사용하게 되는데 관련 명령어를 정리한 적이 없습니다. 매번 인터넷에서 찾다보니 예전에 참고했던 내용을 다시 못 찾는 경우도 허다합니다. 오늘부터라도 블로그에 기록해두고 찾아서 사용해야겠습니다.

REFERENCE