运行 AppImage软件:Running AppImages (***)

2023-11-17

How to run an AppImage

Running AppImages

使用 AppImage (appImagetool) 进行 Linux 软件包管理 (带笔记*****)

-------------------------------------------------------------

要点:

1. 需要运行权限。

通常 linux软件的运行,都需要运行权限。

Before you can run an AppImage, you need to make it executable. This is a Linux security feature. There are three main ways to make an AppImage executable:

2. 挂载

2.1. 并非一定要。

可以自动挂载。

2.2. 部分场景,单一AppImage文件运行时,有些应用一定要。否则,需要解压 –appimage-extract。

比如,.AppImage软件需要访问 用户自定义的目录(非 OS规定的目录),及其文件时,

在没有其他方式对路径记录进行引导时,必须要挂载。否则,难以获取这类自定义的目录、或文件。

For type 1 AppImages:

> mkdir mountpoint
> sudo mount my.AppImage mountpoint/
# you can now inspect the contents
> sudo umount mountpoint/

For type 2 AppImages:

> mkdir mountpoint
> my.AppImage --appimage-offset
> 123456
> sudo mount my.AppImage mountpoint/ -o offset=123456
# you can now inspect the contents
> sudo umount mountpoint/

Note that the number 123456 is just an example here, you will likely see another number.

To inspect the contents of any AppImage, it is possible to either mount them without running them, or extract the contents to a directory in the current working directory..

–appimage-extract command line option of the AppImage, and then re-packing it as an AppImage by using appimagetool -u.

3. Making AppImages updateable

  https://docs.appimage.org/packaging-guide/optional/updates.html?highlight=extract

更新:单一文件形式的AppImage,解压,替换掉过时的、或者新增缺失版本的文件,再打包。

====================================

How to run an AppImage

  How to run an AppImage - Using AppImages - AppImage

probono
Oct '16

Before you can run an AppImage, you need to make it executable. This is a Linux security feature. There are three main ways to make an AppImage executable:

2. On the command line

chmod a+x Some.AppImage

Jan '18

Chinese:
https://jingyan.baidu.com/article/d5a880ebdfc12d13f047cc62.html 75

  1. 如图一进入下载目录,找到AppImage文件右键它选择属性。

  2. 在菜单里面则点击权限,所有者选择可读写,在数字3这里选择可执行,然后点击确定。

  3. 接着双击这个AppImage文件即可运行软件。当然一切正常则会运行,不正常有可能是发行版或者本身AppImage文件构建的问题。

 Running AppImages

  https://docs.appimage.org/user-guide/run-appimages.html

  https://docs.appimage.org/packaging-guide/optional/updates.html?highlight=extract

Mount or extract AppImages

To inspect the contents of any AppImage, it is possible to either mount them without running them, or extract the contents to a directory in the current working directory..

Mount an AppImage

AppImages can be mounted in the system to provide read-only access for users to allow for inspecting the contents.

To mount an AppImage temporarily, you have two options. The easiest way to do so is to call AppImages with the special parameter --appimage-mount, for example:

> my.AppImage --appimage-mount
/tmp/mount_myXXXX
# now, use another terminal or file manager to inspect the contents in the directory printed by --appimage-mount

The AppImage is unmounted when the application called in the example is interrupted (e.g., by pressing Ctrl+C, closing the terminal etc.).

Note

This is only available for type 2 AppImages. Type 1 AppImages do not provide any self-mounting mechanism. To mount type 1 AppImages, use mount -o loop.

This method is to be preferable, as other methods have some major disadvantages explained below.

Another way to mount AppImages is to use the normal mount command toolchain of your Linux distribution. Mounting and unmounting devices, files, images and also AppImages requires root permissions. Also, you need to provide a mountpoint. Please see the following example:

For type 1 AppImages:

> mkdir mountpoint
> sudo mount my.AppImage mountpoint/
# you can now inspect the contents
> sudo umount mountpoint/

For type 2 AppImages:

> mkdir mountpoint
> my.AppImage --appimage-offset
> 123456
> sudo mount my.AppImage mountpoint/ -o offset=123456
# you can now inspect the contents
> sudo umount mountpoint/

Note that the number 123456 is just an example here, you will likely see another number.

Warning

AppImages mounted using this method are not unmounted automatically. Please do not forget to call umount the AppImage as soon as you don’t need it mounted any more.

If an AppImage is not unmounted properly, and is moved to a new location, a so-called “dangling mount” can be created. This should be avoided by properly unmounting the AppImages.

