리눅스/Arch or Manjaro

아치 리눅스(Arch Linux) 아치 빌드 시스템(ABS - Arch Build System) 사용법

씨실과 날실 2021. 9. 12. 09:00

 

안녕하세요. 씨실과 날실입니다.

이번에는 아치 리눅스에서 지원하는 아치빌드 시스템(ABS - Arch Build System)을 통해 패키지를 설치하는 방법에 대해 알아보도록 하겠습니다.

 

사실 우리는 ABS을 이용한 패키지 설치 방법의 중요한 부분을 익힌 적이 있습니다. 그것은 바로 아치 사용자 저장소(AUR - Arch User Repository)를 이용한 패키지 설치입니다.

아래 링크 글을 통해 AUR Helper 없이 AUR 패키지를 설치하는 방법에 대해 알아보았었습니다.

위 링크 글에서 익힌 것처럼 AUR 패키지를 yay나 paru 등과 같은 AUR Helper 프로그램 없이 사용자가 직접 설치하고 업그레이드한다는 것은 결국 다운받은 원본 소스 파일들을 사용자가 직접 컴파일, 빌드 과정을 거쳐 패키지를 생성해 설치한다는 의미입니다.

 

ABS과 AUR의 차이는 결국 해당 패키지를 아치 리눅스팀이 유지보수를 책임지느냐, 제3자인 서드 개발자 또는 팀이 책임지느냐로 갈릴 뿐입니다.

전자(ABS)가 아치 리눅스가 공식적으로 지원하는 저장소(core, community, extra 등)들에 있는 패키지만을 관리한다면, 후자(AUR)는 아치리눅스가 별도로 제공하는 개별 저장소에 각 개발자나 개발팀이 자신들이 관리하는 패키지를 배포합니다.

 

위 두 방식 모두 사용자가 다운받은 소스를 토대로 사용자가 직접 PKGBUILD 파일을 수정, 소스 컴파일, 빌드 과정을 거쳐 설치할 패키지를 만들고 이렇게 만든 패키지를 시스템에 설치하는 방식을 사용합니다.

단지 이 과정에서 패키지 소스를 다운받는 과정 등에서 다소 차이가 있을 뿐입니다.

 

아치 리눅스 사용자들은 AUR은 사용하더라도  ABS를 사용하는 경우는 거의 없습니다. 일반적인 경우 ABS를 사용해 얻을 수 있는 이득이 전혀 없기 때문입니다. ABS를 이용해 패키지를 설치할 바에는 pacman을 이용해 저장소에서 이미 빌드 완료된 패키지를 내려받아 설치하는 편이 훨씬 간편하고 시간 또한 굉장히 단축되기 때문입니다.

 

만약 아치 리눅스 사용자가 이 ABS를 사용한다면 그것은 일반적인 시스템 구성이 아닌, 독자적인 시스템 구성을 기준으로 패키지를 설치하는 경우뿐일 것입니다.

 

그럼에도 불구하고 이 ABS를 사용하는 방법을 굳이 다루는 이유는 단순히 저장소를 통해 이 완성된 패키지를 설치하는 방법이 아니라, 사용자가 직접 소스를 수정하고 수정된 소스를 컴파일, 빌드하여 자신의 시스템에 꼭 맞춘 맞춤 패키지 생성 방법을 간략하게나마 익힐 수 있기 때문입니다.

 

여기서는 대표적인 멀티미디어 재생 프로그램 vlc를 ABS를 이용해 설치하는 방법에 대해 설명하도록 하겠습니다.

 


시스템 내 전체 패키지 업그레이드

[study@study-virtualbox ~]$ sudo pacman -Syu
[sudo] study 암호: 
:: 꾸러미 데이터베이스 동기화 중...
 core is up to date
 extra is up to date
 community is up to date
:: 전체 시스템 업그레이드 시작 중...
 할 일이 없습니다
[study@study-virtualbox ~]$

가장 먼저 시스템의 전체 패키지들을 업그레이드해줍니다.

 

vlc 패키지 정보 확인

이번에 설치할 vlc에 대한 정보를 알아보도록 합시다.

[study@study-virtualbox ~]$ pacman -Sii vlc
저장소             : extra
이름               : vlc
버전               : 3.0.16-3
설명               : Multi-platform MPEG, VCD/DVD, and DivX player
아키텍처           : x86_64
URL                : https://www.videolan.org/vlc/
라이선스           : LGPL2.1  GPL2
모음들             : 없음
다음을 제공        : 없음
다음에 의존        : a52dec  libdvbpsi  libxpm  libdca  libproxy  lua52  libidn
                     libmatroska  taglib  libmpcdec  ffmpeg  faad2  libmad
                     libmpeg2  xcb-util-keysyms  libtar  libxinerama  libsecret
                     libupnp  libixml.so=11-64  libupnp.so=17-64  libarchive
                     qt5-base  qt5-x11extras  qt5-svg  freetype2  fribidi
                     harfbuzz  fontconfig  libxml2  gnutls  libplacebo
                     wayland-protocols
선택 의존성        : avahi: service discovery using bonjour protocol
                     aom: AOM AV1 codec
                     gst-plugins-base-libs: for libgst plugins
                     dav1d: dav1d AV1 decoder
                     libdvdcss: decoding encrypted DVDs
                     libavc1394: devices using the 1394ta AV/C
                     libdc1394: IEEE 1394 access plugin
                     kwallet: kwallet keystore
                     libva-vdpau-driver: vdpau backend nvidia
                     libva-intel-driver: video backend intel
                     libbluray: Blu-Ray video input
                     flac: Free Lossless Audio Codec plugin
                     twolame: TwoLAME mpeg2 encoder plugin
                     libgme: Game Music Emu plugin
                     vcdimager: navigate VCD with libvcdinfo
                     libmtp: MTP devices discovery
                     systemd-libs: udev services discovery
                     smbclient: SMB access plugin
                     libcdio: audio CD playback
                     gnu-free-fonts: subtitle font
                     ttf-dejavu: subtitle font
                     libssh2: sftp access
                     libnfs: NFS access
                     mpg123: mpg123 codec
                     protobuf: chromecast streaming
                     libmicrodns: mDNS services discovery (chromecast etc)
                     lua52-socket: http interface
                     libdvdread: DVD input module
                     libdvdnav: DVD with navigation input module
                     libogg: Ogg and OggSpots codec
                     libshout: shoutcast/icecast output plugin
                     libmodplug: MOD output plugin
                     libvpx: VP8 and VP9 codec
                     libvorbis: Vorbis decoder/encoder
                     speex: Speex codec
                     opus: opus codec
                     libtheora: theora codec
                     libpng: PNG support
                     libjpeg-turbo: JPEG support
                     librsvg: SVG plugin
                     x264: H264 encoding
                     x265: HEVC/H.265 encoder
                     zvbi: VBI/Teletext/webcam/v4l2 capture/decoding
                     libass: Subtitle support
                     libkate: Kate codec
                     libtiger: Tiger rendering for Kate streams
                     sdl_image: SDL image support
                     srt: SRT input/output plugin
                     aalib: ASCII art video output
                     libcaca: colored ASCII art video output
                     libpulse: PulseAudio audio output
                     alsa-lib: ALSA audio output
                     jack: jack audio server
                     libsamplerate: audio Resampler
                     libsoxr: SoX audio Resampler
                     chromaprint: Chromaprint audio fingerprinter
                     lirc: lirc control
                     libgoom2: Goom visualization
                     projectm: ProjectM visualisation
                     ncurses: ncurses interface
                     libnotify: notification plugin
                     gtk3: notification plugin
                     aribb24: aribsub support
                     aribb25: aribcam support
                     pcsclite: aribcam support
다음이 요구        : deepin-music  deepin-voice-note  elisa  kaffeine
                     phonon-qt5-vlc
다음의 선택 의존성 : gaupol  mediathekview  pd-gem  smtube
다음과 충돌        : vlc-plugin
다음을 대체        : vlc-plugin
다운로드 크기      : 11.76 MiB
설치된 크기        : 59.77 MiB
꾸러미 만든이      : Antonio Rojas <arojas@archlinux.org>
빌드 날짜          : 없음
MD5 합             : da19f26ccd6a67c516379568403f083f
SHA-256 합         : e6dc5b464b59f5cb782549456f41479e15efb377460e1de5cc9851a5f6ff7d45
서명들             : 7A4E76095D8A52E4

[study@study-virtualbox ~]$

위 정보들 중에서 사용자가 특히 눈여겨 보아야 할 정보는 패키지 간 의존성과 충돌 정보입니다.

 

주의사항

맨 하단에 패키지 서명 정보가 존재하는데 ABS를 통한 패키지 설치 시 패키지 서명키 정보로 이 값을 추가하더라도 전혀 도움이 되지 않습니다. ABS를 통해 패키지를 설치할 때는 위 정보가 아닌 PKGBUILD 파일 안에 저장된 서명키 정보를 사용해주어야 합니다.

자세한 내용은 후술하는 내용을 참고하시기 바랍니다.

 

ABS 패키지 설치 작업 전 사전 필수 패키지 설치

