baize-toolbox icon indicating copy to clipboard operation
baize-toolbox copied to clipboard

[Bugs]ArchLinux下打包后无法正常运行

Open zxp19821005 opened this issue 1 year ago • 8 comments

如题。 按照说明文档,在ArchLinux下进行了打包,环境信息如下:

  • OS: EndeavourOS
  • Kernel: 6.6.28-1-lts
  • DE: plasma-desktop 6.0.4
  • DWM: x11
  • pnpm: 8.15.2
  • nodejs: 18.20.2 我修改了electron-builder.yml,将Linux下的输出文件改为了- dir,这个在electron-build官方说明文档中是支持的;差看了下阿里网盘链接:https://www.alipan.com/s/WRjhfS4T2p7,发现Linux目录下为空,而其他目录下都是ffmpeg,于是我就没有进行下载,我本机已经安装了ffmpeg;打包完成后,在dist目录顺利生成了相关文件,运行后如图: image 目前是2个问题,一是无论我在resources/app.asar.unpacked/中创建到/usr/bin/ffmpeg的链接,还是直接将/usr/bin/ffmpeg文件复制到resources/app.asar.unpacked/,运行后都一直显示在启动中;二是程序显示图标为未知图标。

zxp19821005 avatar Apr 22 '24 08:04 zxp19821005

另外补充一点,能否声明一下License类型?我计划将其移植到ArchLinux的AUR,需要添加这个字段,但是我在README.mdpackage.json中都找不到License。

zxp19821005 avatar Apr 22 '24 08:04 zxp19821005

阿里云盘中的linux版本ffmpeg文件无法被分享,可以选择其他网盘,或者官网进行下载。 image

关于无法进入主界面的问题可能是ffmpeg没有权限或者没有找到(路径应该是resources/app.asar.unpacked/resources/linux/ffmpeg),在mac有遇到过没有权限的问题(通过chmod 赋予权限)。 但是目前手中没有linux相关的设备,暂时无法提供太多的帮助,十分抱歉。 image

sulgweb avatar Apr 22 '24 17:04 sulgweb

License已添加 image

sulgweb avatar Apr 22 '24 17:04 sulgweb

感谢回复! 按照你的指点,目前已经编译成功并且成功运行,但是还是存在几个问题:

  1. 运行时终端有报错,但不影响使用:
$ /usr/bin/baize-toolbox --no-sandbox %U
ffmpeg 版本信息:
ffmpeg version n6.1.1 Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 13.2.1 (GCC) 20230801
configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-amf --enable-avisynth --enable-cuda-llvm --enable-lto --enable-fontconfig --enable-frei0r --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libdav1d --enable-libdrm --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libharfbuzz --enable-libiec61883 --enable-libjack --enable-libjxl --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libplacebo --enable-libpulse --enable-librav1e --enable-librsvg --enable-librubberband --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpl --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-libzimg --enable-nvdec --enable-nvenc --enable-opencl --enable-opengl --enable-shared --enable-vapoursynth --enable-version3 --enable-vulkan
libavutil      58. 29.100 / 58. 29.100
libavcodec     60. 31.102 / 60. 31.102
libavformat    60. 16.100 / 60. 16.100
libavdevice    60.  3.100 / 60.  3.100
libavfilter     9. 12.100 /  9. 12.100
libswscale      7.  5.100 /  7.  5.100
libswresample   4. 12.100 /  4. 12.100
libpostproc    57.  3.100 / 57.  3.100

(node:126336) electron: Failed to load URL: file:///opt/baize-toolbox/resources/app.asar/out/renderer/siteAssistTransprent/index.html%23/screen-shot-win with error: ERR_FILE_NOT_FOUND
(Use `baize-toolbox --trace-warnings ...` to show where the warning was created)
  1. 按照ArchLinux相关打包准则,尽量使用系统侧的Electron,但是我使用系统侧的electron29运行时报错:
$ env ELECTRON_OZONE_PLATFORM_HINT=auto PATH="./:${PATH}" ELECTRON_FORCE_IS_PACKAGED=true ELECTRON_IS_DEV=0 NODE_ENV=production electron29 app.asar 
(node:127632) electron: Failed to load URL: file:///opt/baize-toolbox/resources/app.asar/out/renderer/siteAssistTransprent/index.html%23/screen-shot-win with error: ERR_FILE_NOT_FOUND
(Use `electron --trace-warnings ...` to show where the warning was created)

