所以你坐在你的计算机上,当你注意到有许多文件的扩展名为noarch时,你正在搜索软件存储库寻找要安装的东西。
什么是Noarch和为什么这么多文件有这个扩展名?
noarch基本上不代表架构。
此时,您可能想知道为什么有人打算创建一个不适用于任何架构的软件包。
noarch这个术语实际上意味着没有特定的架构,或者如果你愿意,所有的架构。
这怎么可能? 一个软件包怎么可能在所有版本的Linux,Windows和其他操作系统上运行。
那么,一开始并不是所有包都包含应用程序。 例如,应用程序gnome-backgrounds.arch是桌面背景的集合。 虽然该软件包是为Gnome桌面环境开发的,但它实际上只是一个图像集合,而图像是以通用格式创建的,可以在任何现代操作系统上使用。
因此,您可以将noarch包视为任何真正具有普遍性的内容,如背景,图标甚至手册。
Noarch包也可以包含脚本,程序和应用程序,但它们必须包含真正跨平台的文件。
什么样的程序真的是跨平台的?
以HTML,JavaScript和CSS开发的Web应用程序是普遍的,就像PHP,PERL和Python脚本语言一样。
编译的程序不能被认为是noarch,因为它们被编译为在特定的体系结构上工作。 因此C和C ++二进制文件将不会在noarch文件中找到。 这个规则的例外是Java程序,因为Java是真正的跨平台,为一个Linux发行版和体系结构编写的Java应用程序也应该在其他Linux平台和Windows上工作。
现在你可能会认为源代码可以保存为noarch包,因为它可以跨平台编译,并且只是特定架构特有的二进制文件。 源代码包实际上是以src扩展名存储的。
Noarch文件通常与RPM软件包相关联。
很有可能您的计算机上已经安装了许多RPM noarch软件包。
要找出安装了哪个noarch软件包,请运行以下命令:
rpm -qa --qf“%{N} - %{V} - %{R} \ t \ t%{ARCH} \ n”| grep noarch | 更多
上述命令可以细分如下:
- rpm是软件包管理器
- -q代表查询
- -a代表所有
- --qf代表查询格式
- rpm命令的输出作为grep的输入来寻找noarch
- 更多使输出停止在一页数据的末尾,您可以按空格移动到下一页
在我自己的计算机上查看上述命令的输出,我可以看到许多字体包,固件包,文档,背景,图标和主题。
然而,一个警告的话。 仅仅因为某些东西被封装为noarch,将这个包中的文件复制到其他计算机并不希望它们工作。
例如,如果您有一台计算机使用RPM软件包管理器运行Fedora,而另一台计算机使用DEB文件格式运行Debian,则在从Fedora计算机上复制文件之前,在Debian上查找相应的软件包是有意义的。