꽃삽질 : qtbase-abi-x-x-x 오류 돌아가기.

KDE Neon 을 사용하고, 기존 우분투 저장소나 PPA 를 사용하다보면, 이 오류를 가끔 만나게 된다.
2019년 1월 현재, 내가 발견한, 이 오류를 뿜어내는 꾸러미는 두가지다. 하나는 Nimf, 다른 하나는 bomi. 모두 공식 PPA 는 없다.

Nimf 는 qtbase-abi-x-x-x 를 필요로 하고, bomi 는 의존꾸러미로 걸어놓은 qt5-style-plugins 이 qtbase-abi-x-x-x 에 의존하고 있다.

우분투 Bionic 기반 KDE Neon 이 처음 나왔을 때는, fcitx-frontend-qt5 도 이 오류를 피해갈 수 없었다. 따라서 한국어 입력이 되지 않았었다. KDE Plasma 는 Qt5 기반으로 만들어져있고, fcitx-frontend-qt5 이 설치되지 않으면 Qt5 프로그램에는 한글을 넣을 수가 없다.

추후 KDE Neon 측은, fcitx-frontend-qt5 를 재 빌드하여 neon 저장소에 추가해놓았다.

바로 위 문장이 이 문제의 해결책을 암시해주고 있다.

qtbase-abi-x-x-x 는 실제 꾸러미가 아니고 가상 꾸러미(Virtual Package)다. 이건 컴파일/빌드 과정에서 생겨나는 모양인 듯하고, 어떤 환경이냐에 따라 프로그램 이름(판본명)이 바뀐다.

자세한 내용은 전문 지식이 없어서 모르겠고..

우분투 18.04 에서 빌드된 qt5-style-plugins 을 KDE Neon 에서 설치하려면 qtbase-abi-5-9-5 가 없다는 오류가 발생한다. 이것은, Qt5 버전 차이에서 비롯된다.

우분투 18.04 의 Qt (qt5-default)는 5.9.5 이고, KDE Neon 은 Qt 5.11.2 를 사용하고 있다. 이 때문에 의존성에 문제가 생긴다.

각설하고, 이 문제를 해결하려면, KDE Neon 은(또는 우분투와는 다른 판본의 Qt 를 쓰는 배포판 모두) 자신만의 qt5-style-plugins 를 가져야 한다. Nimf 도 마찬가지.

즉, KDE Neon 에서는 해당 꾸러미의 소스를 내려받아 재빌드한 후, 따로 설치를 해줘야만 문제가 발생하는 프로그램들을 제대로 사용할 수 있다.

방법은 (일단은) 이렇다.

apt source --compile 꾸러미이름(qt5-style-plugins)
# sudo 는 필요없다!

이 작업을 위해서는 build-essential 이 설치되어 있어야 한다. 작업 중, 의존성 문제(Unmet Dependency)가 발생하면, 해당 꾸러미들을 설치해주고 명령을 다시 내리면 된다. 추가로, devscripts 꾸러미도 필요하다.
마지막으로, /etc/apt/sources.list 에 deb-src 항목이 있어야 한다.

작업이 완료되면, Debian 꾸러미가 생성되는데(*.deb), 이 파일들을 apt install 이나 dpkg -i 로 설치해주면 끝.

이게 이 문제를 ‘제대로’ 해결하는 정공법이다.

헌데.. 여기에도 문제가 좀 있다.
apt source 명령을 사용해서 내려받는 소스는, 저장소에 있는 것인데, 이걸 그대로 컴파일/빌드하면, 저장소에 있는 것과 동일한 버전명이 부여된다.
이 때문에, apt update 시에, upgrade 가 가능한 판본이 있다는 문구가 나타나게 된다. 실제로 apt upgrade 를 해도 작업이 이뤄지진 않는데, 메시지만 이렇게 뜬다.

무시하면 되지만… 이게 또 신경이 쓰일 수도 있다.

이 문제를 해결하려면, apt source –compile 을 바로 하지말고, 소스를 받은 뒤 버전명을 살짝 고쳐준 뒤 빌드작업을 시행한다.

 $ apt source qt5-style-plugins
......
$ ls -al
합계 260
drwxrwxr-x 3 neonkr neonkr   4096  1월 14 17:43 ./
drwxr-xr-x 5 neonkr neonkr   4096  1월 14 17:13 ../
drwxrwxr-x 5 neonkr neonkr   4096  1월 14 17:43 qtstyleplugins-src-5.0.0+git23.g335dbec/
-rw-r--r-- 1 neonkr neonkr   3332  4월 17  2018 qtstyleplugins-src_5.0.0+git23.g335dbec-2build5.debian.tar.xz
-rw-r--r-- 1 neonkr neonkr   2527  4월 17  2018 qtstyleplugins-src_5.0.0+git23.g335dbec-2build5.dsc
-rw-r--r-- 1 neonkr neonkr 245268  6월 20  2017 qtstyleplugins-src_5.0.0+git23.g335dbec.orig.tar.xz

버전명은 debian/changelog 파일에서 고쳐줄 수 있다. qt5-style-plugins 를 예로 들어보면 다음과 같다.

qtstyleplugins-src (5.0.0+git23.g335dbec-2build5) bionic; urgency=medium

  * No-change rebuild against qtbase-abi-5-9-5.

 -- Simon Quigley <tsimonq2@ubuntu.com>  Sat, 14 Apr 2018 22:00:49 -0500
</tsimonq2@ubuntu.com>

판본의 역사(?)를 보면, 5.0.0+git23.g335dbec-2build1 부터 현재 5.0.0+git23.g335dbec-2build5 까지 이어오고 있다. 이걸 2build6 으로만 바꿔줘도 된다. 경험 상, 배포판이 바뀌기 전에는 이런 류의 꾸러미가 판올림이 되는 적을 못봤기에, 그냥 하나만 올려줘도 된다.

만약 새판이 나온다면 build6 이 아니라 앞 부분이 바뀔 테고, 그 때가 되면 다시 빌드를 해야하기 때문에, 버전명은 저정도로만 해줘도 된다.

아니면 그냥, 이런 식으로 과감하게(?) 해도 된다.
5.0.0+git23.g335dbec-100build1

어쨌든 changelog 를 고쳐주고, 해당 디렉토리 qtstyleplugins-src-5.0.0+git23.g335dbec/ 로 이동한 후, 다음 명령을 내리면 Deb 꾸러미가 만들어진다. devscripts 꾸러미가 설치되어 있어야 한다.

$ cd qtstyleplugins-src-5.0.0+git23.g335dbec/
$ debuild -uc -uc

빌드 작업이 끝나면, 바로 상위 디렉토리에 꾸러미 파일이 생성되고, 이것을 설치해주면 된다.
이러면, 위에서 언급한 버전문제로 인한 apt update 문구는 표시되지 않는다.


위의 방법은, 언급했다시피 ‘정공법’이다.
어차피 qt5-abi-x-x-x 는 가상꾸러미이므로, 실제로 하는 일은 없다.
따라서, 다음과 같은 우회법(workaround)이 더 손 쉬울 수도 있다.

몇 달 동안 이렇게 쓰고 있었는데, 별 다른 문제는 찾지 못했다.

가장 좋은 방법은, KDE Neon 한정 PPA 인데, 아직 이런 것은 없고, 앞으로도 아마 없지 않을까. KDE Neon 사용자가 얼마나 된다고..

One Comment

안녕하세요. 글 남겨주셔서 고맙습니다.