[study@study-virtualbox ~]$ sudo pacman --needed -S base-devel git
[sudo] study 암호: 
경고: autoconf-2.71-1는 최신 버전입니다 -- 건너뜀
경고: automake-1.16.4-1는 최신 버전입니다 -- 건너뜀
경고: binutils-2.36.1-3는 최신 버전입니다 -- 건너뜀
경고: bison-3.7.6-1는 최신 버전입니다 -- 건너뜀
경고: fakeroot-1.25.3-2는 최신 버전입니다 -- 건너뜀
경고: file-5.40-5는 최신 버전입니다 -- 건너뜀
경고: findutils-4.8.0-1는 최신 버전입니다 -- 건너뜀
경고: flex-2.6.4-3는 최신 버전입니다 -- 건너뜀
경고: gawk-5.1.0-1는 최신 버전입니다 -- 건너뜀
경고: gcc-11.1.0-1는 최신 버전입니다 -- 건너뜀
경고: gettext-0.21-1는 최신 버전입니다 -- 건너뜀
경고: grep-3.6-1는 최신 버전입니다 -- 건너뜀
경고: groff-1.22.4-6는 최신 버전입니다 -- 건너뜀
경고: gzip-1.10-3는 최신 버전입니다 -- 건너뜀
경고: libtool-2.4.6+42+gb88cebd5-16는 최신 버전입니다 -- 건너뜀
경고: m4-1.4.19-1는 최신 버전입니다 -- 건너뜀
경고: make-4.3-3는 최신 버전입니다 -- 건너뜀
경고: pacman-6.0.0-5는 최신 버전입니다 -- 건너뜀
경고: patch-2.7.6-8는 최신 버전입니다 -- 건너뜀
경고: pkgconf-1.7.3-1는 최신 버전입니다 -- 건너뜀
경고: sed-4.8-1는 최신 버전입니다 -- 건너뜀
경고: sudo-1.9.7.p2-1는 최신 버전입니다 -- 건너뜀
경고: texinfo-6.8-2는 최신 버전입니다 -- 건너뜀
경고: which-2.21-5는 최신 버전입니다 -- 건너뜀
경고: git-2.33.0-1는 최신 버전입니다 -- 건너뜀
 할 일이 없습니다
[study@study-virtualbox ~]$

AUR 패키지 설치 때와 마찬가지로 ABS 패키지 설치 작업을 하기 전 base-devel 그룹 패키지와 git 패키지는 시스템에 필수적으로 설치되어 있어야 합니다.

 

ABS 패키지 관리 도구 asp 설치

[study@study-virtualbox ~]$ sudo pacman --needed -S asp
[sudo] study 암호: 
의존성 해결 중...
꾸러미 충돌을 찾는 중...

꾸러미 (3) jq-1.6-4  oniguruma-6.9.7.1-1  asp-7-1

총 다운로드 크기:  0.45 MiB
총 설치 크기:      1.54 MiB