Note

Type 2 AppImages which are mounted using the --appimage-mount parameter are not affected by this problem!

See also

There is currently no way to use the former method without calling the target AppImage. This might not always be appropriate, e.g., if the AppImage is not trustworthy.

The AppImage team is working on implementing a mount option in appimagetool. Please see the related GitHub issue for progress on this.

Extract the contents of an AppImage

An alternative to mounting the AppImages is to extract their contents. This allows for modifying the contents. The resulting directory is a valid AppDir, and users can create AppImages from them again using appimagetool.

Analog to mounting AppImages, there is a simple commandline switch to extract the contents of type 2 AppImages without external tools. Just call the AppImage with the parameter --appimage-extract. This will cause the runtime to create a new directory called squashfs-root, containing the contents of the AppImage’s AppDir.

Type 1 AppImages require the deprecated tool AppImageExtract to extract the contents of an AppImage. It’s very limited functionality wise, and requires a GUI to run. It creates a new directory in the user’s desktop directory.

See also

There is currently no way to use the former method without calling the target AppImage. This might not always be appropriate, e.g., if the AppImage is not trustworthy.

The AppImage team is working on implementing a mount option in appimagetool. Please see the related GitHub issue for progress on this.

Integrating AppImages into the desktop

AppImages are standalone bundles, and do not need to be installed. However, some users may want their AppImages to be available like distribution provided applications. This primarily involves being able to launch desktop applications from their desktop environments’ launchers. This concept is called desktop integration.

appimaged

appimaged is a daemon that monitors the system and integrates AppImages. It monitors a predefined set of directories on the user’s system searching for AppImages, and integrates them into the system using libappimage.

See also

More information on appimaged can be found in appimaged.

AppImageLauncher

AppImageLauncher is a helper application for Linux distributions serving as a kind of “entry point” for running and integrating AppImages. It makes a user’s system AppImage-ready™.

AppImageLauncher must be installed into the system to be able to integrate into the system properly. It uses technologies that are independent from any desktop environment features, and therefore should be able to run on most distributions.

After install AppImageLauncher, you can simply double-click AppImages in file managers, browsers etc. You will be prompted whether to integrate the AppImage, or run it just once. When you choose to integrate your AppImage, the file will be moved into the directory ~/Applications. This helps reducing the mess of AppImages on your file system and prevents you from having to search for the actual AppImage file if you want to e.g., remove it.

To provide a complete solution for managing AppImages on the system, AppImageLauncher furthermore provides solutions for updating and removing AppImages from the system. These functions can be found in the context menus of the entries in the desktop’s launcher.

See also

More information about AppImageLauncher can be found in AppImageLauncher.

Troubleshooting

Please refer to our Troubleshooting page.

使用 AppImage (appImagetool)进行 Linux 软件包管理 (带笔记*****)

  https://www.codenong.com/cs106774108/

摘要:

1. 首先,请确保本地已安装 AppStream 包、file 包。

对于基于 Debian 的系统,运行:

$ sudo apt install appstream

$ sudo apt install file

 下载二进制文件后,使文件可执行,并将 hello-world-appimage 目录传给它。但是首先,你需要告诉它你想要的架构。

2. desktop 文件

Linux GUI 系统会读取 helloworld.desktop 文件来知道如何呈现桌面图标。事实证明,当前的这个文件会在以后给你带来点麻烦,因此请进行一些小修改:添加 Categories= 这行并为其赋予值 GNOME。不要忘记最后的分号:

$ nano hello-world-appimage/helloworld.desktop
        add Categories=GNOME;

错误提示信息:没有设置 Categories的结果。

Categories entry not found in desktop file
.desktop file is missing a Categories= key

原因:

appimage官方有一个仓库,专门用来发布 用户制作的 appimage文件。

因此,这个仓库有一个分类,与用户 app desktop中的分类相对应;才能启动 appimage软件。

这造成一个麻烦,就是用户首先需要手动设置好自己的 desktop的 Categories=分类,才能运行这个软件。也许未来会改变成半自动吧?

Categories= key:key需要按要求给出,才能通过。随便写一个不合规定的字符串,是 NG的。

 

3. 运行

$ wget <https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage>
$ chmod +x appimagetool-x86_64.AppImage
$ ARCH=x86_64 ./appimagetool-x86_64.AppImage hello-world-appimage

如果你没有看到任何错误消息,那么表示完成了,请运行:

$ ls
$ ./hello-world-appimage-x86_64.AppImage

