linux软件可以在所有发行版运行吗,Linux通用的跨发行版的3大软件包管理器

前言

本文主要介绍Linux系统上通用的跨发行版的3大软件包管理器。

Linux系统上的软件包管理可能非常令人困惑,尤其是对于新手,因为不同的Linux发行版使用不同的包管理系统。在大多数情况下,最令人困惑的部分是软件包依赖项的解析和管理。

例如,Debian及其衍生产品Ubuntu使用.deb和dpkg包管理系统,RHEL (Red Hat Enterprise Linux)家族使用.rpm包及其对应的管理工具。

在过去的几年里,随着通用软件包管理工具或跨发行版的软件包管理工具的兴起,Linux生态系统中的软件包管理和分发已经变得不一样了。这些工具允许开发人员将他们的软件或应用程序从单个构建打包到多个Linux发行版,这使得用户可以轻松地在多个受支持的发行版上安装相同的包。

在本文中,我们将介绍比较流行的三种Linux开源通用或跨发行版软件包管理系统。

1. snap

snap是一个流行的开源应用程序,它也是一个软件包管理系统,由Canonical开发,Ubuntu Linux的制造商。一些Linux发行版现在支持快照,包括Ubuntu、Debian、Fedora、Arch Linux、Manjaro和CentOS/RHEL。

3504c2d409dfe2a1a0e3fc1cc04f12f2.png

snap应用程序是一种跨发行版应用程序,它与所有依赖项(或无依赖项)捆绑在一起,便于安装在任何支持snaps的Linux发行版上。snap可以在桌面、服务器、云或物联网上运行。

要创建snap应用程序,可以使用框架snapcraft和用于构建snap的强大命令行工具。要在Linux中安装和使用快照,需要安装snapd(或snappy守护进程),这是一种允许Linux系统使用.snap文件的后台服务。snap的实际安装是使用snap命令行工具完成的。

snap在默认情况下是安全的。重要的是,需要访问其限制之外的系统资源的snap使用了一个接口,该接口是由snap的创建者根据snap的需求精心挑选的。这使您能够在不影响基本操作系统的稳定性和灵活性的情况下运行应用程序。

此外,snap包管理系统使用称为通道的概念(它由跟踪、风险级别和分支组成,并被细分)来确定安装和跟踪哪一个snap版本的更新。snaps还可以自动更新,这是一个可以手动管理的过程。

2. flatpak

flatpak是一个著名的用于在Linux发行版上发布桌面应用程序的开源框架。由独立社区开发的flatpak允许在几乎任何Linux发行版上安装和运行单个应用程序构建。它总共支持25个发行版,包括Fedora, Ubuntu, RHEL, CentOS, OpenSUSE, Arch Linux,也可以在Raspberry Pi上运行。

a15f3f842d33699145e8c0016cd55a4a.png

flatpak的运行时提供了应用程序可以利用的公共库的平台。但是,它也使完全控制依赖关系变得极其容易,您可以将自己的库绑定为应用程序的一部分。

flatpak提供了易于使用的构建工具,并为开发人员构建和测试他们的应用程序提供了一致的环境(跨设备相同且与用户已有的环境相似)。

flatpak可向前兼容性,即相同的flatpak可以在相同发行版的不同版本上运行,包括开发人员尚未发布的版本。它还努力并继续与Linux发行版的新版本兼容。

如果您是一名开发人员,您可以通过Flathub让您的应用程序对Linux用户可用,Flathub是一个用于在所有发行版上分发应用程序的集中服务。

3. AppImage

AppImage也是一种开源包格式,允许开发人员一次打包一个应用程序,它可以在所有主要的Linux桌面发行版上运行。与前面的包格式不同,对于AppImage,不需要安装包。只需下载你打算使用的应用程序,让它可执行,然后运行它——就是这么简单。它支持大多数32位和64位Linux桌面。

c7639a276699dd24fe68bf79dc2726c0.png

AppImage有很多优点。对于开发人员来说,它使他们能够接触到尽可能多的用户,不管用户运行哪种Linux发行版。对于用户来说,他们不需要担心应用程序依赖关系,因为每个AppImage都与它所有的依赖关系绑定在一起(一个应用等于一个文件)。用AppImage尝试新版本的应用程序也很容易。

管理管理员不再通过阻止普通用户安装软件的方式保证系统的安全和一致性。有了AppImage,系统将保持完整,因为用户不必安装应用程序来运行它们。

通用跨发行版的软件包格式是在Linux生态系统中构建和分发软件的下一代技术。然而,传统的包管理系统仍然占据着一席之地。

原文链接:https://www.linuxrumen.com/rmxx/1815.html

【责任编辑:赵宁宁 TEL:(010)68476606】

点赞 0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/327661.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java IO: 管道

转载自 Java IO: 管道 译文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197gmail.com) Java IO中的管道为运行在同一个JVM中的两个线程提供了通信的能力。所以管道也可以作为数据源以及目标媒介。 你不能利用管道与不同的JVM中的线程通信(不同的进程)。在概念上&#xf…

springboot yml里面配置list 日期日期格式的postMen 发送json

Value("#{${ipWhiteList.ips}.split(,)}") List<String> ipList; ipWhiteList:ips: 10.0.0.2,127.0.0.1日期个是的postMen 发送json { "multiple": 39, "tenantNo": 39, "endCheckNum": 39, "meterNo&qu…

Ajax基本案例详解之$.get的实现

前面我已经写过一篇ajax的$.ajax的实现了&#xff0c;其中html&#xff0c;css&#xff0c;doindex.jsp里面已经详细列出来了&#xff0c;这篇主要写的是$.get()的实现&#xff0c;其中html&#xff0c;css&#xff0c;doindex.jsp都和Ajax基本案例详解之$.get的实现 里面的…

Java IO: 文件

转载自 Java IO: 文件 译文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197gmail.com) 在Java应用程序中&#xff0c;文件是一种常用的数据源或者存储数据的媒介。所以这一小节将会对Java中文件的使用做一个简短的概述。这篇文章不会对每一个技术细节都做出解释&#xf…

