forum icon indicating copy to clipboard operation
forum copied to clipboard

[Help Wanted] Extracting AppImage using asar - missing python3 symlink destination?

Open dataprolet opened this issue 2 years ago • 0 comments

Describe the issue I'm maintaining the AUR-package and use asar to extract the app contained in the AppImage. This process now fails because the shipped python3 is symlinked to a non-existing path or file.

To Reproduce Steps to reproduce the behavior:

  1. Download the latest desktop release for Linux (x86): https://github.com/standardnotes/app/releases/download/%40standardnotes%2Fdesktop%403.183.7/standard-notes-3.183.7-linux-x86_64.AppImage
  2. Extract the AppImage using standard-notes-3.183.7-linux-x86_64.AppImage --appimage-extract
  3. Use asar to extract the app.asar: asar e squashfs-root/resources/app.asar squashfs-root/resources/app
  4. See the following error:
asar e squashfs-root/resources/app.asar squashfs-root/resources/app
node:fs:581
  return binding.open(
                 ^

Error: ENOENT: no such file or directory, open './squashfs-root/resources/app.asar.unpacked/node_modules/cbor-extract/build/node_gyp_bins/python3'
    at Object.openSync (node:fs:581:18)
    at Object.readFileSync (node:fs:457:35)
    at module.exports.readFileSync (/usr/lib/node_modules/@electron/asar/lib/disk.js:110:17)
    at module.exports.extractAll (/usr/lib/node_modules/@electron/asar/lib/asar.js:204:28)
    at Command.<anonymous> (/usr/lib/node_modules/@electron/asar/bin/asar.js:72:10)
    at Command.listener [as _actionHandler] (/usr/lib/node_modules/@electron/asar/node_modules/commander/index.js:413:31)
    at Command._parseCommand (/usr/lib/node_modules/@electron/asar/node_modules/commander/index.js:914:14)
    at Command._dispatchSubcommand (/usr/lib/node_modules/@electron/asar/node_modules/commander/index.js:865:18)
    at Command._parseCommand (/usr/lib/node_modules/@electron/asar/node_modules/commander/index.js:882:12)
    at Command.parse (/usr/lib/node_modules/@electron/asar/node_modules/commander/index.js:717:10) {
  errno: -2,
  code: 'ENOENT',
  syscall: 'open',
  path: './squashfs-root/resources/app.asar.unpacked/node_modules/cbor-extract/build/node_gyp_bins/python3'
}

Node.js v21.4.0

The file python3 is existing, but it's a symlink to an apparently non-existing directory.

$ pwd
/squashfs-root/resources/app.asar.unpacked/node_modules/cbor-extract/build/node_gyp_bins

$ ls -l
python3 -> ../../../../../../../../../../../../../../../opt/hostedtoolcache/Python/3.10.13/x64/bin/python3

Expected behavior It should be possible to extract the app.asar using asar and the symlinked python3 should point to an existing binary.

Desktop (please complete the following information):

  • OS: Arch Linux (Linux Desktop 6.6.4-zen1-1.1-zen)
  • Version 3.183.7

dataprolet avatar Dec 08 '23 13:12 dataprolet