注:

1. 红色部分,应该是自动增加的。

2. 不同架构的 cpu,需要下载对应版本的 appimagetool ?

github 说明:cpu架构 与appimagetool的版本

Build log: https://github.com/AppImage/AppImageKit/runs/454445892
Assets 18

appimagetool-aarch64.AppImage
617 KB 2020-12-31T12:13:21Z
appimagetool-aarch64.AppImage.zsync
2.03 KB 2020-12-31T12:13:21Z
appimagetool-armhf.AppImage
552 KB 2020-12-31T12:13:22Z
appimagetool-armhf.AppImage.zsync
1.84 KB 2020-12-31T12:13:22Z
appimagetool-i686.AppImage
2.04 MB 2020-12-31T12:13:23Z
appimagetool-i686.AppImage.zsync
6.33 KB 2020-12-31T12:13:23Z
appimagetool-x86_64.AppImage
2.07 MB 2020-12-31T12:13:24Z
appimagetool-x86_64.AppImage.zsync
6.44 KB 2020-12-31T12:13:24Z
AppRun-aarch64
35.5 KB 2020-12-31T12:13:25Z
AppRun-armhf
26.3 KB 2020-12-31T12:13:25Z
Source code (zip)
2020-12-31T11:47:31Z
Source code (tar.gz)
2020-12-31T11:47:31Z

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

