当前位置: 首页 > 科技观察

使用AppImage进行Linux包管理

时间:2023-03-13 16:28:04 科技观察

AppImage在独立的环境中分发应用程序,该环境适用于任何Linux发行版。管理Linux机器(尤其是远程机器)的一个重要部分是管理和安装软件。当本地应用程序出现问题,或者文件系统上的某些文件损坏需要修复时,您通常希望推送更新,而不必走很多路也不必坐在物理屏幕前。正如我在我的Pluralsight课程《Linux 系统维护和故障排除》中解释的那样,许多问题当然可以使用Bash脚本解决,但仍然有很多情况除了老式的二进制文件别无选择。想象一下,您的某些远程系统需要安装新的应用程序,以便使用这些计算机的团队成员可以执行某些业务。能够利用Debian或RPM等主要Linux存储库系统的集成和自动化可以使您的管理任务更加轻松。正如LinusTorvalds不厌其烦地提醒我们的那样,Linux软件管理系统太多的问题在于Linux软件管理系统太多了。多年来,应用程序开发甚至Linux的采用都变得更加复杂,因为您为使软件可用(例如,进入Debian存储库)而投入的所有时间和工作与您希望它如何进入RPM系统无关。没有任何帮助,对于SUSE的Zypper管理器也是如此,没有任何帮助。解决软件孤岛问题的一个有希望的解决方案是使用可以在任何Linux发行版上运行的独立环境来分发应用程序。在这个年轻且不断发展的领域,其中一个选择是AppImage。使用AppImage我完全致力于AppImage。与我提到的其他包管理系统一样,如果您需要,可以使用许多复杂的功能。但是,从本质上讲,AppImage非常简单。AppImage不像大多数其他包管理器那样通过存储库工作,它使用单个独立文件,可以直接发送或通过网站共享。这是一个展示它之美的例子。当我使用AppImage时,我在一个技术论坛上遇到了一个旧的讨论,它使我找到了一个同样古老且被废弃的GitHub项目以及相关的YAML和配方文件。它们旨在自动构建为生产准备AppImage包所需的相当复杂的基础设施。尽管基础设施全部构建在5年前的Ubuntu版本上,但当我将它们放在一起并运行appimagetool命令时,它创建了一个AppImage文件,可以在我当前的桌面上无缝运行。我认为没有多少五年历史的复杂GitHub项目可以在不认真重做的情况下与其他技术一起运行。不过这里我就不介绍这个案例了。相反,我将通过一个简单的HelloWorld程序向您展示它是如何工作的。首先,确保本地安装了AppStream包。对于基于Debian的系统,运行:$sudoaptinstallappstream对于RPM系统,使用:$sudodnfinstallappstream克隆本文中提到的Git存储库,我将基于它作为示例:$gitclone$cdappimage-resources$lshello-world-appimage接下来,使用Git进入新创建的目录。这里有两个目录。请使用hello-world-appimage。另一个是您也应该考虑尝试的更复杂的项目。LinuxGUI系统读取helloworld.desktop文件以了解如何呈现桌面图标。事实证明,当前文件稍后会给您带来一些麻烦,所以做一个小改动:添加行Categories=并为其赋值GNOME。不要忘记末尾的分号:$nanohello-world-appimage/helloworld.desktopaddCategories=GNOME;从AppImageGitHub项目下载appimagetool预编译的二进制文件。访问GitHub的原因之一:那里有很多很棒的文档和资源。下载二进制文件后,使文件可执行并将其传递到hello-world-appimage目录。但首先,您需要告诉它您想要什么架构。出于某种原因,没有任何名称以x86_64结尾的工具可以自行确定是否应该使用x86_64构建应用程序(我不知道如何)。$wget$chmod+xappimagetool-x86_64.AppImage$ARCH=x86_64./appimagetool-x86_64.AppImage你好世界-appimage如果您没有看到任何错误消息,那么您就完成了,运行:$ls$./hello-world-appimage-x86_64.AppImage总结AppImage是包管理的一个非常有效的选择。当您探索它时,我想您会发现它是Linux发行版默认包系统的绝佳替代品。