是的,Linux; Linux软件包以.appimage的形式分发,用于32位和64位发行版,并且应在所有主要Linux发行版上正常运行。该团队目前没有计划提供本机.deb(或.rpm)安装程序。
什么是AppImage?它们与快照有何不同?
#1 楼
基本信息关于安装
我在这里引用appImage项目页面:
AppImages可以下载并运行而无需安装或需要root权限。
使其可执行文件
您可以使appImage可执行文件如下:
chmod a+x exampleName.AppImage
执行它
您可以执行以下appImage:
./exampleName.AppImage
其他信息
关于appImage
您可以在此处找到有关appImage的一些常规信息。
我在这里引用appImage项目页面:
AppImage格式的关键思想是一个应用=一个文件。每个
AppImage都包含一个应用程序以及该应用程序需要运行的所有文件。换句话说,每个AppImage除了目标基本操作系统中包含的内容之外,都没有其他依赖项。
维基百科添加了
AppImage(以及以前的klik和Portablelinuxapps)不会
安装传统意义上的软件(即,它不会在系统中的所有位置放置文件)。
每个应用程序使用一个文件。
每个文件都是独立的:它包括应用程序依赖的所有库,而这些库不属于基本系统。在这方面,它类似于“应用程序虚拟化”。即使不是超级用户或正在使用实时CD,也可以使用AppImage
文件。
AppImage文件通常比编译和安装
应用程序简单,因为实际上没有安装发生。 AppImage文件
是一个压缩的图像,已临时安装以允许访问该程序,但不必提取该程序或修改
底层系统。
AppImageKit项目的
README.md
提供了很多其他信息,例如用例,问题空间和目标。用例
作为用户,我想转到上游下载页面,从原始作者那里下载一个应用程序,然后像在Linux桌面系统上那样运行它Windows或Mac应用程序。
作为测试人员,我希望能够从连续构建服务器中获取最新版本的应用程序,并在我的系统上对其进行测试,而无需进行编译且无需进行任何操作担心我可能会弄乱我的系统。
作为应用程序作者或ISV,我想像为Windows和OS X一样为Linux桌面系统提供软件包,而无需将其“放入”发行版并且无需构建成千上万个不同分布的目标。
目标
简单。
AppImage旨在成为一种非常简单的格式,易于理解,创建和管理。
保持二进制兼容性。
AppImage是二进制软件分发的格式。打包为AppImage的软件旨在与尽可能多的系统实现二进制兼容性。
(重新)编译软件的需求应被大大减少。
与发行无关。
AppImage应该在为其创建的所有基本操作系统(发行版)上运行(及更高版本)。例如,您可以
同时定位Ubuntu 9.10,openSUSE 11.2和Fedora 13(及更高版本)
,而不必为每个目标系统创建和维护单独的
软件包。
无需安装。
AppImages包含一种应用程序,其格式可以直接从存档中运行
,而无需先安装。这可以与Live CD相媲美。在发布Live CD之前,必须先安装操作系统,然后才能使用它们。
始终保持应用程序压缩。
由于应用程序始终保持打包状态,因此永远不会在硬盘上对其进行解压缩。计算机在访问时会即时解压缩
应用程序。由于在大多数系统上,解压要比从硬盘读取数据快,因此除节省空间外,它还具有速度优势。另外,完全消除了安装
所需的时间。
允许将应用程序放置在任何地方。
AppImage是“可重定位的”,因此允许用户从任何位置(包括CD-ROM,DVD,可移动磁盘,USB)存储和执行它们棒)。
将应用程序设为只读。
由于AppImage在设计上是只读的,因此用户可以合理地
确保应用在运行过程中不会对其自身进行修改。
不需要重新编译。
必须能够从现有的二进制文件创建AppImage,而无需重新编译。由于不需要编译器,因此大大加快了AppImage创建过程。此
还允许第三方将封闭源应用程序打包为
AppImages。 (尽管如此,对于上游
应用程序开发人员来说,从源代码专门为生成AppImage的目的而构建是有益的。)
保持基本操作系统保持不变。
由于AppImages旨在在未经管理员特别准备的普通系统上运行,因此AppImages可能不需要任何不寻常的基本操作准备系统。因此,它们
不能依赖默认内核发行版没有随附的特殊内核补丁,内核模块或任何
应用程序。
不需要root。
由于AppImage旨在由最终用户运行,因此它们不应
要求安装或使用管理帐户(根)。但是,如果需要,它们可以由管理员安装(例如,在多用户情况下)。
评论
appimage如何在两次启动之间保留设置?
– Dan Dascalescu
17年1月14日在3:04
您能否详细介绍一下“只读”功能?我可以在AppImage中保存更改吗?还是像LiveCD那样使它们失去生命?
–vstepaniuk
18年1月9日在21:30
@DanDascalescu:您的问题值得在AskUbuntu上提出一个完整的问题,而不仅仅是评论。你会问吗?
– Kurt Pfeifle
18-2-24在15:44
@vstepaniuk:您的问题类似于Dan的问题。你们其中一个应该将其作为“完整”问题提出,而不仅是在评论中……
– Kurt Pfeifle
18-2-24在15:46
@KurtPfeifle:因为您不想自己继续问下去... :)
– Dan Dascalescu
18年2月26日在9:01
#2 楼
在运行AppImage之前,需要使其成为可执行文件。这是Linux安全功能。使AppImage可执行文件的主要方法有两种:使用GUI
或
使用命令第
chmod a+x Some.Appimage
现在双击文件以运行它,或右键单击> Run
评论
我有一个RSSGuard的appimage,我想将其添加到18.04.3 LTS的StartUp程序中。我在命令行中有此文件(./home/$USER/Programs/RSSGuard/rssguard-3-5-6-linux64.AppImage),它不会在启动时运行。我应该使用(sh ./$PATH/*.appimage)吗?
– Andor Kiss
20-2-8在14:14
很好,谢谢!
– DIRTY DAVE
20年7月11日在10:43
万分感谢!!!!
– Arbaz.in
20-10-5在7:13
#3 楼
这两个系统之间的基本思想可能相似,但是快照和Appimages之间存在一些设计差异。我想到的一些“大”概念是:
安全性,即局限性:Snap程序包在沙箱中运行,不允许它们从沙箱中逃脱,并到达不应接触的系统其他部分。这是与权限系统并行运行的更强的安全层。显然,在开始(以及以后)进行处理时会感到有些沮丧,但是如果您从系统管理的角度考虑它,这就是管理员希望其用户使用的东西。
安全性:安装从网上获取的软件与在街上舔pole杆一样安全。有时什么也没发生,有时会遇到一些非常大的健康问题。 Snap软件包具有其适当的存储库,该存储库由Canonical控制,例如常用的标准Ubuntu存储库。您可以继续从附近安装
.deb
文件,但这将是您的选择,而不是设计问题。安装:AppImages等同于“便携式Windows可执行文件”。所有库都是独立的,任何用户都可以下载并执行其中一个库。另一方面,
snap
软件包是正确的软件包,需要通过适当的软件包管理器(作为root
或与sudo
一起)进行安装(snap install tic-tac-toe
引发错误:它需要sudo
!)删除:删除快照程序包,您需要使用具有正确权限的程序包管理器
snap remove ...
来执行此操作。另一方面,Appimages只是“那里”。因此,任何用户都不希望该Appimage吗?他/她只是删除了文件,但文件不见了。虽然我强烈建议在使用Appimages时要谨慎,但我个人还是亲自使用其中的一些。
我发现它们在我的工作系统上特别有用,在我的系统上我没有
root
访问权限(只有管理员可以访问),但是我需要开发人员以Appimage形式提供的特定软件的最新版本。 我有点害怕其中确实包含一些恶意代码,因此我尽可能地检查发布者的身份。我不确定该软件是否良性,但我已百分百地做到了。
评论
基本上,每个人都在尝试在Linux上实现OSX应用程序打包,但是没有什么能实现的。
–橙色狗
16年5月19日在10:25
我不知道它是如何工作的:)当然,Snap和Appimages不能与在许多其他软件之间共享的许多依赖项的软件一起很好地工作。使用完全独立的软件或很少的依赖项,它们就可以很好地工作,但是这样做的风险是要拥有执行同一任务的同一个库的许多副本,例如在Windows中。这应该在快照程序包中解决(依赖快照库的软件会使用该版本安装该库,然后,与通常的系统一样,另一个需要相同库版本的软件可能会使用它)。
– dadexix86
16年5月19日在10:29
OSX(和iOS)应用程序的工作方式类似于AppImage(只需下载单个文件并运行),但具有快照的沙盒安全性。
–橙色狗
16年5月19日在10:30
OSX试图摆脱这些限制,只允许从其商店进行安装。
– LtWorf
16-09-26在10:54
AppImage确实应包含“沙箱”选项。希望我们将来会看到。
–罗伊
18年5月28日在20:14
#4 楼
虽然snap仅专注于Ubuntu,但AppImage是跨发行版的,还可以在Fedora,debian,openSUSE,CentOS等上运行。AppImage不需要Linux发行版的运行时或基础结构支持,因此可以在任何地方运行。它使应用程序作者可以像Windows和OS X一样,将其软件直接交付给Linux用户。如果没有以Canonical或其他任何介于软件作者和最终用户之间的人。
如果以AppImage格式提供应用程序,则用户可以访问原始作者的网站进行下载,例如,来自https://musescore.org/en/download的MuseScore。使AppImage可执行(使用文件管理器或
chmod a+x ./yourAppImage
),然后只需双击即可运行该应用程序。评论
因此,如果要安装Leafpad,是否单击“设置”?那会发生什么呢?以及如何卸载AppImage?我在看bintray.com/probono/AppImages,但没有找到答案。如果您不介意,则可以编辑答案以包括信息以及您认为用户可能想知道的其他信息。
–DK Bose
16年5月19日在6:59
不知道这是否也是您的解决方案-但16.04版本中的Leafpad可用(版本:0.8.18.1)。 Bintray提供的Leafpad版本仅为0.8.17-甚至更老。
– dufte
16年5月19日在7:30
的确如此,但是对于只想测试水域的人来说,就像该网站所说的那样,它是一种“ Hello,World”类型的事物。
–DK Bose
16年5月19日在11:57
优秀的。之后,您只需双击即可。那就是我所需要的!
–达伍德吉
18年6月26日在19:29
#5 楼
AppImage需要FUSE才能运行。用户空间中的文件系统(FUSE)是一个系统,它允许非root用户安装文件系统。安装FUSE
许多发行版都具有开箱即用的有效FUSE设置。 。但是,如果对您不起作用,则可能需要手动安装和配置FUSE。
例如,在Ubuntu上:
sudo apt-get install fuse
sudo modprobe fuse
sudo usermod -a -G fuse $USER
例如,在openSUSE上:
sudo zypper install fuse
Fallback
如果不想安装FUSE,则可以装载或提取AppImage。 。
要挂载AppImage并运行应用程序,只需运行
sudo mount -o loop Some.AppImage /mnt
/mnt/AppRun
如果不起作用,则可能是实验类型2 AppImage。这些要求您将
-o offset=...
传递给mount
命令。使用--appimage-offset
运行AppImage以找到正确的偏移量编号。评论
在写完第三行(sudo usermod -a -G保险丝)后加上我的用户名后,我不断得到usermod:组'fuse'不存在...为什么有任何想法?
–马丁
18-11-10在19:09
嗨@Martin,在Ubuntu上。如果您尝试在x86_64(64位)系统中运行i686(32位)AppImage,除非安装了32位库,否则将出现该错误。您可能应该指定下次尝试运行的操作系统和应用程序以获得帮助。
–狮子座
19年4月19日在21:08
嗨,@ Leo,那是很久以前的事,但是我刚刚在Windows 10 64上输入了sudo apt-get install fuse sudo modprobe fuse sudo usermod -a -G fuse $ USER行。我要评论的答案没有任何帮助32/64规范,我看不到应该在哪里指定或为什么...
–马丁
19年4月30日在20:10
#6 楼
安装完成后,您需要将其连接到桌面菜单。要快速集成到桌面菜单中,一个肮脏的技巧是加载旧版Debian存储库(例如,回购中有旧版)。 ,
$ sudo apt-get install digikam
完成后,右键单击菜单启动器,然后选择
configure...
。(这在Cinnamon中是这样。您的桌面可能看起来有所不同。)
,然后打开
menu editor
。查找应用程序并编辑其属性,然后更新“命令:”,将其更改为新应用程序映像文件的路径名。
(!!这会将旧版本保留在磁盘上,浪费了空间,并且有多种方法可以使此清洁程序更干净,但这确实很快使您的菜单中的新appimage起作用。)
...现在要清理此问题:
要删除旧软件包,但仍保留其桌面和图标文件。
查找所有digikam桌面文件。查找它们的一种方法是使用
locate
:$查找digikam.desktop
/usr/share/applications/org.kde.digikam.desktop
〜/ .local / share / applications / org .kde.digikam.desktop
第一个是您的系统默认值(适用于所有用户),第二个是您的默认值。第二个(本地的)通常会覆盖第一个(如果它们都存在的话)。
如果与它们进行比较,您会注意到您仅使用菜单编辑器编辑了.local,而不是/ usr中的一个。 ...
此外,您不需要两者。因此,如果需要,您可以删除
.local
之一,而仅依靠/usr
。 解决此问题的简单方法是覆盖以下内容:
$ cd /usr/share/applications
$ sudo mv ~/.local/share/applications/org.kde.digikam.desktop .
接下来,您必须重命名此文件以避免稍后运行该软件包时,便会清除该软件包。请注意,将所做的编辑或更改保存到桌面文件后,菜单将自动找到您的更改并自行更新。
$ sudo mv org.kde.digikam.desktop org.kde.digikam.appimage.desktop
现在在其中查找以查找其当前正在使用的图标名称(指向):
$ sudo grep Icon org.kde.digikam.appimage.desktop#注释大写字母'I'
Icon = digikam
现在找到相关的图标文件
$查找digikam | grep图标
/usr/share/icons/hicolor/128x128/apps/digikam.png
/usr/share/icons/hicolor/16x16/apps/digikam.png
/ usr / share /icons/hicolor/22x22/apps/digikam.png
/usr/share/icons/hicolor/256x256/apps/digikam.png
/ usr / share / icons / hicolor / 32x32 / apps / digikam .png
/usr/share/icons/hicolor/48x48/apps/digikam.png
/usr/share/icons/hicolor/64x64/apps/digikam.png
/ usr / share /icons/hicolor/scalable/apps/digikam.svgz
/usr/share/icons/oxygen/base/128x128/apps/digikam.png
/ usr / share / icons / oxygen / base / 16x16 /apps/digikam.png
/usr/share/icons/oxygen/base/22x22/apps/digikam.png
/usr/share/icons/oxygen/base/256x256/apps/digikam.png
/usr/share/icons/oxygen/base/32x32/apps/digikam.png
/usr/share/icons/oxygen/base/48x48/apps/digikam.png
/ usr /share/icons/oxygen/base/64x64/apps/digikam.png
/var/lib/app-info/icons/debian-buster-main/48x48/digikam_digikam.png
/ var / lib /app-info/icons/debian-buster-main/64x64/digikam_digikam.png
您所关心的是在
/usr/share/icons/
树中。重命名它们很困难。只需重命名整个树(以保存它),卸载并在完成后放回树,就更简单了。
$ cd /usr/share
$ sudo mv icons icons~ # save icons tree
$ sudo apt-get purge digikam && sudo mv icons~ icons #uninstall & restore tree
评论
我认为appimage标签可能会变得有用,所以我刚刚创建了它。在我们不需要或不想保留它的情况下,总会有选择再次对其进行燃烧。