:: 설치를 진행하시겠습니까? [Y/n] 
:: 꾸러미 가져오는 중...
 oniguruma-6.9.7....   220.3 KiB  1034 KiB/s 00:00 [######################] 100%
 jq-1.6-4-x86_64       226.4 KiB  2.87 MiB/s 00:00 [######################] 100%
 asp-7-1-any            10.5 KiB   210 KiB/s 00:00 [######################] 100%
 Total (3/3)           457.3 KiB   926 KiB/s 00:00 [######################] 100%
(3/3) 키링의 키를 검사 중                          [######################] 100%
(3/3) 꾸러미 무결성 검사 중                        [######################] 100%
(3/3) 꾸러미 파일 불러오는 중                      [######################] 100%
(3/3) 파일 충돌 검사 중                            [######################] 100%
(3/3) 사용 가능한 디스크 공간 검사 중              [######################] 100%
:: 꾸러미 변경사항을 처리 중...
(1/3) 설치 중 oniguruma                            [######################] 100%
(2/3) 설치 중 jq                                   [######################] 100%
(3/3) 설치 중 asp                                  [######################] 100%
:: 후처리 훅들을 실행 중...
(1/1) Arming ConditionNeedsUpdate...
[study@study-virtualbox ~]$

ABS 패키지 설치를 위해서는 ABS 패키지 관리도구인 asp를 설치해주어야 합니다.

과거에는 ABS(Arch Build System)와 이름이 동일한 abs 패키지를 사용하였지만 지금은 asp로 바뀌었습니다.

 

abs 패키지 관리 디렉터리 생성 및 진입

[study@study-virtualbox ~]$ mkdir -v abs
mkdir: created directory 'abs'
[study@study-virtualbox ~]$ cd abs
[study@study-virtualbox abs]$

ABS 패키지의 소스 파일을 관리할 디렉터리를 생성하고 해당 디렉터리로 진입합니다.

 

asp 패키지 주요 사용법

이제 asp 패키지를 사용해야 합니다. 간략한 사용법은 아래 정보를 참고하시기 바랍니다.

[study@study-virtualbox abs]$ asp -h
asp v7 [OPTIONS...] {COMMAND} ...

Manage build sources for Arch packages.

Options:
  -a           ARCH        Specify an architecture other than the host's
  -h                       Show this help
  -V                       Show package version

Package Commands:
  checkout           NAME...     Create a mutable git repository for packages
  difflog            NAME        Show revision history with diffs
  export             NAME...     Export packages
  list-all                       List all known packages
  list-arches        NAME...     List architectures for packages
  list-local                     List tracked packages
  list-repos         NAME...     List repos for packages
  log                NAME        Show revision history
  ls-files           NAME        List files for package
  shortlog           NAME        Show revision history in short form
  show               NAME [FILE] Show the PKGBUILD or other FILE
  untrack            NAME...     Remove a package from the local repository
  update             [NAME...]   Update packages (update all tracked if none specified)

Meta Commands:
  disk-usage                     Show amount of disk used by locally tracked packages
  gc                             Cleanup and optimize the local repository
  help                           Show this help
  set-git-protocol   PROTO       Change git protocol (one of: git, http, https)

[study@study-virtualbox abs]$

 

보다 자세한 정보는 위 링크 또는 터미널에서 $ man asp를 실행하여 asp의 manpages를 확인하시기 바랍니다.

 

asp로 아치 공식 관리 패키지 복제

[study@study-virtualbox abs]$ asp checkout vlc
remote: Enumerating objects: 3647, done.
remote: Counting objects: 100% (657/657), done.
remote: Compressing objects: 100% (335/335), done.
remote: Total 3647 (delta 483), reused 322 (delta 322), pack-reused 2990
오브젝트를 받는 중: 100% (3647/3647), 511.75 KiB | 1.45 MiB/s, 완료.
델타를 알아내는 중: 100% (964/964), 완료.
https://github.com/archlinux/svntogit-packages URL에서
 * branch            packages/vlc -> FETCH_HEAD
 * [새로운 브랜치]   packages/vlc -> packages/packages/vlc
'vlc'에 복제합니다...
완료.
[study@study-virtualbox abs]$

위와 같이 vlc 깃 저장소를 복제해줍니다.

 

복제된 vlc 패키지 디렉터리 확인

[study@study-virtualbox abs]$ ls -F
vlc/
[study@study-virtualbox abs]$

vlc 디렉터리가 생성된 것을 알 수 있습니다.

 

[study@study-virtualbox abs]$ tree -aF vlc
vlc
├── .git/
│   ├── HEAD
│   ├── branches/
│   ├── config
│   ├── description
│   ├── hooks/
│   │   ├── applypatch-msg.sample*
│   │   ├── commit-msg.sample*
│   │   ├── fsmonitor-watchman.sample*
│   │   ├── post-update.sample*
│   │   ├── pre-applypatch.sample*
│   │   ├── pre-commit.sample*
│   │   ├── pre-merge-commit.sample*
│   │   ├── pre-push.sample*
│   │   ├── pre-rebase.sample*
│   │   ├── pre-receive.sample*
│   │   ├── prepare-commit-msg.sample*
│   │   ├── push-to-checkout.sample*
│   │   └── update.sample*
│   ├── index
│   ├── info/
│   │   └── exclude
│   ├── logs/
│   │   ├── HEAD
│   │   └── refs/
│   │       └── heads/
│   │           └── packages/
│   │               └── packages/
│   │                   └── vlc
│   ├── objects/
│   │   ├── info/
│   │   │   └── alternates
│   │   └── pack/
│   ├── packed-refs
│   └── refs/
│       ├── heads/
│       │   └── packages/
│       │       └── packages/
│       │           └── vlc
│       └── tags/
├── repos/
│   └── extra-x86_64/
│       ├── PKGBUILD
│       ├── update-vlc-plugin-cache.hook
│       ├── vlc-3.0.11.1-srt_1.4.2.patch
│       └── vlc-live-media-2021.patch
└── trunk/
    ├── PKGBUILD
    ├── update-vlc-plugin-cache.hook
    ├── vlc-3.0.11.1-srt_1.4.2.patch
    └── vlc-live-media-2021.patch

20 directories, 31 files
[study@study-virtualbox abs]$

위는 복제된 vlc 디렉터리의 내용 구조도입니다.

위와 같이 디렉터리 내의 내용물을 tree 구조로 파악하기 위해서는 tree 패키지가 설치되어 있어야 합니다.

이 tree 패키지는 모든 리눅스 배포판에서 각 패키지 관리자를 통해 손쉽게 설치할 수 있습니다.

 

컴파일 설치에 사용되는 파일 확인

[study@study-virtualbox abs]$ cd ./vlc/repos/extra-x86_64
[study@study-virtualbox extra-x86_64]$ ls -1
PKGBUILD
update-vlc-plugin-cache.hook
vlc-3.0.11.1-srt_1.4.2.patch
vlc-live-media-2021.patch
[study@study-virtualbox extra-x86_64]$

 

복제 디렉터리(보통 패키지명)/repos/아키텍처명

 

복제 디렉터리 안에는 여러 하위 디렉터리가 존재하지만 우리가 작업할 공간은 위 형식과 같습니다.

vlc의 경우 ./vlc/repos/extra-x86_64가 작업 디렉터리입니다.

 

해당 작업 디렉터리에 가면 패키지 빌드에 필요한 필수 파일들이 존재합니다.

PKGBUILD 파일은 어떤 패키지를 설치하든 필수적으로 존재하며, 패키지별로 추가 파일이 존재하는 경우도 있습니다.

 

우리에게 중요한 것은 PKGBUILD 파일입니다.

이 파일을 적절히 수정함으로써 사용자가 원하는 환경을 지원하는 패키지를 만들 수 있습니다.

 

PKGBUILD 파일 내용 확인

[study@study-virtualbox extra-x86_64]$ cat -n PKGBUILD
     1	# Maintainer: Levente Polyak <anthraxx[at]archlinux[dot]org>
     2	# Contributor: Giovanni Scafora <giovanni@archlinux.org>
     3	# Contributor: Sarah Hay <sarahhay@mb.sympatico.ca>
     4	# Contributor: Martin Sandsmark <martin.sandsmark@kde.org>
     5	
     6	pkgname=vlc
     7	_vlcver=3.0.16
     8	# optional fixup version including hyphen
     9	_vlcfixupver=
    10	pkgver=${_vlcver}${_vlcfixupver//-/.r}
    11	pkgrel=3
    12	pkgdesc='Multi-platform MPEG, VCD/DVD, and DivX player'
    13	url='https://www.videolan.org/vlc/'
    14	arch=('x86_64')
    15	license=('LGPL2.1' 'GPL2')
    16	depends=('a52dec' 'libdvbpsi' 'libxpm' 'libdca' 'libproxy' 'lua52' 'libidn'
    17	         'libmatroska' 'taglib' 'libmpcdec' 'ffmpeg' 'faad2' 'libmad'
    18	         'libmpeg2' 'xcb-util-keysyms' 'libtar' 'libxinerama' 'libsecret'
    19	         'libupnp' 'libixml.so' 'libupnp.so' 'libarchive' 'qt5-base'
    20	         'qt5-x11extras' 'qt5-svg' 'freetype2' 'fribidi' 'harfbuzz'
    21	         'fontconfig' 'libxml2' 'gnutls' 'libplacebo' 'wayland-protocols')
    22	makedepends=('gst-plugins-base-libs' 'live-media' 'libnotify' 'libbluray'
    23	             'flac' 'libdc1394' 'libavc1394' 'libcaca' 'gtk3'
    24	             'librsvg' 'libgme' 'xosd' 'twolame' 'aalib' 'avahi' 'systemd-libs'
    25	             'libmtp' 'libupnp' 'libmicrodns' 'libdvdcss' 'smbclient'
    26	             'vcdimager' 'libssh2' 'mesa' 'protobuf' 'libnfs' 'mpg123'
    27	             'libdvdread' 'libdvdnav' 'libogg' 'libshout' 'libmodplug' 'libvpx'
    28	             'libvorbis' 'speex' 'opus' 'libtheora' 'libpng' 'libjpeg-turbo'
    29	             'libx265.so' 'libx264.so' 'zvbi' 'libass' 'libkate' 'libtiger'
    30	             'sdl_image' 'libpulse' 'alsa-lib' 'jack' 'libsamplerate' 'libsoxr'
    31	             'lirc' 'libgoom2' 'projectm' 'chromaprint' 'aom' 'srt' 'dav1d'
    32	             'aribb24' 'aribb25' 'pcsclite')
    33	optdepends=('avahi: service discovery using bonjour protocol'
    34	            'aom: AOM AV1 codec'
    35	            'gst-plugins-base-libs: for libgst plugins'
    36	            'dav1d: dav1d AV1 decoder'
    37	            'libdvdcss: decoding encrypted DVDs'
    38	            'libavc1394: devices using the 1394ta AV/C'
    39	            'libdc1394: IEEE 1394 access plugin'
    40	            'kwallet: kwallet keystore'
    41	            'libva-vdpau-driver: vdpau backend nvidia'
    42	            'libva-intel-driver: video backend intel'
    43	            'libbluray: Blu-Ray video input'
    44	            'flac: Free Lossless Audio Codec plugin'
    45	            'twolame: TwoLAME mpeg2 encoder plugin'
    46	            'libgme: Game Music Emu plugin'
    47	            'vcdimager: navigate VCD with libvcdinfo'
    48	            'libmtp: MTP devices discovery'
    49	            'systemd-libs: udev services discovery'
    50	            'smbclient: SMB access plugin'
    51	            'libcdio: audio CD playback'
    52	            'gnu-free-fonts: subtitle font '
    53	            'ttf-dejavu: subtitle font'
    54	            'libssh2: sftp access'
    55	            'libnfs: NFS access'
    56	            'mpg123: mpg123 codec'
    57	            'protobuf: chromecast streaming'
    58	            'libmicrodns: mDNS services discovery (chromecast etc)'
    59	            'lua52-socket: http interface'
    60	            'libdvdread: DVD input module'
    61	            'libdvdnav: DVD with navigation input module'
    62	            'libogg: Ogg and OggSpots codec'
    63	            'libshout: shoutcast/icecast output plugin'
    64	            'libmodplug: MOD output plugin'
    65	            'libvpx: VP8 and VP9 codec'
    66	            'libvorbis: Vorbis decoder/encoder'
    67	            'speex: Speex codec'
    68	            'opus: opus codec'
    69	            'libtheora: theora codec'
    70	            'libpng: PNG support'
    71	            'libjpeg-turbo: JPEG support'
    72	            'librsvg: SVG plugin'
    73	            'x264: H264 encoding'
    74	            'x265: HEVC/H.265 encoder'
    75	            'zvbi: VBI/Teletext/webcam/v4l2 capture/decoding'
    76	            'libass: Subtitle support'
    77	            'libkate: Kate codec'
    78	            'libtiger: Tiger rendering for Kate streams'
    79	            'sdl_image: SDL image support'
    80	            'srt: SRT input/output plugin'
    81	            'aalib: ASCII art video output'
    82	            'libcaca: colored ASCII art video output'
    83	            'libpulse: PulseAudio audio output'
    84	            'alsa-lib: ALSA audio output'
    85	            'jack: jack audio server'
    86	            'libsamplerate: audio Resampler'
    87	            'libsoxr: SoX audio Resampler'
    88	            'chromaprint: Chromaprint audio fingerprinter'
    89	            'lirc: lirc control'
    90	            'libgoom2: Goom visualization'
    91	            'projectm: ProjectM visualisation'
    92	            'ncurses: ncurses interface'
    93	            'libnotify: notification plugin'
    94	            'gtk3: notification plugin'
    95	            'aribb24: aribsub support'
    96	            'aribb25: aribcam support'
    97	            'pcsclite: aribcam support')
    98	conflicts=('vlc-plugin')
    99	replaces=('vlc-plugin')
   100	options=('!emptydirs')
   101	source=(https://download.videolan.org/${pkgname}/${_vlcver}/${pkgname}-${_vlcver}${_vlcfixupver}.tar.xz{,.asc}
   102	        update-vlc-plugin-cache.hook
   103	        vlc-3.0.11.1-srt_1.4.2.patch
   104	        vlc-live-media-2021.patch)
   105	sha512sums=('35cdf191071224d0cf1b5a83c00773ff87b9e5bfcf0f5523f7edd53f75b23eda6b27bb49ffa97d69a1d176b8fe4786d959aeeb00d4380beab71c9f7e6b7c7298'
   106	            'SKIP'
   107	            'b247510ffeadfd439a5dadd170c91900b6cdb05b5ca00d38b1a17c720ffe5a9f75a32e0cb1af5ebefdf1c23c5acc53513ed983a736e8fa30dd8fad237ef49dd3'
   108	            'ac1d33d434aca2a0ad6e70800073deeaefc02b8fd72656b682ca833ee0cffe10dfa19a9355388700cab46ffbf9421c007d00ed04c7fa562698ff81e70db5f283'
   109	            'ad17d6f4f2cc83841c1c89623c339ec3ee94f6084ea980e2c8cbc3903854c85e5396e31bfd8dc90745b41794670903d854c4d282d8adec263087a9d47b226ccc')
   110	validpgpkeys=('65F7C6B4206BD057A7EB73787180713BE58D1ADC') # VideoLAN Release Signing Key
   111	
   112	prepare() {
   113	  cd ${pkgname}-${_vlcver}
   114	  sed -e 's:truetype/ttf-dejavu:TTF:g' -i modules/visualization/projectm.cpp
   115	  sed -e 's|-Werror-implicit-function-declaration||g' -i configure
   116	  sed 's|whoami|echo builduser|g' -i configure
   117	  sed 's|hostname -f|echo arch|g' -i configure
   118	  local src
   119	  for src in "${source[@]}"; do
   120	    src="${src%%::*}"
   121	    src="${src##*/}"
   122	    [[ $src = *.patch ]] || continue
   123	    echo "Applying patch $src..."
   124	    patch -Np1 < "../$src"
   125	  done
   126	  autoreconf -vf
   127	}
   128	
   129	build() {
   130	  cd ${pkgname}-${_vlcver}
   131	
   132	  export CFLAGS+=" -I/usr/include/samba-4.0"
   133	  export CPPFLAGS+=" -I/usr/include/samba-4.0"
   134	  export CXXFLAGS+=" -std=c++11"
   135	  # upstream doesn't support lua 5.4 yet: https://trac.videolan.org/vlc/ticket/25036
   136	  export LUAC=/usr/bin/luac5.2
   137	  export LUA_LIBS="$(pkg-config --libs lua5.2)"
   138	  export RCC=/usr/bin/rcc-qt5
   139	
   140	  ./configure \
   141	    --prefix=/usr \
   142	    --sysconfdir=/etc \
   143	    --with-kde-solid=/usr/share/solid/actions/ \
   144	    --disable-rpath \
   145	    --enable-nls \
   146	    --enable-archive \
   147	    --enable-live555 \
   148	    --enable-dc1394 \
   149	    --enable-dv1394 \
   150	    --enable-dvdread \
   151	    --enable-dvdnav \
   152	    --enable-bluray \
   153	    --disable-opencv \
   154	    --enable-smbclient \
   155	    --enable-sftp \
   156	    --enable-nfs \
   157	    --enable-realrtsp \
   158	    --enable-dvbpsi \
   159	    --enable-gme \
   160	    --enable-ogg \
   161	    --enable-shout \
   162	    --enable-matroska \
   163	    --enable-mod \
   164	    --enable-mpc \
   165	    --enable-mad \
   166	    --enable-mpg123 \
   167	    --enable-gst-decode \
   168	    --enable-avcodec \
   169	    --enable-libva \
   170	    --enable-avformat \
   171	    --enable-postproc \
   172	    --enable-faad \
   173	    --enable-vpx \
   174	    --enable-twolame \
   175	    --disable-fdkaac \
   176	    --enable-a52 \
   177	    --enable-dca \
   178	    --enable-flac \
   179	    --enable-libmpeg2 \
   180	    --enable-vorbis \
   181	    --enable-speex \
   182	    --enable-opus \
   183	    --enable-oggspots \
   184	    --disable-schroedinger \
   185	    --enable-png \
   186	    --enable-jpeg \
   187	    --enable-x264 \
   188	    --enable-x265 \
   189	    --enable-zvbi \
   190	    --enable-libass \
   191	    --enable-kate \
   192	    --enable-tiger \
   193	    --enable-vdpau \
   194	    --enable-wayland \
   195	    --enable-sdl-image \
   196	    --enable-freetype \
   197	    --enable-fribidi \
   198	    --enable-harfbuzz \
   199	    --enable-fontconfig \
   200	    --enable-svg \
   201	    --enable-svgdec \
   202	    --enable-aa \
   203	    --enable-caca \
   204	    --enable-pulse \
   205	    --enable-alsa \
   206	    --enable-jack \
   207	    --enable-samplerate \
   208	    --enable-soxr \
   209	    --enable-chromaprint \
   210	    --enable-chromecast \
   211	    --enable-qt \
   212	    --enable-skins2 \
   213	    --enable-libtar \
   214	    --enable-ncurses \
   215	    --enable-lirc \
   216	    --enable-goom \
   217	    --enable-projectm \
   218	    --enable-avahi \
   219	    --enable-mtp \
   220	    --enable-upnp \
   221	    --enable-microdns \
   222	    --enable-libxml2 \
   223	    --disable-libgcrypt \
   224	    --enable-gnutls \
   225	    --enable-taglib \
   226	    --enable-secret \
   227	    --enable-kwallet \
   228	    --disable-update-check \
   229	    --enable-notify \
   230	    --enable-libplacebo \
   231	    --enable-vlc \
   232	    --enable-aribsub \
   233	    --enable-aribcam \
   234	    --enable-aom \
   235	    --enable-srt \
   236	    --enable-dav1d
   237	  make
   238	}
   239	
   240	package() {
   241	  cd ${pkgname}-${_vlcver}
   242	
   243	  make DESTDIR="${pkgdir}" install
   244	
   245	  for res in 16 32 48 128 256; do
   246	    install -Dm 644 "${srcdir}/vlc-${_vlcver}/share/icons/${res}x${res}/vlc.png" \
   247	                     "${pkgdir}/usr/share/icons/hicolor/${res}x${res}/apps/vlc.png"
   248	  done
   249	  install -Dm 644 "${srcdir}/update-vlc-plugin-cache.hook" -t "${pkgdir}/usr/share/libalpm/hooks"
   250	}
   251	
   252	# vim: ts=2 sw=2 et:
[study@study-virtualbox extra-x86_64]$

위는 vlc 3.0.16 버전의 PKGBUILD 파일 원문 예입니다.

사용자가 이 내용을 적절히 수정하면 사용자가 원하는 환경을 지원하는 패키지가 만들어질 수 있게끔 소스 컴파일 및 빌드 작업이 진행 가능합니다.

 

shellscript 및 make 등 각종 컴파일 및 빌드 명령어 구문에 익숙지 않다면 함부로 수정하지 마시기 바랍니다.

일반적으로 ./configure 섹션을 수정하는 수준에서 그치는 경우가 댑분입니다.

 

수정하지는 않더라도 validpgpkeys= 항목의 설정값은 사용자가 기억해야 합니다.

왜냐하면 해당 패키지 소스 파일을 정상적으로 컴파일하기 위해서는 이 서명키를 시스템의 gpg 키박스에 등록해주어야 하기 때문입니다.

 

vlc 서명키 추가

[study@study-virtualbox extra-x86_64]$ gpg --recv-keys 7180713BE58D1ADC
gpg: directory '/home/study/.gnupg' created
gpg: keybox '/home/study/.gnupg/pubring.kbx' created
gpg: /home/study/.gnupg/trustdb.gpg: trustdb created
gpg: key 7180713BE58D1ADC: public key "VideoLAN Release Signing Key (2015)" imported
gpg: Total number processed: 1
gpg:               imported: 1
[study@study-virtualbox extra-x86_64]$

PKGBUID 파일에서 사용된 validpgpkeys의 40자리 영숫자가 GPG 키 지문(GPG key fingerprint)이고 이 키 지문의 후반 16자리가 Key ID입니다.

 

 

$ gpg --recv-keys 16자리 Key ID

위 명령을 실행하면 키 서버로부터 해당 키 ID의 키 정보를 받아 키박스에 등록합니다.

 

gpg 패키지의 정확한 명칭은 GNU Privacy Guard로, 현재 사용되는 버전은 gpg 2(최신 버전 GNU Privacy Guard 2.2)입니다.

과거 gpg 1 버전 대에는 Key import 명령 옵션으로 --recv-keys 만을 사용하였지만 현재는 동일한 기능의 옵션으로 --receive-keys가 추가되어 --receive-keys와 --recv-keys 모두 사용 가능합니다.

 

==> gpg로 원본 파일 서명 검증 중...
    vlc-3.0.16.tar.xz ... 실패 (알 수 없는 공용키입니다 7180713BE58D1ADC)
==> 오류: 하나 이상의 PGP 서명을 검증할 수 없습니다!
[study@study-virtualbox extra-x86_64]$

만약 올바른 서명이 등록되지 않으면 makepkg -s 명령의 컴파일 도중 위와 같은 오류메시지를 출력하며 작업이 중단됩니다.

 

vlc 서명키 확인

[study@study-virtualbox extra-x86_64]$ gpg --list-keys
/home/study/.gnupg/pubring.kbx
------------------------------
pub   dsa1024 2013-01-21 [SC] [expired: 2018-06-07]
      65F7C6B4206BD057A7EB73787180713BE58D1ADC
uid           [ expired] VideoLAN Release Signing Key (2015)
uid           [ expired] VideoLAN Release Signing Key (2013)
uid           [ expired] VideoLAN Release Signing Key (2014)
uid           [ expired] VideoLAN Release Signing Key (2016)
uid           [ expired] VideoLAN Release Signing Key (2017)

[study@study-virtualbox extra-x86_64]$

--list-keys 옵션은 등록되어 있는 키를 나열합니다.

 

[study@study-virtualbox extra-x86_64]$ gpg --list-signatures
/home/study/.gnupg/pubring.kbx
------------------------------
pub   dsa1024 2013-01-21 [SC] [expired: 2018-06-07]
      65F7C6B4206BD057A7EB73787180713BE58D1ADC
uid           [ expired] VideoLAN Release Signing Key (2015)
sig 3        7180713BE58D1ADC 2017-06-07  VideoLAN Release Signing Key (2015)
sig 3        7180713BE58D1ADC 2017-05-03  VideoLAN Release Signing Key (2015)
sig 3        7180713BE58D1ADC 2016-04-26  VideoLAN Release Signing Key (2015)
sig 3        7180713BE58D1ADC 2016-02-18  VideoLAN Release Signing Key (2015)
sig 3        7180713BE58D1ADC 2015-02-11  VideoLAN Release Signing Key (2015)
uid           [ expired] VideoLAN Release Signing Key (2013)
sig 3        7180713BE58D1ADC 2017-06-07  VideoLAN Release Signing Key (2015)
sig 3        7180713BE58D1ADC 2017-05-03  VideoLAN Release Signing Key (2015)
sig 3        7180713BE58D1ADC 2016-04-26  VideoLAN Release Signing Key (2015)
sig 3        7180713BE58D1ADC 2016-02-18  VideoLAN Release Signing Key (2015)
sig 3        7180713BE58D1ADC 2015-02-11  VideoLAN Release Signing Key (2015)
sig 3        7180713BE58D1ADC 2014-02-02  VideoLAN Release Signing Key (2015)
sig 3        7180713BE58D1ADC 2013-01-21  VideoLAN Release Signing Key (2015)
uid           [ expired] VideoLAN Release Signing Key (2014)
sig 3        7180713BE58D1ADC 2017-06-07  VideoLAN Release Signing Key (2015)
sig 3        7180713BE58D1ADC 2017-05-03  VideoLAN Release Signing Key (2015)
sig 3        7180713BE58D1ADC 2016-04-26  VideoLAN Release Signing Key (2015)
sig 3        7180713BE58D1ADC 2016-02-18  VideoLAN Release Signing Key (2015)
sig 3        7180713BE58D1ADC 2015-02-11  VideoLAN Release Signing Key (2015)
sig 3        7180713BE58D1ADC 2014-02-02  VideoLAN Release Signing Key (2015)
uid           [ expired] VideoLAN Release Signing Key (2016)
sig 3        7180713BE58D1ADC 2017-06-07  VideoLAN Release Signing Key (2015)
sig 3        7180713BE58D1ADC 2016-02-18  VideoLAN Release Signing Key (2015)
uid           [ expired] VideoLAN Release Signing Key (2017)
sig 3        7180713BE58D1ADC 2017-06-07  VideoLAN Release Signing Key (2015)

[study@study-virtualbox extra-x86_64]$

--list-signatures는 등록되어 있는 키와 서명을 나열합니다.

 

[study@study-virtualbox extra-x86_64]$ gpg --check-signatures
/home/study/.gnupg/pubring.kbx
------------------------------
pub   dsa1024 2013-01-21 [SC] [expired: 2018-06-07]
      65F7C6B4206BD057A7EB73787180713BE58D1ADC
uid           [ expired] VideoLAN Release Signing Key (2015)
sig!3        7180713BE58D1ADC 2017-06-07  VideoLAN Release Signing Key (2015)
sig!3        7180713BE58D1ADC 2017-05-03  VideoLAN Release Signing Key (2015)
sig!3        7180713BE58D1ADC 2016-04-26  VideoLAN Release Signing Key (2015)
sig!3        7180713BE58D1ADC 2016-02-18  VideoLAN Release Signing Key (2015)
sig!3        7180713BE58D1ADC 2015-02-11  VideoLAN Release Signing Key (2015)
uid           [ expired] VideoLAN Release Signing Key (2013)
sig!3        7180713BE58D1ADC 2017-06-07  VideoLAN Release Signing Key (2015)
sig!3        7180713BE58D1ADC 2017-05-03  VideoLAN Release Signing Key (2015)
sig!3        7180713BE58D1ADC 2016-04-26  VideoLAN Release Signing Key (2015)
sig!3        7180713BE58D1ADC 2016-02-18  VideoLAN Release Signing Key (2015)
sig!3        7180713BE58D1ADC 2015-02-11  VideoLAN Release Signing Key (2015)
sig!3        7180713BE58D1ADC 2014-02-02  VideoLAN Release Signing Key (2015)
sig!3        7180713BE58D1ADC 2013-01-21  VideoLAN Release Signing Key (2015)
uid           [ expired] VideoLAN Release Signing Key (2014)
sig!3        7180713BE58D1ADC 2017-06-07  VideoLAN Release Signing Key (2015)
sig!3        7180713BE58D1ADC 2017-05-03  VideoLAN Release Signing Key (2015)
sig!3        7180713BE58D1ADC 2016-04-26  VideoLAN Release Signing Key (2015)
sig!3        7180713BE58D1ADC 2016-02-18  VideoLAN Release Signing Key (2015)
sig!3        7180713BE58D1ADC 2015-02-11  VideoLAN Release Signing Key (2015)
sig!3        7180713BE58D1ADC 2014-02-02  VideoLAN Release Signing Key (2015)
uid           [ expired] VideoLAN Release Signing Key (2016)
sig!3        7180713BE58D1ADC 2017-06-07  VideoLAN Release Signing Key (2015)
sig!3        7180713BE58D1ADC 2016-02-18  VideoLAN Release Signing Key (2015)
uid           [ expired] VideoLAN Release Signing Key (2017)
sig!3        7180713BE58D1ADC 2017-06-07  VideoLAN Release Signing Key (2015)

gpg: 21 good signatures
[study@study-virtualbox extra-x86_64]$

--check-signatures는 키 서명을 검사하고 해당 정보를 나열합니다.

 

 

PKGBUILD 파일 내용 수정

PKGBUID 파일을 수정하면 해당 정보를 바탕으로 한 소스 컴파일, 빌드 작업으로 사용자의 시스템 환경이나 정책에 맞춘 최적화된 패키징 작업이 가능합니다.

그러나 앞서 말한 바와 같이 셸스크립트나 컴파일 관련 명령 구문에 대한 이해가 없다면 함부로 수정하지 마시기 바랍니다.

 

리눅스를 자신의 입맛대로 다루고자 하시는 분들은 가상머신 환경에서 PKGBUILD 파일을 수정하고 컴파일, 빌드하는 과정을 연습하여 익히시는 것을 권장합니다.

 

컴파일 설치

[study@study-virtualbox extra-x86_64]$ makepkg -si
==> 꾸러미 만드는 중: vlc 3.0.16-3 (2021년 09월 10일 (금) 오전 09시 58분 28초)
==> 실행 시간 의존성 검사중...
==> 빠진 의존성 설치 중...
[sudo] study 암호:

소스 파일을 컴파일, 빌드하여 패키징하고 이렇게 만들어진 패키지를 시스템에 설치하는 가장  기본적인 makepkg 명령입니다.

 

-s 옵션은 pacman으로 빠진 의존 요소를 설치합니다.

-i 옵션은 성공적으로 빌드한 후 바로 이어서 패키지를 설치합니다.

 

[study@study-virtualbox ~]$ makepkg -h
makepkg (pacman) 6.0.0

Pacman 사용과 호환되는 꾸러미를 만듭니다.

사용법: /usr/bin/makepkg  <옵션>

옵션:
  -A, --ignorearch 불완전한 arch 필드를 PKGBUILD에서 무시합니다
  -c, --clean      빌드 후 작업 파일을 지웁니다
  -C, --cleanbuild 꾸러미를 만들기 전에 $srcdir/ 디렉터리를 삭제합니다
  -d, --nodeps     모든 의존성 검사를 건너뜁니다
  -e, --noextract  원본 파일을 추출하지 않습니다(기존 $srcdir/ 디렉터리 사용)
  -f, --force      기존 꾸러미를 덮어씁니다
  -g, --geninteg   원본 파일의 무결성 검사를 생성합니다
  -h, --help       이 도움말 메시지를 표시하고 나갑니다
  -i, --install    성공적으로 빌드한 후 꾸러미를 설치합니다
  -L, --log        꾸러미 빌드 과정을 기록합니다
  -m, --nocolor    출력 메시지의 색 구분 기능을 끕니다
  -o, --nobuild    파일을 다운로드하고 추출하기까지만 진행합니다
  -p <파일>        ('PKGBUILD' 대신) 대체 빌드 스크립트를 사용합니다
  -r, --rmdeps     빌드가 성공적으로 끝나면 설치한 의존 요소를 제거합니다
  -R, --repackage  꾸러미의 내용을 다시 빌드하지 않고 꾸러미를 다시 만듭니다
  -s, --syncdeps   pacman으로 빠진 의존 요소를 설치합니다
  -S, --source     내려받은 원본 없이 소스 타르볼을 만듭니다
  -V, --version    버전 정보를 표시하고 나갑니다
  --allsource      내려받은 원본을 넣어 소스 타르볼을 만듭니다
  --check          check() 함수(PKGBUILD 안에 있는 것)를 실행합니다
  --config <파일>  ('/etc/makepkg.conf' 대신) 대체 설정 파일을 사용합니다
  --holdver        VCS 원본을 업데이트하지 않습니다
  --key <키>       서명을 위해 gpg에 대한 키를 기본값 대신 지정합니다
  --noarchive      꾸러미 파일을 생성하지 않습니다
  --nocheck        check() 함수(PKGBUILD 안에 있는 것)를 실행하지 않습니다
  --noprepare      prepare() 함수(PKGBUILD 안에 있는 것)를 실행하지 않습니다
  --nosign         꾸러미 서명을 만들지 않습니다
  --packagelist    생성될 꾸러미 파일 경로만 나열합니다
  --printsrcinfo   생성된 SRCINFO를 출력하고 나갑니다
  --sign           결과 꾸러미에 gpg로 서명합니다
  --skipchecksums  원본 파일의 검사합을 검증하지 않습니다
  --skipinteg      원본 파일에 대한 검사 확인을 수행하지 않습니다
  --skippgpcheck   PGP 서명으로 원본 파일을 검증하지 않습니다
  --verifysource   (필요하면) 원본 파일을 다운로드하고 무결성 검사를 수행합니다

다음 옵션을 pacman에 전달할 수 없습니다:

  --asdeps         불확실하게 설치한 요소처럼 꾸러미를 설치합니다
  --needed         이미 최신인 대상은 재설치 하지 않습니다
  --noconfirm      의존성을 해결할 때 확인하지 않습니다
  --noprogressbar  파일을 다운로드할 때 진행 표시줄을 표시하지 않습니다

-p를 지정하지 않으면, makepkg는 PKGBUILD를 찾습니다

[study@study-virtualbox ~]$

makepkg 주요 옵션입니다.

 

 

==> 빠진 의존성 설치 중...
[sudo] study 암호: 
의존성 해결 중...
꾸러미 충돌을 찾는 중...

꾸러미 (23) double-conversion-3.1.5-2  glslang-11.6.0-1  libebml-1.4.2-1
            md4c-0.4.8-1  shaderc-2021.1-2  spirv-tools-2021.1-1  tslib-1.22-1
            xcb-util-image-0.4.0-3  xcb-util-renderutil-0.3.9-3
            xcb-util-wm-0.4.1-3  a52dec-0.7.4-11  libdvbpsi-1:1.3.3-2
            libmad-0.15.1b-9  libmatroska-1.6.3-1  libmpeg2-0.5.1-7
            libplacebo-3.120.3-3  libtar-1.2.20-5  libupnp-1.14.8-1
            lua52-5.2.4-5  qt5-base-5.15.2+kde+r222-1  qt5-svg-5.15.2+kde+r7-1
            qt5-x11extras-5.15.2-1  xcb-util-keysyms-0.4.0-3

총 다운로드 크기:   19.81 MiB
총 설치 크기:      103.33 MiB

:: 설치를 진행하시겠습니까? [Y/n]

makepkg의 -s 옵션이 실행되는 과정입니다.

빠진 의존성 패키지를 자동으로 설치합니다.

 

:: 설치를 진행하시겠습니까? [Y/n] 
:: 꾸러미 가져오는 중...
 a52dec-0.7.4-11-...    38.3 KiB  82.5 KiB/s 00:00 [######################] 100%
 libdvbpsi-1:1.3....    90.3 KiB   381 KiB/s 00:00 [######################] 100%
 lua52-5.2.4-5-x86_64  222.5 KiB   866 KiB/s 00:00 [######################] 100%
 libebml-1.4.2-1-...    69.2 KiB   529 KiB/s 00:00 [######################] 100%
 libmatroska-1.6....   135.8 KiB  1235 KiB/s 00:00 [######################] 100%
 libmad-0.15.1b-9...    67.7 KiB   599 KiB/s 00:00 [######################] 100%
 libmpeg2-0.5.1-7...    79.0 KiB   594 KiB/s 00:00 [######################] 100%
 xcb-util-keysyms...     8.3 KiB  67.1 KiB/s 00:00 [######################] 100%
 libtar-1.2.20-5-...    36.9 KiB   345 KiB/s 00:00 [######################] 100%
 libupnp-1.14.8-1...   240.4 KiB  1635 KiB/s 00:00 [######################] 100%
 xcb-util-renderu...     9.7 KiB   100 KiB/s 00:00 [######################] 100%
 xcb-util-wm-0.4....    34.2 KiB   353 KiB/s 00:00 [######################] 100%
 xcb-util-image-0...    17.9 KiB   128 KiB/s 00:00 [######################] 100%
 tslib-1.22-1-x86_64   100.0 KiB   770 KiB/s 00:00 [######################] 100%
 double-conversio...    54.9 KiB   315 KiB/s 00:00 [######################] 100%
 md4c-0.4.8-1-x86_64    81.4 KiB   388 KiB/s 00:00 [######################] 100%
 qt5-base-5.15.2+...    13.0 MiB  3.54 MiB/s 00:04 [######################] 100%
 qt5-x11extras-5....    14.5 KiB   137 KiB/s 00:00 [######################] 100%
 qt5-svg-5.15.2+k...   146.7 KiB  1193 KiB/s 00:00 [######################] 100%
 glslang-11.6.0-1...     3.6 MiB  3.07 MiB/s 00:01 [######################] 100%
 spirv-tools-2021...  1469.9 KiB  2.87 MiB/s 00:01 [######################] 100%
 shaderc-2021.1-2...   122.6 KiB   989 KiB/s 00:00 [######################] 100%
 libplacebo-3.120...   295.5 KiB  2.22 MiB/s 00:00 [######################] 100%
 Total (23/23)          19.8 MiB  1868 KiB/s 00:11 [######################] 100%
(23/23) 키링의 키를 검사 중                        [######################] 100%
(23/23) 꾸러미 무결성 검사 중                      [######################] 100%
(23/23) 꾸러미 파일 불러오는 중                    [######################] 100%
(23/23) 파일 충돌 검사 중                          [######################] 100%
(23/23) 사용 가능한 디스크 공간 검사 중            [######################] 100%
:: 꾸러미 변경사항을 처리 중...
( 1/23) 설치 중 a52dec                             [######################] 100%
( 2/23) 설치 중 libdvbpsi                          [######################] 100%
( 3/23) 설치 중 lua52                              [######################] 100%
( 4/23) 설치 중 libebml                            [######################] 100%
( 5/23) 설치 중 libmatroska                        [######################] 100%
( 6/23) 설치 중 libmad                             [######################] 100%
( 7/23) 설치 중 libmpeg2                           [######################] 100%
libmpeg2에 대한 선택 의존성
    sdl: required for mpeg2dec
    libxv: required for mpeg2dec [설치함]
( 8/23) 설치 중 xcb-util-keysyms                   [######################] 100%
( 9/23) 설치 중 libtar                             [######################] 100%
(10/23) 설치 중 libupnp                            [######################] 100%
(11/23) 설치 중 xcb-util-renderutil                [######################] 100%
(12/23) 설치 중 xcb-util-wm                        [######################] 100%
(13/23) 설치 중 xcb-util-image                     [######################] 100%
(14/23) 설치 중 tslib                              [######################] 100%
(15/23) 설치 중 double-conversion                  [######################] 100%
(16/23) 설치 중 md4c                               [######################] 100%
(17/23) 설치 중 qt5-base                           [######################] 100%
qt5-base에 대한 선택 의존성
    qt5-svg: to use SVG icon themes [대기 중]
    qt5-wayland: to run Qt applications in a Wayland session
    qt5-translations: for some native UI translations
    postgresql-libs: PostgreSQL driver
    mariadb-libs: MariaDB driver
    unixodbc: ODBC driver
    libfbclient: Firebird/iBase driver
    freetds: MS SQL driver
    gtk3: GTK platform plugin [설치함]
    perl: for fixqt4headers and syncqt [설치함]
(18/23) 설치 중 qt5-x11extras                      [######################] 100%
(19/23) 설치 중 qt5-svg                            [######################] 100%
(20/23) 설치 중 glslang                            [######################] 100%
(21/23) 설치 중 spirv-tools                        [######################] 100%
(22/23) 설치 중 shaderc                            [######################] 100%
(23/23) 설치 중 libplacebo                         [######################] 100%
:: 후처리 훅들을 실행 중...
(1/1) Arming ConditionNeedsUpdate...
==> 빌드 시간 의존성 검사중...
==> 빠진 의존성 설치 중...

 

==> 빌드 시간 의존성 검사중...
==> 빠진 의존성 설치 중...
의존성 해결 중...
꾸러미 충돌을 찾는 중...

꾸러미 (21) confuse-3.3-3  ftgl-2.4.0-2  glew-2.2.0-2  glm-0.9.9.8-1
            glu-9.0.2-1  libftdi-1.5-2  libusb-compat-0.1.7-1  sdl-1.2.15-14
            xorg-fonts-alias-misc-1.0.4-1  xorg-fonts-misc-1.0.3-10
            aribb24-1.0.3-3  aribb25-0.2.7-2  libdvdcss-1.4.3-1  libgoom2-2k4-5
            libtiger-0.3.4-6  lirc-1:0.10.1-8  live-media-2021.08.24-1
            projectm-3.1.12-2  sdl_image-1.2.12-7  vcdimager-2.0.1-4
            xosd-2.2.14-10

총 다운로드 크기:  16.88 MiB
총 설치 크기:      84.55 MiB

:: 설치를 진행하시겠습니까? [Y/n]

역시 빠진 의존성 패키지 설치하는 과정입니다.

 

:: 설치를 진행하시겠습니까? [Y/n] 
:: 꾸러미 가져오는 중...
 live-media-2021....  1725.3 KiB   683 KiB/s 00:03 [######################] 100%
 xorg-fonts-alias...     3.3 KiB  26.0 KiB/s 00:00 [######################] 100%
 xorg-fonts-misc-...     6.6 MiB  3.32 MiB/s 00:02 [######################] 100%
 xosd-2.2.14-10-x...    42.7 KiB   169 KiB/s 00:00 [######################] 100%
 libdvdcss-1.4.3-...    20.2 KiB   289 KiB/s 00:00 [######################] 100%
 vcdimager-2.0.1-...   281.4 KiB  1279 KiB/s 00:00 [######################] 100%
 libtiger-0.3.4-6...    23.6 KiB   306 KiB/s 00:00 [######################] 100%
 sdl-1.2.15-14-x86_64  362.9 KiB   621 KiB/s 00:01 [######################] 100%
 sdl_image-1.2.12...    28.5 KiB   475 KiB/s 00:00 [######################] 100%
 confuse-3.3-3-x86_64   45.3 KiB   907 KiB/s 00:00 [######################] 100%
 libftdi-1.5-2-x86_64  125.7 KiB   990 KiB/s 00:00 [######################] 100%
 libusb-compat-0....    13.1 KiB   141 KiB/s 00:00 [######################] 100%
 lirc-1:0.10.1-8-...  1210.9 KiB  2.13 MiB/s 00:01 [######################] 100%
 libgoom2-2k4-5-x...    90.2 KiB   424 KiB/s 00:00 [######################] 100%
 glm-0.9.9.8-1-any       3.2 MiB  1774 KiB/s 00:02 [######################] 100%
 glu-9.0.2-1-x86_64    142.5 KiB   491 KiB/s 00:00 [######################] 100%
 ftgl-2.4.0-2-x86_64   317.8 KiB  1513 KiB/s 00:00 [######################] 100%
 glew-2.2.0-2-x86_64   399.0 KiB  1535 KiB/s 00:00 [######################] 100%
 projectm-3.1.12-...     2.2 MiB  1473 KiB/s 00:02 [######################] 100%
 aribb24-1.0.3-3-...    46.1 KiB   122 KiB/s 00:00 [######################] 100%
 aribb25-0.2.7-2-...    33.4 KiB   726 KiB/s 00:00 [######################] 100%
 Total (21/21)          16.9 MiB  1264 KiB/s 00:14 [######################] 100%
(21/21) 키링의 키를 검사 중                        [######################] 100%
(21/21) 꾸러미 무결성 검사 중                      [######################] 100%
(21/21) 꾸러미 파일 불러오는 중                    [######################] 100%
(21/21) 파일 충돌 검사 중                          [######################] 100%
(21/21) 사용 가능한 디스크 공간 검사 중            [######################] 100%
:: 꾸러미 변경사항을 처리 중...
( 1/21) 설치 중 live-media                         [######################] 100%
( 2/21) 설치 중 xorg-fonts-alias-misc              [######################] 100%
( 3/21) 설치 중 xorg-fonts-misc                    [######################] 100%
( 4/21) 설치 중 xosd                               [######################] 100%
( 5/21) 설치 중 libdvdcss                          [######################] 100%
( 6/21) 설치 중 vcdimager                          [######################] 100%
( 7/21) 설치 중 libtiger                           [######################] 100%
( 8/21) 설치 중 sdl                                [######################] 100%
sdl에 대한 선택 의존성
    alsa-lib: ALSA audio driver [설치함]
    libpulse: PulseAudio audio driver [설치함]
( 9/21) 설치 중 sdl_image                          [######################] 100%
(10/21) 설치 중 confuse                            [######################] 100%
(11/21) 설치 중 libftdi                            [######################] 100%
libftdi에 대한 선택 의존성
    python: library bindings [설치함]
(12/21) 설치 중 libusb-compat                      [######################] 100%
(13/21) 설치 중 lirc                               [######################] 100%
lirc에 대한 선택 의존성
    python: for lirc-setup, irdb-get and pronto2lirc [설치함]
(14/21) 설치 중 libgoom2                           [######################] 100%
(15/21) 설치 중 glm                                [######################] 100%
(16/21) 설치 중 glu                                [######################] 100%
(17/21) 설치 중 ftgl                               [######################] 100%
(18/21) 설치 중 glew                               [######################] 100%
(19/21) 설치 중 projectm                           [######################] 100%
(20/21) 설치 중 aribb24                            [######################] 100%
(21/21) 설치 중 aribb25                            [######################] 100%
:: 후처리 훅들을 실행 중...
(1/6) Reloading system manager configuration...
(2/6) Creating temporary files...
(3/6) Reloading device manager configuration...
(4/6) Arming ConditionNeedsUpdate...
(5/6) Updating fontconfig cache...
(6/6) Updating the info directory file...
==> 원본 가져오는 중...
  -> vlc-3.0.16.tar.xz 다운로드 중...

 

==> 원본 가져오는 중...
  -> vlc-3.0.16.tar.xz 다운로드 중...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 25.2M  100 25.2M    0     0   421k      0  0:01:01  0:01:01 --:--:--  740k
  -> vlc-3.0.16.tar.xz.asc 다운로드 중...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   195  100   195    0     0    147      0  0:00:01  0:00:01 --:--:--   147
  -> update-vlc-plugin-cache.hook를 찾음
  -> vlc-3.0.11.1-srt_1.4.2.patch를 찾음
  -> vlc-live-media-2021.patch를 찾음
==> source 파일을 sha512sums로 유효검사 중...
    vlc-3.0.16.tar.xz ... 넘어감
    vlc-3.0.16.tar.xz.asc ... 건너뜀
    update-vlc-plugin-cache.hook ... 넘어감
    vlc-3.0.11.1-srt_1.4.2.patch ... 넘어감
    vlc-live-media-2021.patch ... 넘어감
==> gpg로 원본 파일 서명 검증 중...
    vlc-3.0.16.tar.xz ... 넘어감 (경고: 키 유효 기간이 끝났습니다.)
==> 경고: 서명을 검증하는데 경고 사항이 있습니다.
    진실로 신뢰 가능한 요소인지 확인하십시오.
==> 원본 추출 중...
  -> vlc-3.0.16.tar.xz를 bsdtar로 추출 중

소스 원본 아카이브와 서명 파일을 내려받습니다.

빌드 작업에 필요한 추가 파일 존재 여부를 검증합니다.

내려받은 소스 파일을 sha512sum 해시값 검사를 통한 유효성 검사를 합니다.

gpg로 원본 파일 서명을 검증합니다.

이상의 작업을 거친 후 아카이브 파일에서 소스 원본 파일들을 추출합니다.

 

vlc를 포함하여 다수의 패키지들은 gpg 키가 더이상 갱신되지 않아 유효기간이 만료된 경우가 꽤 있습니다.

아무래도 과거에 비해 키 관리가 부실해지고 있습니다.

배포자 입장에서는 키 관리가 번거로운 것은 사실이고 배포 장소가 보안과 안정성 측면에서 신뢰성이 높은 소수의 플랫폼으로 정해져 있기에 키 검증의 필요성이 낮아져 키 관리를 과거만큼 열심히 하지 않는 편입니다.

그리고 개발 등과 접점이 별로 없는 일반 사용자(End User)입장에서는 서명 또는 키 검증 과정이 거의 대부분 자동으로 이루어져 인식성이 떨어지고 서명과 키라는 보안 확인 절차에 대한 개념 자체가 희박한 경우가 대부분입니다.

 

==> 원본 추출 중...
  -> vlc-3.0.16.tar.xz를 bsdtar로 추출 중
==> prepare() 시작...
Applying patch vlc-3.0.11.1-srt_1.4.2.patch...
patching file configure.ac
patching file modules/access/srt.c
patching file modules/access_output/srt.c
Applying patch vlc-live-media-2021.patch...
patching file configure.ac
patching file modules/access/live555.cpp
autoreconf: export WARNINGS=
autoreconf: Entering directory '.'
autoreconf: configure.ac: not running autopoint: --install not given
autoreconf: running: aclocal --force -I m4
autoreconf: configure.ac: tracing
autoreconf: configure.ac: not running libtoolize: --install not given
autoreconf: configure.ac: not using Intltool
autoreconf: configure.ac: not using Gtkdoc
autoreconf: running: /usr/bin/autoconf --force
configure.ac:68: warning: AC_PROG_LEX without either yywrap or noyywrap is obsolete
./lib/autoconf/programs.m4:716: _AC_PROG_LEX is expanded from...
./lib/autoconf/programs.m4:709: AC_PROG_LEX is expanded from...
configure.ac:68: the top level
configure.ac:713: warning: The macro `AC_TRY_COMPILE' is obsolete.
configure.ac:713: You should run autoupdate.
./lib/autoconf/general.m4:2847: AC_TRY_COMPILE is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
./lib/autoconf/general.m4:2270: AC_CACHE_CHECK is expanded from...
configure.ac:713: the top level
configure.ac:861: warning: The macro `AC_TRY_COMPILE' is obsolete.
configure.ac:861: You should run autoupdate.
./lib/autoconf/general.m4:2847: AC_TRY_COMPILE is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
./lib/autoconf/general.m4:2270: AC_CACHE_CHECK is expanded from...
configure.ac:861: the top level
configure.ac:1200: warning: The macro `AC_TRY_LINK' is obsolete.
configure.ac:1200: You should run autoupdate.
./lib/autoconf/general.m4:2920: AC_TRY_LINK is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
./lib/autoconf/general.m4:2270: AC_CACHE_CHECK is expanded from...
configure.ac:1200: the top level
configure.ac:1213: warning: The macro `AC_TRY_LINK' is obsolete.
configure.ac:1213: You should run autoupdate.
./lib/autoconf/general.m4:2920: AC_TRY_LINK is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
./lib/autoconf/general.m4:2270: AC_CACHE_CHECK is expanded from...
configure.ac:1213: the top level
configure.ac:1223: warning: The macro `AC_TRY_COMPILE' is obsolete.
configure.ac:1223: You should run autoupdate.
./lib/autoconf/general.m4:2847: AC_TRY_COMPILE is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
./lib/autoconf/general.m4:2270: AC_CACHE_CHECK is expanded from...
configure.ac:1223: the top level
configure.ac:1582: warning: The macro `AC_TRY_COMPILE' is obsolete.
configure.ac:1582: You should run autoupdate.
./lib/autoconf/general.m4:2847: AC_TRY_COMPILE is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
./lib/autoconf/general.m4:2270: AC_CACHE_CHECK is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
configure.ac:1582: the top level
configure.ac:1582: warning: The macro `AC_TRY_COMPILE' is obsolete.
configure.ac:1582: You should run autoupdate.
./lib/autoconf/general.m4:2847: AC_TRY_COMPILE is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2823: _AC_COMPILE_IFELSE is expanded from...
./lib/autoconf/general.m4:2839: AC_COMPILE_IFELSE is expanded from...
./lib/autoconf/general.m4:2847: AC_TRY_COMPILE is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
./lib/autoconf/general.m4:2270: AC_CACHE_CHECK is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
configure.ac:1582: the top level
configure.ac:1582: warning: The macro `AC_TRY_LINK' is obsolete.
configure.ac:1582: You should run autoupdate.
./lib/autoconf/general.m4:2920: AC_TRY_LINK is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
./lib/autoconf/general.m4:2270: AC_CACHE_CHECK is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
configure.ac:1582: the top level
autoreconf: running: /usr/bin/autoheader --force
autoreconf: running: automake --force-missing
extras/package/npapi.am:34: warning: ':='-style assignments are not portable
Makefile.am:219:   'extras/package/win32/package.mak' included from here
extras/package/win32/package.mak:14:   'extras/package/npapi.am' included from here
autoreconf: Leaving directory '.'

원본 추출 작업이 끝나고 서는 빌드 작업을 위한 사전 준비 작업이 진행됩니다.

 

==> build() 시작...
configure: WARNING: unrecognized options: --enable-aribcam
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a race-free mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether UID '1000' is supported by ustar format... yes
checking whether GID '984' is supported by ustar format... yes
checking how to create a ustar tar archive... gnutar
checking whether make supports nested variables... (cached) yes
checking whether to enable maintainer-specific portions of Makefiles... yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether the compiler supports GNU C... yes
checking whether gcc accepts -g... yes
checking for gcc option to enable C11 features... none needed
checking whether gcc understands -c and -o together... yes
checking whether make supports the include directive... yes (GNU style)
checking dependency style of gcc... gcc3

- 생략 -

사전 준비 작업이 완료되면 본격적인 빌드 작업이 진행됩니다.

 

libvlc configuration
--------------------
version               : 3.0.16
system                : linux
architecture          : x86_64 mmx sse sse2
optimizations         : yes
vlc aliases           : cvlc rvlc qvlc svlc nvlc

To build vlc and its plugins, type `make', or `./compile' if you like nice colors.
make  all-recursive
make[1]: 디렉터리 '/home/study/abs/vlc/repos/extra-x86_64/src/vlc-3.0.16' 들어감
Making all in compat
make[2]: 디렉터리 '/home/study/abs/vlc/repos/extra-x86_64/src/vlc-3.0.16/compat' 들어감
make  all-am
make[3]: 디렉터리 '/home/study/abs/vlc/repos/extra-x86_64/src/vlc-3.0.16/compat' 들어감
  CC       dummy.lo
  CC       strlcpy.lo
  CC       strnstr.lo
  CCLD     libcompat.la
make[3]: 디렉터리 '/home/study/abs/vlc/repos/extra-x86_64/src/vlc-3.0.16/compat' 나감
make[2]: 디렉터리 '/home/study/abs/vlc/repos/extra-x86_64/src/vlc-3.0.16/compat' 나감
Making all in doc
make[2]: 디렉터리 '/home/study/abs/vlc/repos/extra-x86_64/src/vlc-3.0.16/doc' 들어감
make[2]: 'all'을(를) 위해 할 일이 없습니다.
make[2]: 디렉터리 '/home/study/abs/vlc/repos/extra-x86_64/src/vlc-3.0.16/doc' 나감
Making all in po
make[2]: 디렉터리 '/home/study/abs/vlc/repos/extra-x86_64/src/vlc-3.0.16/po' 들어감
make[2]: 'all'을(를) 위해 할 일이 없습니다.
make[2]: 디렉터리 '/home/study/abs/vlc/repos/extra-x86_64/src/vlc-3.0.16/po' 나감

- 생략 -

make[3]: 디렉터리 '/home/study/abs/vlc/repos/extra-x86_64/src/vlc-3.0.16/bin' 나감
make[2]: 디렉터리 '/home/study/abs/vlc/repos/extra-x86_64/src/vlc-3.0.16/bin' 나감
Making install in test
make[2]: 디렉터리 '/home/study/abs/vlc/repos/extra-x86_64/src/vlc-3.0.16/test' 들어감
make[3]: 디렉터리 '/home/study/abs/vlc/repos/extra-x86_64/src/vlc-3.0.16/test' 들어감
make[3]: 'install-exec-am'을(를) 위해 할 일이 없습니다.
make[3]: 'install-data-am'을(를) 위해 할 일이 없습니다.
make[3]: 디렉터리 '/home/study/abs/vlc/repos/extra-x86_64/src/vlc-3.0.16/test' 나감
make[2]: 디렉터리 '/home/study/abs/vlc/repos/extra-x86_64/src/vlc-3.0.16/test' 나감
make[2]: 디렉터리 '/home/study/abs/vlc/repos/extra-x86_64/src/vlc-3.0.16' 들어감
make[3]: 디렉터리 '/home/study/abs/vlc/repos/extra-x86_64/src/vlc-3.0.16' 들어감
 /usr/bin/mkdir -p '/home/study/abs/vlc/repos/extra-x86_64/pkg/vlc/usr/bin'
 /usr/bin/install -c cvlc rvlc qvlc svlc nvlc '/home/study/abs/vlc/repos/extra-x86_64/pkg/vlc/usr/bin'
make  install-exec-hook
make[4]: 디렉터리 '/home/study/abs/vlc/repos/extra-x86_64/src/vlc-3.0.16' 들어감
if test "x86_64-pc-linux-gnu" = "x86_64-pc-linux-gnu"; then \
	PATH="/home/study/abs/vlc/repos/extra-x86_64/pkg/vlc/usr/bin:$PATH" \
	LD_LIBRARY_PATH="/home/study/abs/vlc/repos/extra-x86_64/pkg/vlc/usr/lib:$LD_LIBRARY_PATH" \
	"/home/study/abs/vlc/repos/extra-x86_64/pkg/vlc/usr/lib/vlc/vlc-cache-gen" \
		 "/home/study/abs/vlc/repos/extra-x86_64/pkg/vlc/usr/lib/vlc/plugins" ; \
else \
	echo "Cross-compilation: cache generation skipped!" ; \
fi
make[4]: 디렉터리 '/home/study/abs/vlc/repos/extra-x86_64/src/vlc-3.0.16' 나감
make[3]: 'install-data-am'을(를) 위해 할 일이 없습니다.
make[3]: 디렉터리 '/home/study/abs/vlc/repos/extra-x86_64/src/vlc-3.0.16' 나감
make[2]: 디렉터리 '/home/study/abs/vlc/repos/extra-x86_64/src/vlc-3.0.16' 나감
make[1]: 디렉터리 '/home/study/abs/vlc/repos/extra-x86_64/src/vlc-3.0.16' 나감
==> 설치 정돈 중...

소스파일들을 가지고 패키지를 만드는 컴파일 작업이 진행됩니다.

일반적으로 make 또는 cmake를 통해 컴파일 작업이 진행되며 PKGBUID 파일 등 빌드 메뉴얼에 작성된 ./configure --option 항목 등 각종 설정값에 맞춰 컴파일됩니다.

 

==> 설치 정돈 중...
  -> 빈 디렉터리 삭제 중...
  -> libtool 파일 삭제 중...
  -> 원하지 않는 파일 제거 중...
  -> 정적 라이브러리 파일 삭제 중...
  -> 바이너리와 라이브러리에서 불필요한 심볼 제거 중...
  -> man과 info 페이지 압축하는 중...
==> 꾸러미 문제를 검사 중...
==> "vlc" 꾸러미 만드는 중...
  -> .PKGINFO 파일 만드는 중...
  -> .BUILDINFO 파일 만드는 중...
  -> .MTREE 파일 만드는 중...
  -> 꾸러미 압축 중...
==> fakeroot 환경을 빠져나갑니다.
==> 만들기 완료: vlc 3.0.16-3 (2021년 09월 10일 (금) 오전 10시 27분 11초)
==> vlc 꾸러미를 pacman -U로 설치 중...
[sudo] study 암호:

소스 컴파일 작업이 완료되면 불필요한 부산물들은 정리가 되고 패키지 파일과 해당 패키지 관련 정보가 담긴 파일들이 생성됩니다.

 

==> vlc 꾸러미를 pacman -U로 설치 중...
[sudo] study 암호: 
꾸러미 불러오는 중...
의존성 해결 중...
꾸러미 충돌을 찾는 중...

꾸러미 (1) vlc-3.0.16-3

총 설치 크기:  59.97 MiB

:: 설치를 진행하시겠습니까? [Y/n] 
(1/1) 키링의 키를 검사 중                          [######################] 100%
(1/1) 꾸러미 무결성 검사 중                        [######################] 100%
(1/1) 꾸러미 파일 불러오는 중                      [######################] 100%
(1/1) 파일 충돌 검사 중                            [######################] 100%
(1/1) 사용 가능한 디스크 공간 검사 중              [######################] 100%
:: 꾸러미 변경사항을 처리 중...
(1/1) 설치 중 vlc                                  [######################] 100%
vlc에 대한 선택 의존성
    avahi: service discovery using bonjour protocol [설치함]
    aom: AOM AV1 codec [설치함]
    gst-plugins-base-libs: for libgst plugins [설치함]
    dav1d: dav1d AV1 decoder [설치함]
    libdvdcss: decoding encrypted DVDs [설치함]
    libavc1394: devices using the 1394ta AV/C [설치함]
    libdc1394: IEEE 1394 access plugin [설치함]
    kwallet: kwallet keystore
    libva-vdpau-driver: vdpau backend nvidia
    libva-intel-driver: video backend intel
    libbluray: Blu-Ray video input [설치함]
    flac: Free Lossless Audio Codec plugin [설치함]
    twolame: TwoLAME mpeg2 encoder plugin [설치함]
    libgme: Game Music Emu plugin [설치함]
    vcdimager: navigate VCD with libvcdinfo [설치함]
    libmtp: MTP devices discovery [설치함]
    systemd-libs: udev services discovery [설치함]
    smbclient: SMB access plugin [설치함]
    libcdio: audio CD playback [설치함]
    gnu-free-fonts: subtitle font [설치함]
    ttf-dejavu: subtitle font
    libssh2: sftp access [설치함]
    libnfs: NFS access [설치함]
    mpg123: mpg123 codec [설치함]
    protobuf: chromecast streaming [설치함]
    libmicrodns: mDNS services discovery (chromecast etc) [설치함]
    lua52-socket: http interface
    libdvdread: DVD input module [설치함]
    libdvdnav: DVD with navigation input module [설치함]
    libogg: Ogg and OggSpots codec [설치함]
    libshout: shoutcast/icecast output plugin [설치함]
    libmodplug: MOD output plugin [설치함]
    libvpx: VP8 and VP9 codec [설치함]
    libvorbis: Vorbis decoder/encoder [설치함]
    speex: Speex codec [설치함]
    opus: opus codec [설치함]
    libtheora: theora codec [설치함]
    libpng: PNG support [설치함]
    libjpeg-turbo: JPEG support [설치함]
    librsvg: SVG plugin [설치함]
    x264: H264 encoding [설치함]
    x265: HEVC/H.265 encoder [설치함]
    zvbi: VBI/Teletext/webcam/v4l2 capture/decoding [설치함]
    libass: Subtitle support [설치함]
    libkate: Kate codec [설치함]
    libtiger: Tiger rendering for Kate streams [설치함]
    sdl_image: SDL image support [설치함]
    srt: SRT input/output plugin [설치함]
    aalib: ASCII art video output [설치함]
    libcaca: colored ASCII art video output [설치함]
    libpulse: PulseAudio audio output [설치함]
    alsa-lib: ALSA audio output [설치함]
    jack: jack audio server [설치함]
    libsamplerate: audio Resampler [설치함]
    libsoxr: SoX audio Resampler [설치함]
    chromaprint: Chromaprint audio fingerprinter [설치함]
    lirc: lirc control [설치함]
    libgoom2: Goom visualization [설치함]
    projectm: ProjectM visualisation [설치함]
    ncurses: ncurses interface [설치함]
    libnotify: notification plugin [설치함]
    gtk3: notification plugin [설치함]
    aribb24: aribsub support [설치함]
    aribb25: aribcam support [설치함]
    pcsclite: aribcam support [설치함]
:: 후처리 훅들을 실행 중...
(1/4) Arming ConditionNeedsUpdate...
(2/4) Updating icon theme caches...
(3/4) Updating the desktop file MIME type cache...
(4/4) Updating the vlc plugin cache...
[study@study-virtualbox extra-x86_64]$

makepkg 명령에 -i 옵션을 붙여 실행하면 패키지가 성공적으로 빌드되면 해당 패키지가 바로 이어서 시스템 설치 작업이 진행됩니다. 

 

패키지 실행

패키지가 성공적으로 설치되고 나서 해당 프로그램을 실행해보면 정상적으로 실행되는 것을 확인할 수 있습니다.