Appimage/ru: Difference between revisions

Unabomberlive (talk | contribs)
Created page with "extraInstallCommands = '' mv $out/bin/${name} $out/bin/${pname} install -m 444 -D ${appimageContents}/${pname}.desktop -t $out/share/applications substituteInPlace $out/share/applications/${pname}.desktop \ --replace-fail 'Exec=AppRun' 'Exec=${pname}' cp -r ${appimageContents}/usr/share/icons $out/share '';"
Tags: Mobile edit Mobile web edit
FuzzyBot (talk | contribs)
Updating to match new version of source page
 
(6 intermediate revisions by 3 users not shown)
Line 1: Line 1:
<languages/>
<languages/>
<div lang="en" dir="ltr" class="mw-content-ltr">
[https://appimage.org/ AppImage] - тип монолитных пакетов для приложений Linux. Содержит все зависимости приложения в одном файле, состоящем из исполняемого файла и встроенной файловой системы.
[https://appimage.org/ AppImage] is a monolithic packaging format for linux applications. It contains all dependencies in one file that is composed of an executable with a tacked on filesystem.
</div>


<span id="Usage"></span>
<span id="Usage"></span>
Line 17: Line 15:
</syntaxhighlight>
</syntaxhighlight>
<span id="Packaging"></span>
<span id="Packaging"></span>
=== Упаковывание AppImage ===
=== Создание AppImage ===


<div class="mw-translate-fuzzy">
См. руководство [https://nixos.org/manual/nixpkgs/stable/#sec-pkgs-appimageTools Nixpkgs manual on wrapping AppImage packages]. Если кратко, AppImage извлекается, а все зависимости добавляются в качестве зависимостей сборки nix. Следующий пример представляет собой производную для программы Quba, которая также распространяется в виде AppImage.
См. руководство [https://nixos.org/manual/nixpkgs/stable/#sec-pkgs-appimageTools Nixpkgs manual on wrapping AppImage packages]. Если кратко, AppImage извлекается, а все зависимости добавляются в качестве зависимостей сборки nix. Следующий пример представляет собой производную для программы Quba, которая также распространяется в виде AppImage.
</div>
<syntaxhighlight lang="nix">
{
  lib,
  appimageTools,
  fetchurl,
}:


let
let
   version = "1.4.0";
   version = "1.4.0";
   pname = "quba";
   pname = "quba";
  name = "${pname}-${version}";


   <div lang="en" dir="ltr" class="mw-content-ltr">
   src = fetchurl {
src = fetchurl {
     url = "https://github.com/ZUGFeRD/quba-viewer/releases/download/v${version}/Quba-${version}.AppImage";
     url = "https://github.com/ZUGFeRD/quba-viewer/releases/download/v${version}/Quba-${version}.AppImage";
     hash = "sha256-EsTF7W1np5qbQQh3pdqsFe32olvGK3AowGWjqHPEfoM=";
     hash = "sha256-EsTF7W1np5qbQQh3pdqsFe32olvGK3AowGWjqHPEfoM=";
   };
   };
</div>


   appimageContents = appimageTools.extractType1 { inherit name src; };
   appimageContents = appimageTools.extractType1 { inherit name src; };
in
in
appimageTools.wrapType1 {
appimageTools.wrapType2 rec {
   inherit name src;
   inherit pname version src;


   extraInstallCommands = ''
   extraInstallCommands = ''
    mv $out/bin/${name} $out/bin/${pname}
    install -m 444 -D ${appimageContents}/${pname}.desktop -t $out/share/applications
     substituteInPlace $out/share/applications/${pname}.desktop \
     substituteInPlace $out/share/applications/${pname}.desktop \
       --replace-fail 'Exec=AppRun' 'Exec=${pname}'
       --replace-fail 'Exec=AppRun' 'Exec=${meta.mainProgram}'
    cp -r ${appimageContents}/usr/share/icons $out/share
   '';
   '';


   <div lang="en" dir="ltr" class="mw-content-ltr">
   meta = {
meta = {
     description = "Viewer for electronic invoices";
     description = "Viewer for electronic invoices";
     homepage = "https://github.com/ZUGFeRD/quba-viewer";
     homepage = "https://github.com/ZUGFeRD/quba-viewer";
Line 58: Line 58:
}
}
</syntaxhighlight>
</syntaxhighlight>
</div>
 


<span id="Configuration"></span>
<span id="Configuration"></span>
Line 66: Line 66:
== Зарегистрируйте файлы AppImage как исполняемый тип в binfmt_misc ==
== Зарегистрируйте файлы AppImage как исполняемый тип в binfmt_misc ==


<div class="mw-translate-fuzzy">
Вы можете указать ядру Linux использовать интерпретатор (например, <code>appimage-run</code>) при выполнении определенных двоичных файлов через использование [https://en.wikipedia.org/wiki/Binfmt_misc#External_links binfmt_misc], либо по расширению имени файла, либо по совпадению магических чисел.
Вы можете указать ядру Linux использовать интерпретатор (например, <code>appimage-run</code>) при выполнении определенных двоичных файлов через использование [https://en.wikipedia.org/wiki/Binfmt_misc#External_links binfmt_misc], либо по расширению имени файла, либо по совпадению магических чисел.
Приведенная ниже конфигурация NixOS регистрирует файлы AppImage (ELF-файлы с магическим числом "AI" + 0x02) для запуска с помощью <code>appimage-run</code> в качестве интерпретатора.
Приведенная ниже конфигурация NixOS регистрирует файлы AppImage (ELF-файлы с магическим числом "AI" + 0x02) для запуска с помощью <code>appimage-run</code> в качестве интерпретатора.
 
</div>
С [https://nixos.org/manual/nixos/stable/release-notes#sec-release-24.05-new-services NixOS 24.05], имеется опция binfmt:
 
<syntaxhighlight lang="nixos">
<syntaxhighlight lang="nixos">
programs.appimage = {
programs.appimage = {
Line 80: Line 79:
Таким образом файлы AppImage могут вызываться напрямую, как если бы они были обычными программами
Таким образом файлы AppImage могут вызываться напрямую, как если бы они были обычными программами


[[Category:Software{{#translation:}}]]
[[Category:Software]]