在最新的Ubuntu Docker容器中找不到lsb_release命令。

147

我只是想快速测试一些东西。所以我运行了一个Docker容器,并想检查我正在运行哪个版本:

$ docker run -it ubuntu    
root@471bdb08b11a:/# lsb_release -a
bash: lsb_release: command not found
root@471bdb08b11a:/# 

所以我尝试安装它(像这里建议的那样:suggested here):

root@471bdb08b11a:/# apt install lsb_release
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package lsb_release
root@471bdb08b11a:/# 

有人知道为什么这不起作用吗?


18
命令是 lsb_release(带下划线),但安装的软件包是 lsb-release(带连字符)。 - RubenLaguna
1
@RubenLaguna 我想知道是谁认为拥有两个不同的名称是一个好主意... - Black
6个回答

243

看起来 lsb_release 没有安装。

您可以通过以下方式进行安装:

apt-get update && apt-get install -y lsb-release && apt-get clean all

3
我只需要安装lsb-release软件包。lsb-core也可以,但它会带来一大堆我不需要的依赖关系。 - CodeMouse92
20
这就是我喜欢Linux的原因——黑魔法让你需要输出好几行才能看到操作系统的版本! - Alexander Christov
18
如果您不想按照推荐的方式进行操作,可以运行uname --all查看内核版本或cat /etc/os-release查看发行版信息。 - smac89
39
值得注意的是,命令是 lsb_release(带下划线),但要安装的软件包是 lsb-release(带连字符)。 - RubenLaguna
这并没有解决问题。 - Dmitriy Ogureckiy

21

只需使用cat /etc/os-release命令即可显示操作系统的详细信息。

来自Debian的屏幕截图。

在此输入图片描述

来自Ubuntu的屏幕截图。

在此输入图片描述

来自Fedora的屏幕截图。

在此输入图片描述


6

这个错误可能是因为在Ubuntu 16.04中卸载或升级了默认的Python3程序版本而导致的。

纠正此错误的方法是重新安装随Ubuntu一起安装的原始Python3版本,然后再次链接。(在Ubuntu 16.04中,默认的Python3版本是Python 3.5)

sudo rm /usr/bin/python3
sudo ln -s /usr/bin/python3.5 /usr/bin/python3

我会小心地处理 /usr/bin/python3 中的潜在符号链接。你真的应该使用 sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 35 #或者其他优先级。话虽如此,我的存在于那里,但 shebang 是用于 python 而不是 python3。 - DeadlyChambers

2

lsb_release.py 存放在 /usr/share/pyshared ,对我来说看起来不像是与 python3.6 及以上版本有关的。

我发现下面的命令可以在后续 Python 安装中创建一个链接,指向这个 /usr/share 脚本:

sudo ln -s /usr/share/pyshared/lsb_release.py /usr/lib/python3.9/site-packages/lsb_release.py

1

如果您在Fedora或Redhat上处理“lsb_release:command not found”错误,需要安装的软件包是redhat-lsb-core,因此运行sudo dnf install redhat-lsb-core


0

编写 Dockerfile 时,我们可以添加 lsb-release 包 - 像这样

RUN apt-get update -y \
    && apt-get upgrade -y \
    && apt-get install lsb-release -y \
    && apt-get clean all

假设操作系统是Ubuntu。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接