Ubuntu: Dummy Package(가짜 꾸러미) 만들기.

예전에도 이런 사기(?)를 칠 필요가 있었다. 왜 그랬었는지는 기억이 안나지만, 필요성이 있었다는 것만큼은 머리 속에 각인되어 있다.

이 글을 작성하는 이유는, 다음 글들에서 나온 문제점 때문이다.

** 글을 쓰고 나서 알게 된 사실인데, KDE Neon(Bionic 기반) 의 fcitx 에서도 동일한 문제가 발생한다.

Xenial 기반 KDE Neon에선, Nimf 를 설치할 수 없다. 컴파일도 안되고, (당연히 데비안 꾸러미도 불가), 우분투(Xenial, Bionic)에서 생성된 꾸러미를 설치할 수도 없다.

이건, Qt 와 문제가 있는데, 그 중에서도 qtbase-abi-x-x-x 라는 Dummy Package 때문에 설치 불가 사태가 발생한다.

구글의 힘을 좀 빌려보니, 이 문제가 종종 발생하는 듯 하다.

3개만 뽑아봤지만, 이 문제로 고민한 흔적들은 훨씬 더 많아보인다.
특히나, 우분투가 아닌, 우분투를 기반으로 만들어진 우분투의 자식들(?), 예를 들어 Mint 라든가 KDE Neon 등에서 발생하는 문제로 보인다.
위 연결된 목록 중, 두번째 글에서 뭔가 실마리가 보이는 듯도 한데, 이 꾸러미가 더 이상 제공되지 않는, 이른바 Virtual Package 이기에, 경우에 따라서 이런 의존성 문제가 발생하는 것 같다.

실례로, 쿠분투 18.04 에서 Nimf 를 설치하면 아무런 이상이 없다. 그렇다고 qtbase-abi-x-x-x 꾸러미가 설치되느냐 하면, 그렇지도 않다. 이 꾸러미가 설치되어 있지는 않지만, Nimf 가 의존성 문제를 일으키진 않는다.
그런데 KDE Neon에선 이 꾸러미가 문제를 일으킨다.

왜 그런지는, 내 영역 밖이다.


자.. 그렇다면 해결책은?
qtbase-abi-x-x-x 꾸러미가 어차피 뭔가 역할이 있는 게 아니므로, 이걸 요구한다면, 그냥 이름뿐인 ‘가짜 꾸러미’를 설치해주면 되지 않을까?
‘의존성 검사’라는게 그저 ‘그 이름을 가진 꾸러미가 설치되어 있는지‘만을 확인하는 작업이기 때문에, 그냥 그 이름을 가진 꾸러미가 있으면, 별 문제가 없을 듯 하다.

이게, 프로그래밍, Qt 에 문외한인 내가 내려본 결론이다.

그리하여, 가짜 꾸러미를 만들어 이 난국(?)을 타개하려 한다.
물론, KDE Neon(Bionic 기반)에선, 2018년 10월 1일 현재, Nimf 를 아무 문제없이 컴파일할 수 있다. 그러나, 이 문제는 앞으로도 또 발생할 가능성이 있기에, 아래 방법을 기록해놓기로 한다.

다음 글에서 많은 도움(120%)을 얻었다.

이를 위해선 equivs 가 필요하다.

sudo apt install equivs

그리고, 원하는 꾸러미 이름을 주고 아래와 같은 명령을 내린다.

equivs-control qtbase-abi

그러고 나면, qtbase-abi 라는 텍스트 파일이 생긴다.
이 파일을 편집기로 열고, 다음 항목만 주석을 지우고 편집을 한다.
2020년 8월 현재, KDE Neon(Ubuntu 20.04 기반)에서 Nimf 와 Bomi 를 문제없이 실행하려면 qtbase-abi-5-12-8 이 필요하므로, 이 번호를 넣어준다. (때에 따라 달라진다.)

Package: qtbase-abi-5-12-8

나머지는 고쳐줘도 그만, 안고쳐줘도 그만.
이제 이 파일을 기반으로 Deb Package 를 만든다.

equivs-build qtbase-abi

이러면 qtbase-abi-5-12-8_1.0_all.deb 라는 파일이 생긴다. 설치해주면 끝.

sudo dpkg -i qtbase-abi-5-12-8_1.0_all.deb

Nimf(Bomi 도 마찬가지) 설치에는 이제 아무런 방해가 없어졌다.

그럼.. 저 꾸러미에는 뭐가 들어있나?
Deb 꾸러미는 사실 압축파일이다. equivs-build 로 생성된 Deb 꾸러미엔 아무 것도 없진 않지만, 아무 의미도 없는 파일들만 들어있다.
/usr/share/doc/qtbase-abi-5-12-8 에 파일 3개가 설치된다.

$ ll /usr/share/doc/qtbase-abi-5-12-8 
합계 12K
-rw-r--r-- 1 root root 755 2020-08-11 17:12 README.Debian
-rw-r--r-- 1 root root 148 2020-08-11 17:12 changelog.gz
-rw-r--r-- 1 root root 936 2020-08-11 17:12 copyright

이 방법을 쓰면 어떤 식으로든 문제가 발생할 여지가 있을까?
별로 그렇지는 않을 듯 하다.

단지 Nimf 문제를 해결하기 위함이 아니라, 기타 등등 여러 프로그램에서 발생 가능한 의존성 문제를 해결하기 위해선 이 방법이 꽤나 유용하다.
물론, 그럴 일없는 컴퓨터 나날이라면 더더욱 좋겠지만.. (지금 껏 내 삶은 그렇지 못했고, 아마도 앞으로도 그렇지 못하겠지.)

One Comment

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