运行 AppImage软件:Running AppImages (***) 的相关文章

  • 在 QtCreator 中将 OpenCV 2.3 与 Qt 结合使用

    随着 OpenCV 2 3 版本终于发布 我想在我的系统上编译并安装这个最新版本 由于我经常使用 Qt 和 QtCreator 我当然希望能够在我的 Qt 项目中使用它 我已经尝试了几种方法几个小时 但总是出现错误 第一次尝试 使用WITH
  • QTableView 中的虚拟列?

    我开始学习 Qt4 模型 视图编程 我有初学者问题 我有一个简单的应用程序 其中显示 sqlite 表QTableView class Model QtSql QSqlTableModel def init self parent None
  • Qt程序部署到多平台,如何?

    我是 Qt 编程新手 我想开发一个程序 我想在 Windows Linux ubuntu 和 Mac 上运行 听说Qt支持多平台应用程序开发 但我的问题是 在我部署或编译后 任何 Qt 库都需要在 Ubuntu 中运行这个应用程序吗 如果您
  • 如何在 C++ 运行时更改 QML 对象的属性?

    我想在运行时更改 QML 对象的文本 我尝试如下 但文本仍然为空 这是后端类 class BackEnd public QObject Q OBJECT Q PROPERTY QString userFieldText READ userF
  • 程序意外完成 - QT Creator

    我正在尝试使用 QT Creator 使用 QT 框架开发 GUI 控制台应用程序 我使用的是Windows XP 我安装了QT 4 8 3和mingw 两者均已安装 没有任何错误 然后我安装了QT Creator QT 版本 路径中的 Q
  • QT/QML Android App,点击通知栏时打开应用程序

    我为 Android 应用程序制作了一个 QT 当我单击平板电脑中上面看到的按钮通知栏时 但是 如果单击通知 我的应用程序将打开 聚焦 不知道 并显示黑色窗口 简单来说怎么做呢 我的代码是 package org ays operation
  • Qt:将拖放委托给子级的最佳方式

    我在 QWidget 上使用拖放 我重新实现了 DragEnterEvent dragLeaveEvent dragMoveEvent 和 dropEvent 效果很好 在我的 QWidget 中 我有其他 QWidget 子级 我希望它们
  • Qt 创建者 + MITK (Linux)

    我正在尝试使用MITK 与 Qt Creator 我已经通过 ccmake 成功编译并使用了 VTK 和 ITK 我已经编译了 MITK超级建造模式 它下载 CTK VTK ITK 等 然后我就配置好了 我已经用 make 编译了 大约两个
  • QTcpSocket 有时不发送数据

    我有两个 QT 应用程序 一个应用程序可以被认为保存了大数据 它每秒向第二个应用程序发送大约 10 KB 的数据块 之前我尝试使用QUdpSocket来传输数据 但由于MTU限制在2 5K左右 并且需要自己分割和重新组合数据 所以我改用QT
  • 如何在模型更改时停止ListView“跳跃”

    我需要做什么 我需要创建一个聊天窗口用一个ListView在 QML 中存储聊天消息 我设置listView positionViewAtEnd 以便跟踪最后的消息 我禁用positionViewAtEnd当我向上滚动时 我可以阅读过去的消
  • 加权 Voronoi 的 CGAL 2D APOLLONIUS 图 - 如何生成和获取面和顶点?

    我正在尝试根据阿波罗尼乌斯图生成加权沃罗诺伊 我正在使用 CGAL 库 我找不到如何从 apollonius 获取面和顶点的好例子 我有以下类型定义 typedef double NT typedef CGAL Cartesian lt N
  • 错误 LNK2001:无法解析的外部符号 __CxxFrameHandler3

    我正在将 Qt 从 VS 2013 迁移到 Qt 5 10 1 到 VS 2015 出现以下多个链接错误 error LNK2001 unresolved external symbol CxxFrameHandler3 error LNK
  • 为 Windows 98 编译 Qt

    我需要支持 Windows 98 Qt 文档声称这是可能的 但没有说明 Qt 4 6 的分布式二进制文件不能在 Win98 上运行 而且我采样的大多数 Qt 应用程序也不能在 Win98 上运行 对于几个确实在 98 上运行的应用程序 我询
  • QToolButton:更改菜单位置

    使用菜单时QToolButton菜单显示在按钮的正下方 有没有办法在按钮的左侧 右侧显示菜单 我知道这个问题不久前已得到回答 但我想为此问题添加新答案 因为接受的答案不再有效 实际上 更改 QToolButton 上的菜单位置非常容易 您需
  • Qt:测量事件处理时间

    我想测量我的应用程序中的哪些事件在主线程中需要很长时间才能执行 阻塞 GUI 或者至少是否有任何事件花费的时间超过 比如说 10 毫秒 显然 我对需要很长时间的任务使用线程和并发 但有时很难在其他线程中放入的内容和可以保留在 GUI 中的内
  • Qt 插槽是否与其他代码并行运行?

    在此函数示例中 void MyClass myFunction emit MySignal1 emit MySignal2 如果我有slot1倾听MySignal1 and slot2倾听MySignal2 1 Is slot1总是会在之前
  • Qt:如何连接到 SQLite?

    我安装了 SQLite3 解压到 c sqlite 创建了一个数据库 c sqlite mzsales 现在我试图在 QTableView 中显示其内容 QSqlDatabase db QSqlDatabase addDatabase QS
  • 如何检测QTableView中的双击

    我正在使用 PyQt 创建 GUI 应用程序 在继承自 QTableView 的视图中 需要检测用户双击行时选择的行 该表可以排序 但不能编辑 我该怎么做 注意 尝试了 doubleClicked int 信号 它是由鼠标按钮发出的 而不是
  • Qt表格小部件,删除行的按钮

    我有一个 QTableWidget 对于所有行 我将一列的 setCellWidget 设置为按钮 我想将此按钮连接到删除该行的函数 我尝试了这段代码 它不起作用 因为如果我只是单击按钮 我不会将当前行设置为按钮的行 ui gt table
  • Qt - 获取互联网上托管的网页的源代码(HTML 代码)

    我想获取网页的源代码 HTML 例如StackOverflow的主页 这是我到目前为止编写的代码 QNetworkAccessManager manager QNetworkReply response manager get QNetwo

