我正在尝试在 Ubuntu 16.04 中重新编译 Firefox 57(目标是添加几个补丁)。
我正在执行通常的程序:
sudo apt-get source firefox
sudo apt-get build-dep firefox
cd firefox-57.0.1+build2/
debuild -us -uc
在 build-dep 阶段我收到以下错误:
The following packages have unmet dependencies:
builddeps:firefox : Depends: cargo (>= 0.20)
Depends: rustc (>= 1.19.0)
E: Unable to correct problems, you have held broken packages.
我拥有 xenial 的所有标准存储库(包括universe
、multivers
),但没有这样的包。最新版本rustc
是 1.17。
我试过:
- 在本地安装新的 rustc 和 cargo,并通过以下方式将其路径传递到 debuild
--prepend-path
- 使用 全局安装 rustc 和 cargo
ppa:jonathonf/rustlang
。 - 从 ppa:ubuntu-mozilla-security/ppa 安装 rustc、cargo 和 clang/llvm。
但是我收到一个编译错误:
/home/idavydov/src/ff/firefox-57.0.1+build2/obj-x86_64-linux-gnu/dist/include/mozilla/Compiler.h:49:12: fatal error: 'cstddef' file not found, err: true
/home/idavydov/src/ff/firefox-57.0.1+build2/obj-x86_64-linux-gnu/dist/include/mozilla/mozalloc.h:16:12: fatal error: 'new' file not found, err: true
/home/idavydov/src/ff/firefox-57.0.1+build2/obj-x86_64-linux-gnu/dist/include/mozilla/mozalloc.h:16:12: fatal error: 'new' file not found, err: true
...
stack backtrace:
0: 0x5584a7075fb3 - std::sys::imp::backtrace::tracing::imp::unwind_backtrace::h8ed7485deb8ab958
at /checkout/src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:49
1: 0x5584a7072520 - std::sys_common::backtrace::_print::h3d4f9ea58578e60f
at /checkout/src/libstd/sys_common/backtrace.rs:69
...
11: 0x5584a707aa9b - std::sys::imp::thread::Thread::new::thread_start::hbaf1b5aa1ca8e3ea
at /checkout/src/liballoc/boxed.rs:736
at /checkout/src/libstd/sys_common/thread.rs:24
at /checkout/src/libstd/sys/unix/thread.rs:90
12: 0x2b1467a296b9 - start_thread
13: 0x2b1467f5c3dc - clone
14: 0x0 - <unknown>
在ubuntu xenial中重建firefox 57 deb需要什么样的编译环境?
答案1
我设法解决了这个问题。有两个问题:
没有针对 build-dep 的软件包
正确的方法是添加相关的 ppa:
sudo apt-get source firefox
sudo add-apt-repository ppa:ubuntu-mozilla-security/ppa
sudo apt-get update
sudo apt-get build-dep firefox
cd firefox-57.0.1+build2/
debuild -uc -us -b
编译错误
这很可能与磁盘上的可用空间有关。Firefox需要30GB 的可用空间和至少 2GB 的 RAM 来编译。我在另一台具有大量资源的机器上尝试过,运行良好。