而且和昨天一样,一直显示启动中,我估计是还是一样的问题,找不到ffmpeg 3. 能否在任务里添加“暂停任务”、“停止任务”之类的按钮呢?我试着提取一个视频中的音频,终端中输出如下:

[126336:0423/093519.553963:ERROR:atom_cache.cc(229)] Add chromium/from-privileged to kAtomsToCache
FFMPEG_COMMAND {
  command: [ '-i', '/run/media/zxp/Other/Movie/2018疯狂外星人720P.mp4' ],
  taskId: 'tIfuylH8tjfFmgCI',
  inputFilePath: '/run/media/zxp/Other/Movie/2018疯狂外星人720P.mp4',
  outputFloaderPath: '/home/zxp-endeavouros/Documents\\output/extract',
  outputFileName: '2018疯狂外星人720P-1713836125126.mp3',
  outputType: 'mp3',
  createTime: 1713836125135,
  progress: 0,
  code: 'extract'
}

当我要终止任务时,却找不到按钮,关闭程序后,ffmpeg依然在后台执行任务。 BTW,我已经将其移植到了ArchLinux的AUR:https://aur.archlinux.org/packages/baize-toolbox-git 其中,PKGBUILD为ArchLinux的编译打包脚本,baize-toolbox.sh为我写的通用的Electron运行脚本。 My_AUR_Files为我移植的AUR软件包仓库,所有的Electron软件包都是使用相同的运行脚本进行调用。

zxp19821005 avatar Apr 23 '24 01:04 zxp19821005

1.报错问题已修复,一个未来的功能模块被合并进主分支,目前暂时简单屏蔽一下。https://github.com/baizeteam/baize-toolbox/commit/bd64c169036af6adbcba6ddd105c634e1ee8fc64 2.在后续适配linux的版本中进行排查。 3.有暂停和停止任务的计划,会在后续版本迭代中会加入。

sulgweb avatar Apr 23 '24 14:04 sulgweb

目前在终端运行已经不报错了。但是第二个问题确实还是存在。我进入编译好的resources目录中,运行以下命令:

$ env ELECTRON_OZONE_PLATFORM_HINT=auto PATH="./:${PATH}" ELECTRON_FORCE_IS_PACKAGED=true ELECTRON_IS_DEV=0 NODE_ENV=production electron29 app.asar

没有任何包错信息,仍然显示启动中。我在想一个问题,能否将ffmpeg改为外置呢?即在程序设置界面中添加ffmpeg路径选择?至少在Linux中,ffmpeg基本上是核心组件包,不管在哪个系统,不论是在deb还是rpm还是我现在用的ArchLinux系的zst安装包,都可以指定必备依赖,这样就可以直接调用系统的ffmpeg;或者将@ffmpeg/ffmpeg添加到package.json中呢?我移植过的某个包里面似乎是这样做的,忘记是哪个了,确实是可以用的。主要是我不会编程,这个也是随便提的建议,您觉得有用的话可以采纳,没用的话就直接忽略。

zxp19821005 avatar Apr 24 '24 06:04 zxp19821005

ffmpeg在win和mac并不是核心包,所以将其打入到软件中会更加符合用户的使用。@ffmpeg/ffmpeg是wasm版本,阉割了部分功能,并且性能对比原生有一定的差距。所以可能不会接入@ffmpeg/ffmpeg,不过正在考虑将ffmpeg调整到装包流程,这样子对开发者可能会更加友好一些?

sulgweb avatar Apr 29 '24 04:04 sulgweb

ffmpeg在win和mac并不是核心包,所以将其打入到软件中会更加符合用户的使用。@ffmpeg/ffmpeg是wasm版本,阉割了部分功能,并且性能对比原生有一定的差距。所以可能不会接入@ffmpeg/ffmpeg,不过正在考虑将ffmpeg调整到装包流程,这样子对开发者可能会更加友好一些?

已将ffmpeg调整为装包流程添加,无需手动下载ffmpeg,具体commit如下: e5c6663

sulgweb avatar Jun 27 '24 01:06 sulgweb