运行 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 (***) 的相关文章

  • 右键单击 QPushButton 上的 contextMenu

    对于我的应用程序 我在 Qt Designer 中创建了一个 GUI 并将其转换为 python 2 6 代码 关于一些QPushButton 与设计器创建 我想添加右键单击上下文菜单 菜单选项取决于应用程序状态 如何实现这样的上下文菜单
  • QGraphicsScene没有删除QWidget的功能

    QGraphicsScene 有一个addWidget QWidget 有函数 但是没有对应的removeWidget QWidget 它只有removeItem QGraphicsItem 如何删除 QWidget 这是一个基本示例 看看
  • 如何在 QT 安装程序框架中区分每用户安装与系统范围安装?

    我正在使用一些名为 pgModeler 的应用程序 它的当前版本提供了一个基于 QT 安装程序框架的安装程序 Windows 上该安装程序的问题是它安装每个用户的开始菜单条目 https github com pgmodeler pgmod
  • 无法将 QList 分配给 QString

    我遇到这个错误 Unable to assign QList
  • 如何使 Python、QT 和 Webkit 在无头服务器上工作?

    我有 Debian Linux 服务器 我用它来做各种事情 我希望它能够完成一些我需要定期完成的网络抓取工作 这段代码可以是在这里找到 http bit ly QeqvzX import sys from PyQt4 QtGui impor
  • 打开和关闭附加窗口 (QML)

    目前我有一个通过以下方式打开的窗口 property variant win Button id testButton MouseArea onClicked var component Qt createComponent test qm
  • 仅在内部/外部抚摸路径?

    Given a QPainterPath http qt project org doc qt 4 8 qpainterpath html如何仅在路径的内侧或外侧边缘 或非闭合路径的左侧或右侧 描边路径 QPainter strokePat
  • Qt qDebug() 在 Windows shell 中不起作用

    我正在使用一个qDebug Qt 框架的printf屏幕上有东西 当我从 Qt Creator 运行应用程序时它工作得很好 但是当我尝试从 Windows 执行它时cmd它什么也没显示 为什么会发生这种情况 你必须添加 CONFIG con
  • 用 C++/Qt 编写的程序中的 RTF / doc / docx 文本提取

    我正在写一些程序Qt https en wikipedia org wiki Qt 28software 29 C 我需要从中读取文本微软Word https en wikipedia org wiki Microsoft Word RTF
  • new 运算符(以及 malloc)无法分配约 450 MB 的内存 [重复]

    这个问题在这里已经有答案了 我正在开发一个程序 该程序在内存中存储大约 2 2 亿个短值的数组 该数据块的分配方式如下 short arrayName new short SIZE OF ARRAY 然后将文件的内容读入内存 在团队中的另一
  • 在没有加载器的情况下实例化内联组件

    有没有办法实例化内联Component 即在同一文件中定义 而不使用Loader 我不太关心使用的性能影响Loader因为我要用很多东西污染我的文件Loader包装纸 我发现从 JavaScript 创建动态 QML 对象 http doc
  • QMainWindow 上的 Qt 布局

    我设计了一个QMainWindow with QtCreator s设计师 它由默认的中央小部件 aQWidget 其中包含一个QVBoxLayout以及其中的所有其他小部件 现在我想要的一切就是QVBoxLayout自动占据整个中央小部件
  • 在 Qt 中使用多个不同的流读取同一文件

    使用 Qt 是否可以使用多个流读取文件以同时访问其中的不同数据部分 请注意 Qt 中的流 QTextStream QDataStream 不处理底层设备中的位置 流类只是一个包装器 用于更轻松地解析设备 QFile 实例 内的二进制数据 因
  • QTableView 并双击一个单元格

    我正在开发测试用例编辑器 该编辑器包含 USART 传输和接收数据包格式 编辑器是一个表格视图 发送和接收数据包的长度为八个字节 例如 0x01 0x02 0x03 0x08 它在我的第五和第六栏中 现在 我希望此列中的单元格为只读 但是当
  • Qt:不完整类型和前向声明的使用无效

    我有一些误解 A h ifndef A H define A H include B h class A public B Q OBJECT public A endif A cpp include A h A A B ui gt blan
  • 是否有 Qt 小部件可以浏览应用程序中小部件的层次结构(类似于 Spy++)?

    我们有一个具有复杂的小部件层次结构的应用程序 我希望能够以与 Spy 类似的方式浏览此层次结构 查看和编辑属性 例如大小 如果有一个小部件可以显示此信息 则它不需要在外部应用程序中运行 那么问题来了 这样的神兽存在吗 您可以使用Gammar
  • 连接到 QNetworkReply::error 信号

    我正在使用 Qt5 的新连接语法 QNetworkReply 有一个名为error http qt project org doc qt 5 0 qtnetwork qnetworkreply html error 2还有一个函数叫做err
  • Qt(在 Windows 上)将权限级别设置为“requireAdministrator”

    我正在使用 Qt Creator 并努力制作 exe文件默认以管理员身份运行 在线阅读所有解决方案我试图将这一行放入我的 pro file QMAKE LFLAGS MANIFESTUAC level requireAdministrato
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • Qt 支持 Windows 蓝牙 API 吗?

    谁能告诉我 Qt 是否支持 Windows 蓝牙 API 如果是这样 您能否分享一些有关如何使用它的信息 自上次答复以来 这个问题的答案发生了一些变化 Qt 5 2 版为 Linux BlueZ 和 BlackBerry 设备实现了蓝牙 A

随机推荐

  • 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