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…

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

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

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

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

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

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

Java IO 概述

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

ASP.NET Core WebListener 服务器

WebListener是一个只能运行在Windows上的ASP.NET Core web服务器,基于Http.Sys内核模块驱动构建。在不借助IIS作为反向代理服务器的情况下,WebListener可以替代Kestrel用来与直接与互联网相连。实际上,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…

ASP.NET Core的Kestrel服务器

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

RandomAccessFile

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

JSR303常见参数

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

ASP.NET Core服务器综述

ASP.NET Core应用通过一个进程内的HTTP服务器实例实现运行,这个服务器实例侦听HTTP请求并将请求作为组成HttpContext的一组请求功能集暴露给我们的应用程序。 ASP.NET Core搭载两个服务器实现: Kestrel是一个基于libuv的跨平台HTTP服务器,lib…

linux中usb设备名,Linux 中识别 USB 设备名字的 4 种方法

摘要: 对于初学者来说,在 Linux 系统里你必须掌握的技术之一就是识别出插入系统里的各种设备。这也许是你的系统硬盘、外部的存储设备或者是可移动设备,比如 USB 设备或 SD 闪存卡等。 现如今,使用 USB 设备来传输文件是十分常见的…

探究Java File类中list()、listFiles()的使用及区别,认识和使用匿名内部类

转载自 探究Java File类中list()、listFiles()的使用及区别,认识和使用匿名内部类 内容概要: 1、认识File类; 2、File的构造函数; 3、list()及其重载方法的使用,匿名内部类的两种使用方式; 4、list…

自动配置原理---SpringBoot

自动配置原理 配置文件到底能写什么?怎么写? SpringBoot官方文档中有大量的配置,我们无法全部记住 分析自动配置原理 我们以**HttpEncodingAutoConfiguration(Http编码自动配置)**为例解释自动配置原理;…

Docker 部署dotnetcore

安装docker 系统还是之前centos 7.1 https://www.docker.com/products/docker#/linux yum update 创建源: /etc/yum.repos.d/docker.repo tee /etc/yum.repos.d/docker.repo <<-EOF [dockerrepo] nameDocker Repository baseurlhttps://yum.dockerproject.org/repo/main/…

虚拟机安装windows ghost版本系统记录完整过程

重点 1.磁盘一定要分成2个 2.直接安装第一个盘 就是进入CD后选1 自动安装 https://blog.csdn.net/hanzl1/article/details/79298787 虚拟机安装windows ghost版本系统记录完整过程 NO如果 2018-02-09 15:26:08 15193 收藏 5 分类专栏&#xff1a; windows 虚拟机 版权 …

linux下kill指令默认信号,Linux基础命令之kill命令

相信大家在使用Linux的过程中都会遇到过某个程序出错导致系统锁死的情况&#xff0c;按照常规的思维我们会通过重启来重新启动系统。然而事实上在Linux中并不需要进行重启就能够完成出错程序的关闭操作。在Linux中我们可以通过使用"kill"命令来强制终结它。那么到底它…