当前位置: 首页 > 面试题库 >

检查Linux发行版名称

太叔马鲁
2023-03-14
问题内容

我必须从Python脚本获取Linux发行版名称。dist平台模块中有一个方法:

import platform
platform.dist()

但是在我的Arch Linux下,它返回:

>>> platform.dist()
('', '', '')

为什么?我如何获得名字?

PS。我必须检查发行版是否基于Debian。

更新:我在这里找到Python网站,从2.6开始不推荐使用dist()。

>>> platform.linux_distribution()
('', '', '')

问题答案:

这对我在Ubuntu上有效:

('Ubuntu', '10.04', 'lucid')

然后strace,我通常会找出平台模块到底是做什么来找到发行版的,这就是这一部分:

open("/etc/lsb-release", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=102, ...}) = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=102, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb76b1000
read(3, "DISTRIB_ID=Ubuntu\nDISTRIB_RELEAS"..., 8192) = 102
read(3, "", 4096)                       = 0
read(3, "", 8192)                       = 0
close(3)                                = 0

因此,其中/etc/lsb-release包含此信息,这些信息来自Ubuntu的Debian基本文件包。



 类似资料:
  • 我目前正在使用vagrant配置一个vm,需要设置ase sybase。我在Ubuntu12.0.4 LTS上没有运气,因为glibc不兼容。 以下url列出了我可用的vm linux发行版: 没有红帽发行版,而是一个科学的linux 6发行版。 有没有人能告诉我,让ase sybase运行的最佳机会是什么。 我试图使用的ase sybase版本在这里找到: http://www.sybase.c

  • 我得到: 但是当我键入: 控制台没有返回任何内容,并且卡在“java模式”中,感觉就像称为java的命令及其等待我的输入一样,我键入的任何内容都不会返回任何内容...直到我键入 crt C 它退出模式...

  • 问题内容: 我已经准备了一个应用程序和网站,客户可以在该应用程序上为其设置几个选项,然后再下载。设置以二进制格式存储在文件的末尾(附加),然后将已编辑的文件发送给最终用户。问题是文件的“内容”的更改将破坏文件签名- 是否有任何机会使用任何命令行工具重新签名此更改的文件?我尝试使用Microsoft的SignTool,但在Linux上无法正常工作。 问题答案: 使用的signtool 实际上很简单;

  • 主要内容:1) Red Hat Linux,2) Ubuntu Linux,3) SuSE Linux,4) Gentoo Linux,5) 其他 Linux 发行版,Linux 发行版本的选择新手往往会被 Linux 众多的发行版本搞得一头雾水,我们首先来解释一下这个问题。 从技术上来说,李纳斯•托瓦兹开发的 Linux 只是一个内核。内核指的是一个提供设备驱动、文件系统、进程管理、网络通信等功能的系统软件,内核并不是一套完整的操作系统,它只是操作系统的核心。一些组织或厂商将 Linux 内核

  • 本文向大家介绍GNU/Linux 检测您正在使用的基于Debian的发行版,包括了GNU/Linux 检测您正在使用的基于Debian的发行版的使用技巧和注意事项,需要的朋友参考一下 示例 只需执行lsb_release -a。 在Debian上: 在Ubuntu上: 如果未lsb_release安装,则可能需要尝试一些猜测,例如,有一个文件/etc/issue通常包含发行版名称。例如,在ubun