SpringBoot运行原理初探

运行原理初探 其中它主要是依赖一个父项目&#xff0c;主要是管理项目的资源过滤及插件&#xff01; <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.5.RELEASE&…

一款全新的基于IntelliJ和ReSharper的跨平台.NET IDE

JetBrains Rider在今年一月份露面&#xff0c;后来的大部分时间被用在了内部早期预览版上&#xff0c;还没有为公开发布做好准备。而现在&#xff0c;我们可以下载早期预览版&#xff0c;并感受在IntelliJ平台上开发.NET是一种什么体验。早期预览版还存在一些问题&#xff0c;不…

mysql自动插入的时间不对 差8小时

MySQL插入时间差八小时问题的解决方法 更新时间&#xff1a;2019年12月15日 10:19:12 转载 作者&#xff1a;lankeren 这篇文章主要给大家介绍了关于MySQL插入时间差八小时问题的解决方法&#xff0c;文中通过示例代码介绍的非常详细&#xff0c;对大家学习或者使用MySQL具…

Ajax基本案例详解之$.post的实现

Ajax的post实现&#xff1a; 看这篇之前建议大家去看看前面两篇文章&#xff1a; 1.Ajax基本案例详解之$.ajax的实现 2.Ajax基本案例详解之$.get的实现 现在写一下$.post()里面的主要内容&#xff1a; $.post("doindex.jsp","email"$("#emai…

windows为什么把linux打败了,快二十年了,人们为什么还是没有抛弃 Windows 转向 Linux?...

原标题&#xff1a;快二十年了&#xff0c;人们为什么还是没有抛弃 Windows 转向 Linux&#xff1f;自伟大的 Linux 操作系统诞生以来&#xff0c; 许多网友都试图列举出 Linux 可能是更好选择的具体原因 &#xff0c;其中包括&#xff1a;Linux 上的更新速度很快&#xff0c;“…

Java IO 概述

转载自 Java IO 概述 译文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197gmail.com) 校对&#xff1a;方腾飞 在这一小节&#xff0c;我会试着给出Java IO(java.io)包下所有类的概述。更具体地说&#xff0c;我会根据类的用途对类进行分组。这个分组将会使你在未来的工…

ASP.NET Core WebListener 服务器

WebListener是一个只能运行在Windows上的ASP.NET Core web服务器&#xff0c;基于Http.Sys内核模块驱动构建。在不借助IIS作为反向代理服务器的情况下&#xff0c;WebListener可以替代Kestrel用来与直接与互联网相连。实际上&#xff0c;WebListener不能和IIS或IIS Express一起…

git删除本地分支、删除远程分支 复制分支

git删除本地分支、删除远程分支 It_BeeCoder 2019-05-15 09:47:20 80268 收藏 15 展开 https://blog.csdn.net/lihua5419/article/details/81706905 1、查看所有分支 git branch -a 2、查看当前所在分支 git branch 3、删除本地的bug_xzx分支 git branch -d bug_xzx 4…

kotlin能用嵌入式linux,Kotlin在项目中的应用和踩过的坑

应用空类型安全Kotlin引入了可空类型(用&#xff1f;标识)&#xff0c;在编译期杜绝了可空类型直接调用方法的可能。var a: String "abc"a null // 编译错误var b: String? "abc"b null // okval l a.lengthval l b.length // 错误&#xff1a;变量…

ASP.NET Core的Kestrel服务器

Kestrel是一个基于libuv的跨平台ASP.NET Core web服务器&#xff0c;libuv是一个跨平台的异步I/O库。ASP.NET Core模板项目使用Kestrel作为默认的web服务器。 Kestrel支持以下功能&#xff1a; HTTPS用于启用不透明升级的WebSockets位于Nginx之后的高性能Unix sockets Kestrel …

RandomAccessFile

转载自 RandomAccessFile RandomAccessFile是用来访问那些保存数据记录的文件的&#xff0c;你就可以用seek( )方法来访问记录&#xff0c;并进行读写了。这些记录的大小不必相同&#xff1b;但是其大小和位置必须是可知的。但是该类仅限于操作文件。 RandomAccessFile不属于I…

JSR303常见参数

常见参数 NotNull(message "名字不能为空")private String userName;Max(value 120, message "年龄最大不能查过120")private int age;Email(message "邮箱格式错误")private String email;空检查Null 验证对象是否为nullNotNull 验证对象是…

解决:Could not find metadata org.apache.maven.plugins:maven-archetype-plugin/maven-metadata.xml in loc

我的方法 1.电脑可以Google 你要开启那个小飞机 2.笔记本连接手机热点 3.重新操作秒下下来 总结&#xff1a; 公司的网太差 &#xff0c; 也有可能做了外网访问的限制 下面是一个大神的方法 https://blog.csdn.net/Ajax_mt/article/details/81870086 解决:Could n…

Linux 临时表空间满了,Temporary表空间100%解决方案

说明&#xff1a;temp表空间的TS# 为 3*, So TS# 1 4一下是摘自Metalink的说明The DROP_SEGMENTS event~~~~~~~~~~~~~~~~~~~~~~~Available from 8.0 onwards.DESCRIPTIONFinds all the temporary segments in a tablespace which are notcurrently locked and drops them.For t…