Снимок Ubuntu, упаковывающий с QT: пропавшие без вести шрифтов

У меня есть двоичный файл и все разрешенные спокойные зависимости, упакованные в tar.gz. Я использую следующий yaml файл для снимка:

name: sample_name_lol_1
base: core18
version: '1.0.0'
summary: sample_summary_lol_2
description: |
  sample_desc_lol_3

grade: devel
confinement: devmode

parts:
  sample_name_lol_1:
    plugin: dump
    source: MyApp.tar.gz
    stage-packages: [
      ffmpeg,
      x264,
      x265,
      libopencv-core-dev,
      libopencv-imgproc-dev,
      libopencv-calib3d-dev,
      libblas-dev,
      liblapack-dev,
      libfontconfig1-dev,
      fonts-freefont-ttf,
      ttf-ubuntu-font-family
    ]

apps:
    MyApp:
        command: MyApp
        environment:
          LD_LIBRARY_PATH: $LD_LIBRARY_PATH:$SNAP/usr/lib/x86_64-linux-gnu/blas:$SNAP/usr/lib/x86_64-linux-gnu/lapack

Нормальное выполнение приложения (говорят от регулярной распаковки tar.gz) дало бы мне информацию обо всех шрифтах, доступных в системе. Однако привяжитесь выполненный (sample_name_lol_1. MyApp), не будет видеть системные шрифты, только немногих из них (только 3, чтобы быть точным - без, гротесковый шрифт, моноширинным). Я нашел путь после установки,/snap/sample_name_lol_1/x1/usr/share/fonts и/snap/sample_name_lol_1/x1/etc/fonts. Те места только для чтения, и я не могу выяснить, что точно должно быть сделано, таким образом, спокойное приложение будет способный видеть в стандарте арендного договора шрифт Ubuntu.

2
задан 18 January 2019 в 02:33

1 ответ

Я должен был работать с пользовательской папкой конфигурации, которую создает снимок.

  1. Создайте обертку и использование в качестве главного приложения. Wrapper назовет реальное приложение.
  2. Прежде, чем запустить приложение, обертка скопирует файл с $SNAP/etc/fonts/fonts.conf кому: $SNAP_USER_DATA/.config/fontconfig/fonts.conf.
  3. Также приложение изменит недавно скопированный файл с помощью "sed-i" команда, где каталоги были изменены на местоположение $SNAP. Пример: <dir>/usr/fonts... станет <dir>/snap/your_app/version/...

Это не походит на чистое решение, однако это - приемлемое решение для меня к настоящему времени.

name: sample_name
base: core18
version: '1.0.0'
summary: Sample Summary
description: |
  Sample Desc

grade: devel
confinement: devmode

parts:
  sample_name:
    plugin: dump
    source: sample_name.tar.gz
    stage-packages: [
      ffmpeg,
      x264,
      x265,
      libopencv-core-dev,
      libopencv-imgproc-dev,
      libopencv-calib3d-dev,
      libblas-dev,
      liblapack-dev,
      ttf-ubuntu-font-family
    ]
  fix-fontconfig:
    plugin: nil
    override-build: |
      mkdir $SNAPCRAFT_PART_INSTALL/bin
      echo "mkdir \$SNAP_USER_DATA/.config" >> $SNAPCRAFT_PART_INSTALL/bin/sample-wrapper.sh
      echo "mkdir \$SNAP_USER_DATA/.config/fontconfig" >> $SNAPCRAFT_PART_INSTALL/bin/sample-wrapper.sh
      echo "cp \$SNAP/etc/fonts/fonts.conf \$SNAP_USER_DATA/.config/fontconfig/fonts.conf" >> $SNAPCRAFT_PART_INSTALL/bin/sample-wrapper.sh
      echo "sed -i \"s#<dir>/usr#<dir>\$SNAP/usr#g\" \$SNAP_USER_DATA/.config/fontconfig/fonts.conf" >> $SNAPCRAFT_PART_INSTALL/bin/sample-wrapper.sh
      echo "\$SNAP/sample_name" >> $SNAPCRAFT_PART_INSTALL/bin/sample-wrapper.sh
    after: [sample_name]

apps:
    sample_name:
        command: sh $SNAP/bin/sample-wrapper.sh
        environment:
          LD_LIBRARY_PATH: $LD_LIBRARY_PATH:$SNAP/usr/lib/x86_64-linux-gnu/blas:$SNAP/usr/lib/x86_64-linux-gnu/lapack
0
ответ дан 2 December 2019 в 06:37

Другие вопросы по тегам:

Похожие вопросы: