尝试在我自己的计算机上构建铬时出错

时间:2021-03-16 12:34:08

标签: python-2.7 build chromium ninja

现在,我正在按照 https://chromium.googlesource.com/chromium/src/+/master/docs/linux/build_instructions.md#Build-Chromium 上的说明在自己的计算机上构建 Chromium

一开始很顺利。但是当我跑

$ autoninja -C out/Default chrome

当我运行它开始构建时。它开始了。然后发生错误并终止构建过程。

错误是 NameError: name 'unicode' is not defined" 并且我知道这是与 python2 和 python3 之间的差异相关的常见错误。

然而,我不知道如何让忍者只使用python2并避免这个错误。

如果您能帮助我,我将不胜感激。

2 个答案:

答案 0 :(得分:1)

我最近在尝试构建基于铬的 Brave 浏览器时遇到了这个问题。似乎chromium build 基于python2,这很好,但在脚本中使用了对“python”的简单调用。显然,基本上所有现代发行版都在 PATH 中的 python 处放置了一个指向 python3 的符号链接(通常是 /usr/bin/python -> /usr/bin/python3)。我还保留着希望有办法在构建系统中配置“python路径”,但是没有找到,我对ninja也不太熟悉。

我“解决”这个问题并成功构建的第一种方法是我认为是一种黑客方法,如果没有规定它会使您的系统损坏,因此不推荐作为解决方案,因此不要运行太多其他东西。这是手动临时更新符号链接。假设您的系统上同时有 /usr/bin/python2 和 /usr/bin/python3,请删除 /usr/bin/python 中的符号链接并将其替换为一个到 python2:

sudo rm /usr/bin python
sudo ln -s /usr/bin/python2 /usr/bin/python

然后您可以运行铬构建,并在完成后撤销上述更改。请注意,在此期间,系统上任何需要 python3 位于符号链接 python 的内容都无法运行。我已经成功地使用这种技术来构建 Brave(然后在构建完成后撤销更改)。

我也可以为您提供一些其他选择。一种是设置pyenv。如果你搜索它,你会发现它是一个套件,它允许你管理多个 python 版本并让不同的目录使用不同的目录。我研究过这个,并认为它可以工作,但我自己没有做过。

我目前正在进行的下一个选项基本上是 pyenv 所做的手动淡化版本。我会让你知道它是怎么回事。本质是在路径中添加一个符号链接,该符号链接将重定向该 shell 实例(及其创建的所有子 shell)的 python 调用。假设您直接位于明显路径的源代码中:

mkdir .shims
ln -s /usr/bin/python2 .shims/python
export PATH=/home/yourname/src/Chromium/.shims:$PATH
python --version

这应该打印出您拥有的任何版本的 python2 而不是 python。每当您回到这里工作时,您都必须再次导出新的 PATH。系统的其余部分不受影响,仍然可以在 python 中找到 python3。您可以打开一个新终端并输入 python --version 进行验证。

答案 1 :(得分:0)

我在 Fedora 33 上构建了 Chromium。在 Chromium 构建的某个地方,/usr/bin/python 正在显式运行。在 Fedora 上,这意味着 Python 3。

如果您将 /usr/bin/python 更改为指向 python2.7,我敢打赌您的构建会起作用。

无法为“python”创建别名。

如果可行,请考虑使用替代命令轻松更改 /usr/bin/python:

alternatives command for /usr/bin/python