一尘不染

检查Linux发行版名称

linux

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

import platform
platform.dist()

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

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

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

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


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

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

阅读 273

收藏
2020-06-03

共1个答案

一尘不染

这对我在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基本文件包。

2020-06-03