본문 바로가기
리눅스

MuseScore Debian packaging from AppImage

by 다움위키 2025. 2. 24.

원문 보기: 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로 묶어야 합니다.

먼저 위의 링크가 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 파일에 환경 변수를 넣어서 실행해서 입력기를 지정할 수 있습니다.

이런 과정이 귀찮으면, 그냥 소스로부터 컴파일을 시도할 수 있지만, 소스를 제공하지 않거나, 컴파일에 엄청난 시간이 걸릴 때, 이런 바이너리로 직접 접근하는 방식이 비교적 난이도가 낮습니다.