我正在尝试从 Ubuntu 22.04 上的 repo 构建 netplan 包,但目前还没有成功。
由于我在互联网上找不到相关来源,因此我使用 chatGPT 来指导我完成构建过程。
这是我尝试过的:
# Install Dependencies
sudo apt update
sudo apt install -y git meson python3-pip python3-yaml python3-jsonschema python3-setuptools pkg-config libglib2.0-dev cmake ninja-build libyaml-dev libsystemd-dev python3-pyflakes python3-pycodestyle pycodestyle python3-pytest python3-coverage python3-cffi libcmocka-dev pandoc
# Specify PYTHONPATH (used by netplan)
echo 'export PYTHONPATH=/usr/lib/python3.10/dist-packages:$PYTHONPATH' >> ~/.bashrc
source ~/.bashrc
# Clone from repo
cd ~ && git clone https://github.com/canonical/netplan.git
cd netplan
# Build the package
meson setup build
cd build
ninja
sudo ninja install
但是,当我尝试获取构建的 netplan 版本时,出现了以下问题:
> netplan --version
Traceback (most recent call last):
File "/usr/local/sbin/netplan", line 20, in <module>
from netplan_cli import Netplan
File "/usr/local/share/netplan/netplan_cli/__init__.py", line 18, in <module>
from .cli.core import Netplan
File "/usr/local/share/netplan/netplan_cli/cli/core.py", line 24, in <module>
from . import utils
File "/usr/local/share/netplan/netplan_cli/cli/utils.py", line 28, in <module>
from ..configmanager import ConfigurationError
File "/usr/local/share/netplan/netplan_cli/configmanager.py", line 21, in <module>
import netplan
ModuleNotFoundError: No module named 'netplan'
PS:我尝试构建 netplan 的原因是为了获取虚拟设备。有关更多信息,请查看此内容。
在 netplan 0.107 中添加了虚拟设备。这是为 Ubuntu 准备的,但未被纳入
jammy
其更新包中。相反,这个包位于jammy-proposed
Ubuntu 22.04 的队列中,自 2024 年 10 月以来一直没有移动过。但是,我们仍然可以在系统中启用建议的软件包,并在需要时有选择地从中安装(例如 Netplan 的情况)。这还可以节省您手动编译软件包及其源代码的时间。
首先,在您的系统中启用建议的存储库。将其添加到文件中
/etc/apt/sources.list.d/ubuntu-proposed.list
:接下来,特别设置限制,除非您指定,否则不会自动使用建议的软件包。这样,您就不会因为建议的、未经测试的、未发布的更新而破坏您的系统。
运行标准更新过程来刷新您的存储库列表,这也将提取“建议”中可用的软件包列表。
在您的系统中安装建议的版本
netplan.io
以及它想要从建议的版本中提取的任何依赖项。重新启动系统。
dummy-devices
现在尝试使用定义。免责声明:我尚未测试建议的软件包,并且建议的软件包似乎尚未通过作为 Jammy 中的官方软件包升级发布所需的标准测试流程。为此,如果您对这个较新版本的 Netplan 有疑问,则需要降级回正常使用的版本
jammy-security
,jammy-updates
然后放弃使用虚拟设备。