随机推荐

  • Docker+Jenkins+GIT CICD持续化集成实战

    一 需求 开发将源码上传到github仓库 通过jenkins持续集成引擎结合git工具 将源码拉取到jenkins服务器 通过工具maven在本地讲源码编译打包成war包 在ssh到Docker宿主机 通过执行脚本生成制作自定义的Dock
  • axios使用异步方式无感刷新token,简单,太简单了

    文章目录 废话在前 接着踩坑 解决思路 完整代码 废话在前 写vue的伙伴们无感刷新token相信大家都不陌生了吧 刚好 最近自己的一个项目中就需要用到这个需求 因为之前没有弄过这个 研究了一个上午 终于还是把它拿下了 小小的一个token
  • apollo灰度发布

    apollo灰度发布 七 https blog csdn net weixin 42412601 article details 88415437
  • 《STL源码剖析》学习笔记2——神奇的__type_traits

    标签 C C STL 学习 笔记 在STL中为了提供通用的操作而又不损失效率 我们用到了一种特殊的技巧 叫traits编程技巧 具体的来说 traits就是通过定义一些结构体或类 并利用模板类特化和偏特化的能力 给类型赋予一些特性 这些特性
  • Python灰度图像均衡化

    import cv2 import numpy as np from matplotlib import pyplot as plt 读取同文件夹下的lena图像并做灰度化处理 lena plt imread lena jpg lena l
  • 【ADS学习笔记(一)——ADS介绍】

    一 创建Workspace 在创建Workspace时 点击Change Libraries 可以添加和更改元件库 系统默认添加Analog RF 模拟 射频元件库 以及DSP 数字元件库 也可以添加自己下载的元件库 元件库也可以在创建完W
  • 10 分钟上手Web Scraper,从此爬虫不求人

    我现在很少写爬虫代码了 原因如下 网站经常变化 因此需要持续维护代码 爬虫的脚本通常很难复用 因此价值就很低 写简单的爬虫对自己的技能提升有限 对我来不值 但是不写爬虫 就不能方便的获取数据 自己写代码又要花费很多时间 少则一两个小时 多则
  • 用java代码实现图书管理系统

    您好 下面是一个使用 Java 语言实现的图书管理系统的简单示例代码 这个示例包含了一个图书类 Book 和一个图书管理类 BookManager Book 类用于存储图书的信息 包括书名 作者 出版日期等 BookManager 类用于管
  • 解决iview打包时UglifyJs报错

    使用npm run dev时运行是ok的 但是npm run build打包时iview报错 如下 原因是iview中使用了es6语法 然而uglifyJs是不支持的 打开我们的build webpack prod conf js文件 可以
  • spring boot 过滤器实现接收 压缩数据 并解压

    1 新加类GzipRequestWrapper 继承HttpServletRequestWrapper类 public class GzipRequestWrapper extends HttpServletRequestWrapper p
  • 基于Python实现 传感器的随机布置 传感网覆盖仿真

    代码演示 import tkinter as tk import random import win32gui import cv2 import time import math from PIL import Image ImageGr
  • 黑客游戏Hacknet下载(游戏分享一)

    OK Shall we begin Hacknet中文版下载 百度网盘 添加链接描述 夸克网盘 添加链接描述 注 解压后直接点击Hacknet exe进行游戏 英文版下载 百度网盘 添加链接描述 夸克网盘 添加链接描述 难关过不了自行上b站
  • AndroidStudio链接手机的步骤

    1 设置手机为开发者模式 设置 gt 关于手机 gt 连续点击MIUI版本 开启成功 2 在更多设置中选择开发者选项 在开发者选项中同时勾选USB调试和USB安装的开关 3 数据线与电脑连接 4 打开AndroidStudio 等待程序加载
  • centos7关闭防火墙

    出现物理机ping不通虚拟机 但虚拟机可以ping通物理机 排查的方向 一个是虚拟机的防火墙问题 1 查看防火墙的状态 systemctl status firewalld 2 关闭防火墙 如果还是不通 第二个排查方向是虚拟机的链接模式 桥
  • Springboot集成activiti的配置文件ActivitiConfig

    Configuration public class ActivitiConfig Bean public ProcessEngineConfiguration processEngineConfiguration DataSource d
  • Stable Diffusion教程

    什么是Stable Diffusion Stable Diffusion是一种潜在扩散模型 Latent Diffusion Model 能够从文本描述中生成详细的图像 它还可以用于图像修复 图像绘制 文本到图像和图像到图像等任务 简单地说
  • radius认证服务

    radius认证服务 RADIUS是一种分布的 客户端 服务器系统 实现安全网络 反对未经验证的访问 在cisco实施中 RADIUS客户端运行在cisco路由器上上 发送认证请求到中心RADIUS服务器 服务器上包含了所有用户认证和网络服
  • cuda测试集编译linux,linux下使cmake编译cuda(附列子,亲测可用)

    在网上百度 并没有找到什么合适的教程 让我等小白着急不已 借助于GOOGLE的强大能力 发现原来cmake已经支持了cuda 于是乎 赶紧 http www cmake org 下载了最新的cmake 调用了里面的一个FindCUDA cm
  • ApiPost 开源接口调试工具使用大全

    ApiPost使用 简介 接口调试 API请求参数 Header 参数 Query 参数 Body 参数 API 请求响应 返回Headers 响应结果分屏展示 生成调试代码 参数 全局参数 目录参数 参数的优先级 变量 环境变量 环境变量
  • 运行 AppImage软件:Running AppImages (***)

    How to run an AppImage Running AppImages 使用 AppImage appImagetool 进行 Linux 软件包管理 带笔记 要点 1 需要运行权限 通常 linux软件的运行 都需要运行权限 B