원문 보기: https://dawoum.duckdns.org/wiki/MuseScore/Debian_packaging_from_AppImage
어떤 프로그램은 개발자에 의해 제공되는 AppImage로만 제공될 때, 이를 데비안 패키지로 만드는 과정의 예제입니다.
먼저, AppImage를 받습니다:
현재 제공되는 이미지는 v4.4.4가 최신 버전임을 알 수 있습니다.
그런-다음 이것으로부터 필요한 파일을 얻는 과정은 아치 리눅스 패키징에서 정보를 얻을 수 있습니다:
이 과정에 필요한 파일을 먼저 설치합니다:
- sudo nala install libfuse2t64
이제 다운로드한 파일을 적당한 디렉토리로 옮기고, 해당 디렉토리에서 설치 스크립트, musescore-bin.install를 만듭니다:
#!/bin/bash
_pkgname=musescore
pkgname=musescore-bin
pkgver=4.4.4
pkgrel=1
_appimage="MuseScore-Studio-${pkgver}.243461245-x86_64.AppImage"
#_appimage1="MuseScore_Studio_4.4_Portable-x86_64.AppImage"
appname="mscore"
srcdir="."
pkgdir=musescore-bin_4.4.4-1_amd64
prepare() {
chmod +x "${_appimage}"
./"${_appimage}" --appimage-extract
}
build() {
# Adjust .desktop so it will work outside of AppImage container
sed -i -E "s|Exec=.*|Exec=env DESKTOPINTEGRATION=false /usr/bin/${appname} %U|"\
"squashfs-root/org.musescore.MuseScore4portable.desktop"
# Remove "Portable" from the application name
sed -i -E "s|Name=MuseScore Studio.*|Name=MuseScore Studio ${pkgver}|"\
"squashfs-root/org.musescore.MuseScore4portable.desktop"
# We need to match the WMClass of the AppImage which is different from the provided desktop file
sed -i -E "s|StartupWMClass=.*|StartupWMClass=MuseScore4|"\
"squashfs-root/org.musescore.MuseScore4portable.desktop"
# Fix permissions; .AppImage permissions are 700 for all directories
chmod -R a-x+rX squashfs-root/usr
}
package() {
# AppImage
install -Dm755 "${srcdir}/${_appimage}" "${pkgdir}/opt/${pkgname}/${pkgname}.AppImage"
# Desktop file
install -Dm644 "${srcdir}/squashfs-root/org.musescore.MuseScore4portable.desktop"\
"${pkgdir}/usr/share/applications/${appname}.desktop"
# Icon images
install -dm755 "${pkgdir}/usr/share/"
cp -a "${srcdir}/squashfs-root/usr/share/icons" "${pkgdir}/usr/share/"
# Symlink executable
install -dm755 "${pkgdir}/usr/bin"
ln -s "/opt/${pkgname}/${pkgname}.AppImage" "${pkgdir}/usr/bin/${appname}"
}
prepare
build
package
mkdir -p "$pkgdir"/DEBIAN
실행합니다:
- bash musescore-bin.install
이제 control 파일을 만들고, 묶고, 설치할 것입니다:
- gvim musescore-bin_4.4.4-1_amd64/DEBIAN/control
- dpkg-deb --build --root-owner-group musescore-bin_4.4.4-1_amd64
- sudo dpkg -i musescore-bin_4.4.4-1_amd64.deb
한글 입력
남은 문제는 한글 입력에 있습니다.
우선, AppImage 자체는 ibus에서 한글 입력이 될 가능성이 높으므로, ibus-hangul을 사용하도록 설정되어 있다면, 즉시 한글 입력이 될 수도 있습니다.
다른 입력기, 예를 들어, kime을 사용하고 있다면, v4.4.4의 AppImage를 풀어서, 입력기 모듈을 삽입하고, 다시 AppImage로 묶어야 합니다.
- https://github.com/Riey/kime/releases/download/v3.1.1/libkime-qt-6.0.2.so
- https://github.com/AppImage/appimagetool/releases/tag/continuous
먼저 위의 링크가 kime 입력기 모듈입니다. 어떤 이유에서인지 시스템에 있는 입력기 모듈을 삽입했을 때, 입력이 되지 않을 수 있습니다.
아래는 AppImage를 묶는 도구이고, 매주 바뀌므로, 해당 파일 중에서 appimagetool-x86_64.AppImage 파일을 받습니다.
권한 설정을 바꿉니다:
- chmod 664 libkime-qt-6.0.2.so
- chmod +x appimagetool-x86_64.AppImage
이미지를 풀고 입력기 모듈을 복사합니다:
- ./MuseScore-Studio-4.4.4.243461245-x86_64.AppImage --appimage-extract
- cp libkime-qt-6.0.2.so squashfs-root/plugins/platforminputcontexts
이전 패키지를 만드는 과정을 진행했으면, 이미지를 푸는 첫 번째 과정은 이미 실행되어 있습니다.
이제 이미지를 묶어야 하는데, 2가지 정도 오류가 발생합니다. 시스템에 따라 덜 발생하거나 더 발생할 수 있고, 메시지를 보고 수정하십시오:
- gvim squashfs-root/share/metainfo/org.musescore.MuseScore4portable.appdata.xml
<!-- <icon type="stock">mscore4portable</icon> -->
<!-- <categories> in .desktop file -->
<categories>
<category>AudioVideo</category>
<category>Audio</category>
<category>Graphics</category>
</categories>
위의 것은 16줄에 있고, 아래는 47줄 아래에 삽입하십시오.
이제 이미지로 묶습니다:
- ./appimagetool-x86_64.AppImage squashfs-root
마지막으로 묶은 이미지를 현재 설치된 이미지와 바꾸십시오:
- sudo cp MuseScore_Studio_4.4_Portable-x86_64.AppImage /opt/musescore-bin/musescore-bin.AppImage
실행해서 확인하십시오:
- mscore
그놈 데스크탑
그놈 데스크탑은 입력기를 2개 동시에 사용할 수 있습니다.
즉, .zprofile 또는 .xprofile에 환경 변수로 하나의 입력기, 예를 들어, kime을 설정해 두고, 그놈 데스크탑의 Settings에서 ibus-hangul을 별도로 메모리에 적재할 수 있습니다. (다른 데스크탑에서는 이런 식으로는 동작하지 않습니다.)
이제, 필요에 따라 입력기를 바꾸어서 실행할 수 있습니다:
- QT_IM_MODULE=ibus /usr/bin/mscore
또는 .desktop 파일에 환경 변수를 넣어서 실행해서 입력기를 지정할 수 있습니다.
이런 과정이 귀찮으면, 그냥 소스로부터 컴파일을 시도할 수 있지만, 소스를 제공하지 않거나, 컴파일에 엄청난 시간이 걸릴 때, 이런 바이너리로 직접 접근하는 방식이 비교적 난이도가 낮습니다.