blob: ef4c354e12e130422efeff05340e337a93ad36e8 [file] [log] [blame] [view]
dpranke0ae7cad2016-11-30 07:47:581# Checking out and building Chromium on Linux
andybons3322f762015-08-24 21:37:092
Victor Costan44af72b2017-11-13 20:01:303There are instructions for other platforms linked from the
Nicolas Norvezba040062020-01-15 01:17:264[get the code](../get_the_code.md) page.
dpranke1a70d0c2016-12-01 02:42:295
dpranke1a70d0c2016-12-01 02:42:296## Instructions for Google Employees
7
8Are you a Google employee? See
9[go/building-chrome](https://goto.google.com/building-chrome) instead.
andybons8c02a1f2015-09-04 17:02:3210
dpranke0ae7cad2016-11-30 07:47:5811[TOC]
andybonsad92aa32015-08-31 02:27:4412
dpranke0ae7cad2016-11-30 07:47:5813## System requirements
andybonsad92aa32015-08-31 02:27:4414
dpranke0ae7cad2016-11-30 07:47:5815* A 64-bit Intel machine with at least 8GB of RAM. More than 16GB is highly
16 recommended.
17* At least 100GB of free disk space.
Mike Taylorfe7d72e2021-10-11 15:03:1118* You must have Git and Python v3.6+ installed already (and `python3` must point
19 to a Python v3.6+ binary).
andybons3322f762015-08-24 21:37:0920
Johann112b198b2021-07-01 00:25:3321Most development is done on Ubuntu (currently 18.04, Bionic Beaver). There are
dpranke0ae7cad2016-11-30 07:47:5822some instructions for other distros below, but they are mostly unsupported.
andybons3322f762015-08-24 21:37:0923
dpranke0ae7cad2016-11-30 07:47:5824## Install `depot_tools`
andybonsad92aa32015-08-31 02:27:4425
sdy93387fa2016-12-01 01:03:4426Clone the `depot_tools` repository:
andybons3322f762015-08-24 21:37:0927
sdy93387fa2016-12-01 01:03:4428```shell
29$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
30```
andybonsad92aa32015-08-31 02:27:4431
sdy93387fa2016-12-01 01:03:4432Add `depot_tools` to the end of your PATH (you will probably want to put this
33in your `~/.bashrc` or `~/.zshrc`). Assuming you cloned `depot_tools` to
34`/path/to/depot_tools`:
andybonsad92aa32015-08-31 02:27:4435
sdy93387fa2016-12-01 01:03:4436```shell
37$ export PATH="$PATH:/path/to/depot_tools"
38```
andybons3322f762015-08-24 21:37:0939
Claudio DeSouzaae44ac12018-02-13 16:11:4540When cloning `depot_tools` to your home directory **do not** use `~` on PATH,
41otherwise `gclient runhooks` will fail to run. Rather, you should use either
42`$HOME` or the absolute path:
43
44```shell
45$ export PATH="$PATH:${HOME}/depot_tools"
46```
47
dpranke0ae7cad2016-11-30 07:47:5848## Get the code
andybonsad92aa32015-08-31 02:27:4449
sdy93387fa2016-12-01 01:03:4450Create a `chromium` directory for the checkout and change to it (you can call
51this whatever you like and put it wherever you like, as long as the full path
52has no spaces):
53
54```shell
55$ mkdir ~/chromium && cd ~/chromium
56```
andybons3322f762015-08-24 21:37:0957
dpranke0ae7cad2016-11-30 07:47:5858Run the `fetch` tool from depot_tools to check out the code and its
59dependencies.
andybonsad92aa32015-08-31 02:27:4460
sdy93387fa2016-12-01 01:03:4461```shell
62$ fetch --nohooks chromium
63```
andybonsad92aa32015-08-31 02:27:4464
dpranke0ae7cad2016-11-30 07:47:5865If you don't want the full repo history, you can save a lot of time by
sdy93387fa2016-12-01 01:03:4466adding the `--no-history` flag to `fetch`.
andybons3322f762015-08-24 21:37:0967
dpranke0ae7cad2016-11-30 07:47:5868Expect the command to take 30 minutes on even a fast connection, and many
69hours on slower ones.
andybonsad92aa32015-08-31 02:27:4470
dpranke0ae7cad2016-11-30 07:47:5871If you've already installed the build dependencies on the machine (from another
sdy93387fa2016-12-01 01:03:4472checkout, for example), you can omit the `--nohooks` flag and `fetch`
dpranke0ae7cad2016-11-30 07:47:5873will automatically execute `gclient runhooks` at the end.
andybons3322f762015-08-24 21:37:0974
sdy93387fa2016-12-01 01:03:4475When `fetch` completes, it will have created a hidden `.gclient` file and a
76directory called `src` in the working directory. The remaining instructions
77assume you have switched to the `src` directory:
andybons3322f762015-08-24 21:37:0978
sdy93387fa2016-12-01 01:03:4479```shell
80$ cd src
81```
andybons3322f762015-08-24 21:37:0982
dpranke0ae7cad2016-11-30 07:47:5883### Install additional build dependencies
andybons3322f762015-08-24 21:37:0984
dpranke0ae7cad2016-11-30 07:47:5885Once you have checked out the code, and assuming you're using Ubuntu, run
86[build/install-build-deps.sh](/build/install-build-deps.sh)
andybons3322f762015-08-24 21:37:0987
Aaron Gable3bc93682019-01-11 02:16:0788```shell
89$ ./build/install-build-deps.sh
90```
91
dpranke2989a782016-12-02 02:57:1292You may need to adjust the build dependencies for other distros. There are
93some [notes](#notes) at the end of this document, but we make no guarantees
94for their accuracy.
andybonsad92aa32015-08-31 02:27:4495
dpranke0ae7cad2016-11-30 07:47:5896### Run the hooks
andybons3322f762015-08-24 21:37:0997
dpranke0ae7cad2016-11-30 07:47:5898Once you've run `install-build-deps` at least once, you can now run the
sdy93387fa2016-12-01 01:03:4499Chromium-specific hooks, which will download additional binaries and other
dpranke0ae7cad2016-11-30 07:47:58100things you might need:
andybonsad92aa32015-08-31 02:27:44101
sdy93387fa2016-12-01 01:03:44102```shell
103$ gclient runhooks
104```
andybonsad92aa32015-08-31 02:27:44105
sdy93387fa2016-12-01 01:03:44106*Optional*: You can also [install API
107keys](https://www.chromium.org/developers/how-tos/api-keys) if you want your
108build to talk to some Google services, but this is not necessary for most
109development and testing purposes.
andybons3322f762015-08-24 21:37:09110
dpranke1a70d0c2016-12-01 02:42:29111## Setting up the build
andybonsad92aa32015-08-31 02:27:44112
Tom Bridgwatereef401542018-08-17 00:54:43113Chromium uses [Ninja](https://ninja-build.org) as its main build tool along with
Andrew Williamsbbc1a1e2021-07-21 01:51:22114a tool called [GN](https://gn.googlesource.com/gn/+/main/docs/quick_start.md)
Tom Bridgwatereef401542018-08-17 00:54:43115to generate `.ninja` files. You can create any number of *build directories*
116with different configurations. To create a build directory, run:
andybons8c02a1f2015-09-04 17:02:32117
sdy93387fa2016-12-01 01:03:44118```shell
119$ gn gen out/Default
120```
dpranke0ae7cad2016-11-30 07:47:58121
sdy93387fa2016-12-01 01:03:44122* You only have to run this once for each new build directory, Ninja will
123 update the build files as needed.
124* You can replace `Default` with another name, but
125 it should be a subdirectory of `out`.
126* For other build arguments, including release settings, see [GN build
127 configuration](https://www.chromium.org/developers/gn-build-configuration).
dpranke0ae7cad2016-11-30 07:47:58128 The default will be a debug component build matching the current host
129 operating system and CPU.
130* For more info on GN, run `gn help` on the command line or read the
Andrew Williamsbbc1a1e2021-07-21 01:51:22131 [quick start guide](https://gn.googlesource.com/gn/+/main/docs/quick_start.md).
dpranke0ae7cad2016-11-30 07:47:58132
amoylana960fa52016-12-09 22:47:28133### <a name="faster-builds"></a>Faster builds
dpranke0ae7cad2016-11-30 07:47:58134
dpranke2989a782016-12-02 02:57:12135This section contains some things you can change to speed up your builds,
136sorted so that the things that make the biggest difference are first.
137
Fumitoshi Ukaie15fd782019-10-15 05:52:48138#### Use Goma
139
140Google developed the distributed compiler called
141[Goma](https://chromium.googlesource.com/infra/goma/client).
Fumitoshi Ukaie15fd782019-10-15 05:52:48142
Yoshisato Yanagisawab66864e2021-03-11 21:22:48143If you would like to use `Goma` provisioned by Google,
144please follow [Goma for Chromium contributors](https://chromium.googlesource.com/infra/goma/client/+/HEAD/doc/early-access-guide.md).
Fumitoshi Ukaie15fd782019-10-15 05:52:48145
Yoshisato Yanagisawab66864e2021-03-11 21:22:48146If you are a Google employee, see
147[go/building-chrome](https://goto.google.com/building-chrome) instead.
Fumitoshi Ukaie15fd782019-10-15 05:52:48148
dpranke2989a782016-12-02 02:57:12149#### Disable NaCl
150
151By default, the build includes support for
152[Native Client (NaCl)](https://developer.chrome.com/native-client), but
Victor Costan44af72b2017-11-13 20:01:30153most of the time you won't need it. You can set the GN argument
dpranke2989a782016-12-02 02:57:12154`enable_nacl=false` and it won't be built.
155
156#### Include fewer debug symbols
157
158By default GN produces a build with all of the debug assertions enabled
159(`is_debug=true`) and including full debug info (`symbol_level=2`). Setting
160`symbol_level=1` will produce enough information for stack traces, but not
161line-by-line debugging. Setting `symbol_level=0` will include no debug
162symbols at all. Either will speed up the build compared to full symbols.
163
Bruce Dawson63e0be72021-11-29 20:34:41164#### Disable debug symbols for Blink and v8
dpranke2989a782016-12-02 02:57:12165
166Due to its extensive use of templates, the Blink code produces about half
167of our debug symbols. If you don't ever need to debug Blink, you can set
Bruce Dawson63e0be72021-11-29 20:34:41168the GN arg `blink_symbol_level=0`. Similarly, if you don't need to debug v8 you
169can improve build speeds by setting the GN arg `v8_symbol_level=0`.
dpranke2989a782016-12-02 02:57:12170
171#### Use Icecc
172
173[Icecc](https://github.com/icecc/icecream) is the distributed compiler with a
174central scheduler to share build load. Currently, many external contributors use
Fumitoshi Ukaie15fd782019-10-15 05:52:48175it. e.g. Intel, Opera, Samsung (this is not useful if you're using Goma).
dpranke2989a782016-12-02 02:57:12176
177In order to use `icecc`, set the following GN args:
178
179```
dpranke2989a782016-12-02 02:57:12180use_debug_fission=false
181is_clang=false
dpranke2989a782016-12-02 02:57:12182```
183
Victor Costan44af72b2017-11-13 20:01:30184See these links for more on the
dpranke2989a782016-12-02 02:57:12185[bundled_binutils limitation](https://github.com/icecc/icecream/commit/b2ce5b9cc4bd1900f55c3684214e409fa81e7a92),
186the [debug fission limitation](http://gcc.gnu.org/wiki/DebugFission).
187
188Using the system linker may also be necessary when using glibc 2.21 or newer.
189See [related bug](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=808181).
190
191#### ccache
192
193You can use [ccache](https://ccache.samba.org) to speed up local builds (again,
Fumitoshi Ukaie15fd782019-10-15 05:52:48194this is not useful if you're using Goma).
dpranke2989a782016-12-02 02:57:12195
196Increase your ccache hit rate by setting `CCACHE_BASEDIR` to a parent directory
197that the working directories all have in common (e.g.,
198`/home/yourusername/development`). Consider using
199`CCACHE_SLOPPINESS=include_file_mtime` (since if you are using multiple working
200directories, header times in svn sync'ed portions of your trees will be
201different - see
202[the ccache troubleshooting section](http://ccache.samba.org/manual.html#_troubleshooting)
203for additional information). If you use symbolic links from your home directory
204to get to the local physical disk directory where you keep those working
205development directories, consider putting
206
207 alias cd="cd -P"
208
209in your `.bashrc` so that `$PWD` or `cwd` always refers to a physical, not
210logical directory (and make sure `CCACHE_BASEDIR` also refers to a physical
211parent).
212
213If you tune ccache correctly, a second working directory that uses a branch
214tracking trunk and is up to date with trunk and was gclient sync'ed at about the
215same time should build chrome in about 1/3 the time, and the cache misses as
216reported by `ccache -s` should barely increase.
217
Song Fangzhen4b68a6e32021-07-14 05:53:40218This is especially useful if you use
219[git-worktree](http://git-scm.com/docs/git-worktree) and keep multiple local
dpranke2989a782016-12-02 02:57:12220working directories going at once.
221
222#### Using tmpfs
223
224You can use tmpfs for the build output to reduce the amount of disk writes
225required. I.e. mount tmpfs to the output directory where the build output goes:
226
227As root:
228
229 mount -t tmpfs -o size=20G,nr_inodes=40k,mode=1777 tmpfs /path/to/out
230
231*** note
232**Caveat:** You need to have enough RAM + swap to back the tmpfs. For a full
233debug build, you will need about 20 GB. Less for just building the chrome target
234or for a release build.
235***
236
237Quick and dirty benchmark numbers on a HP Z600 (Intel core i7, 16 cores
238hyperthreaded, 12 GB RAM)
239
240* With tmpfs:
241 * 12m:20s
242* Without tmpfs
243 * 15m:40s
244
dpranke0ae7cad2016-11-30 07:47:58245## Build Chromium
246
247Build Chromium (the "chrome" target) with Ninja using the command:
248
sdy93387fa2016-12-01 01:03:44249```shell
Max Morozf5b31fcd2018-08-10 21:55:48250$ autoninja -C out/Default chrome
sdy93387fa2016-12-01 01:03:44251```
dpranke0ae7cad2016-11-30 07:47:58252
Dirk Pranke8bd55f22018-10-24 21:22:10253(`autoninja` is a wrapper that automatically provides optimal values for the
254arguments passed to `ninja`.)
Max Morozf5b31fcd2018-08-10 21:55:48255
sdy93387fa2016-12-01 01:03:44256You can get a list of all of the other build targets from GN by running `gn ls
257out/Default` from the command line. To compile one, pass the GN label to Ninja
Max Morozf5b31fcd2018-08-10 21:55:48258with no preceding "//" (so, for `//chrome/test:unit_tests` use `autoninja -C
sdy93387fa2016-12-01 01:03:44259out/Default chrome/test:unit_tests`).
dpranke0ae7cad2016-11-30 07:47:58260
261## Run Chromium
262
263Once it is built, you can simply run the browser:
264
sdy93387fa2016-12-01 01:03:44265```shell
266$ out/Default/chrome
267```
dpranke0ae7cad2016-11-30 07:47:58268
269## Running test targets
270
271You can run the tests in the same way. You can also limit which tests are
272run using the `--gtest_filter` arg, e.g.:
273
sdy93387fa2016-12-01 01:03:44274```shell
dpranke1a70d0c2016-12-01 02:42:29275$ out/Default/unit_tests --gtest_filter="PushClientTest.*"
sdy93387fa2016-12-01 01:03:44276```
dpranke0ae7cad2016-11-30 07:47:58277
278You can find out more about GoogleTest at its
279[GitHub page](https://github.com/google/googletest).
280
281## Update your checkout
282
283To update an existing checkout, you can run
284
sdy93387fa2016-12-01 01:03:44285```shell
286$ git rebase-update
287$ gclient sync
288```
dpranke0ae7cad2016-11-30 07:47:58289
290The first command updates the primary Chromium source repository and rebases
sdy93387fa2016-12-01 01:03:44291any of your local branches on top of tip-of-tree (aka the Git branch
Andrew Williamsbbc1a1e2021-07-21 01:51:22292`origin/main`). If you don't want to use this script, you can also just use
sdy93387fa2016-12-01 01:03:44293`git pull` or other common Git commands to update the repo.
dpranke0ae7cad2016-11-30 07:47:58294
sdy93387fa2016-12-01 01:03:44295The second command syncs dependencies to the appropriate versions and re-runs
296hooks as needed.
dpranke0ae7cad2016-11-30 07:47:58297
298## Tips, tricks, and troubleshooting
andybons3322f762015-08-24 21:37:09299
300### Linker Crashes
andybonsad92aa32015-08-31 02:27:44301
andybons3322f762015-08-24 21:37:09302If, during the final link stage:
andybonsad92aa32015-08-31 02:27:44303
sdy93387fa2016-12-01 01:03:44304```
305LINK out/Debug/chrome
306```
andybonsad92aa32015-08-31 02:27:44307
andybons3322f762015-08-24 21:37:09308You get an error like:
andybons3322f762015-08-24 21:37:09309
sdy93387fa2016-12-01 01:03:44310```
311collect2: ld terminated with signal 6 Aborted terminate called after throwing an instance of 'std::bad_alloc'
312collect2: ld terminated with signal 11 [Segmentation fault], core dumped
313```
andybonsad92aa32015-08-31 02:27:44314
brettwc25693b32016-05-26 01:11:52315you are probably running out of memory when linking. You *must* use a 64-bit
316system to build. Try the following build settings (see [GN build
317configuration](https://www.chromium.org/developers/gn-build-configuration) for
sdy93387fa2016-12-01 01:03:44318other settings):
andybonsad92aa32015-08-31 02:27:44319
sdy93387fa2016-12-01 01:03:44320* Build in release mode (debugging symbols require more memory):
brettwc25693b32016-05-26 01:11:52321 `is_debug = false`
sdy93387fa2016-12-01 01:03:44322* Turn off symbols: `symbol_level = 0`
323* Build in component mode (this is for development only, it will be slower and
324 may have broken functionality): `is_component_build = true`
andybons3322f762015-08-24 21:37:09325
dpranke0ae7cad2016-11-30 07:47:58326### More links
andybons3322f762015-08-24 21:37:09327
Nicolas Norvezba040062020-01-15 01:17:26328* Information about [building with Clang](../clang.md).
Tom Andersonabdbd6a2020-01-09 16:59:27329* You may want to [use a chroot](using_a_chroot.md) to
dpranke0ae7cad2016-11-30 07:47:58330 isolate yourself from versioning or packaging conflicts.
Tom Anderson93e49e492019-12-23 19:55:37331* Cross-compiling for ARM? See [LinuxChromiumArm](chromium_arm.md).
andybonsad92aa32015-08-31 02:27:44332* Want to use Eclipse as your IDE? See
Tom Anderson93e49e492019-12-23 19:55:37333 [LinuxEclipseDev](eclipse_dev.md).
dpranke0ae7cad2016-11-30 07:47:58334* Want to use your built version as your default browser? See
Tom Anderson93e49e492019-12-23 19:55:37335 [LinuxDevBuildAsDefaultBrowser](dev_build_as_default_browser.md).
andybons3322f762015-08-24 21:37:09336
dpranke2989a782016-12-02 02:57:12337## Next Steps
andybonsad92aa32015-08-31 02:27:44338
339If you want to contribute to the effort toward a Chromium-based browser for
Tom Anderson93e49e492019-12-23 19:55:37340Linux, please check out the [Linux Development page](development.md) for
andybonsad92aa32015-08-31 02:27:44341more information.
dpranke2989a782016-12-02 02:57:12342
343## Notes for other distros <a name="notes"></a>
344
345### Arch Linux
346
347Instead of running `install-build-deps.sh` to install build dependencies, run:
348
349```shell
350$ sudo pacman -S --needed python perl gcc gcc-libs bison flex gperf pkgconfig \
Timothy Gufe67f0b2021-05-20 22:07:04351nss alsa-lib glib2 gtk3 nspr freetype2 cairo dbus libgnome-keyring \
352xorg-server-xvfb xorg-xdpyinfo
dpranke2989a782016-12-02 02:57:12353```
354
355For the optional packages on Arch Linux:
356
357* `php-cgi` is provided with `pacman`
358* `wdiff` is not in the main repository but `dwdiff` is. You can get `wdiff`
359 in AUR/`yaourt`
dpranke2989a782016-12-02 02:57:12360
Kenneth Russell56293772018-09-21 01:46:15361### Crostini (Debian based)
362
David Munro9b5f4c4f2019-07-24 08:23:27363First install the `file` and `lsb-release` commands for the script to run properly:
Kenneth Russell56293772018-09-21 01:46:15364
365```shell
David Munro9b5f4c4f2019-07-24 08:23:27366$ sudo apt-get install file lsb-release
Kenneth Russell56293772018-09-21 01:46:15367```
368
369Then invoke install-build-deps.sh with the `--no-arm` argument,
370because the ARM toolchain doesn't exist for this configuration:
371
372```shell
373$ sudo install-build-deps.sh --no-arm
374```
375
dpranke2989a782016-12-02 02:57:12376### Fedora
377
378Instead of running `build/install-build-deps.sh`, run:
379
380```shell
381su -c 'yum install git python bzip2 tar pkgconfig atk-devel alsa-lib-devel \
382bison binutils brlapi-devel bluez-libs-devel bzip2-devel cairo-devel \
383cups-devel dbus-devel dbus-glib-devel expat-devel fontconfig-devel \
Tom Anderson287339e2018-08-22 21:52:02384freetype-devel gcc-c++ glib2-devel glibc.i686 gperf glib2-devel \
Tim Brown36312fc2017-12-15 22:56:20385gtk3-devel java-1.*.0-openjdk-devel libatomic libcap-devel libffi-devel \
386libgcc.i686 libgnome-keyring-devel libjpeg-devel libstdc++.i686 libX11-devel \
387libXScrnSaver-devel libXtst-devel libxkbcommon-x11-devel ncurses-compat-libs \
388nspr-devel nss-devel pam-devel pango-devel pciutils-devel \
389pulseaudio-libs-devel zlib.i686 httpd mod_ssl php php-cli python-psutil wdiff \
390xorg-x11-server-Xvfb'
dpranke2989a782016-12-02 02:57:12391```
392
Kent Tamura59ffb022018-11-27 05:30:56393The fonts needed by Blink's web tests can be obtained by following [these
Victor Costan44af72b2017-11-13 20:01:30394instructions](https://gist.github.com/pwnall/32a3b11c2b10f6ae5c6a6de66c1e12ae).
395For the optional packages:
dpranke2989a782016-12-02 02:57:12396
397* `php-cgi` is provided by the `php-cli` package.
Victor Costan44af72b2017-11-13 20:01:30398* `sun-java6-fonts` is covered by the instructions linked above.
dpranke2989a782016-12-02 02:57:12399
400### Gentoo
401
402You can just run `emerge www-client/chromium`.
403
dpranke2989a782016-12-02 02:57:12404### OpenSUSE
405
406Use `zypper` command to install dependencies:
407
408(openSUSE 11.1 and higher)
409
410```shell
Tim Brown36312fc2017-12-15 22:56:20411sudo zypper in subversion pkg-config python perl bison flex gperf \
412 mozilla-nss-devel glib2-devel gtk-devel wdiff lighttpd gcc gcc-c++ \
413 mozilla-nspr mozilla-nspr-devel php5-fastcgi alsa-devel libexpat-devel \
dpranke2989a782016-12-02 02:57:12414 libjpeg-devel libbz2-devel
415```
416
417For 11.0, use `libnspr4-0d` and `libnspr4-dev` instead of `mozilla-nspr` and
Tom Anderson287339e2018-08-22 21:52:02418`mozilla-nspr-devel`, and use `php5-cgi` instead of `php5-fastcgi`.
dpranke2989a782016-12-02 02:57:12419
420(openSUSE 11.0)
421
422```shell
423sudo zypper in subversion pkg-config python perl \
424 bison flex gperf mozilla-nss-devel glib2-devel gtk-devel \
425 libnspr4-0d libnspr4-dev wdiff lighttpd gcc gcc-c++ libexpat-devel \
Tom Anderson287339e2018-08-22 21:52:02426 php5-cgi alsa-devel gtk3-devel jpeg-devel
dpranke2989a782016-12-02 02:57:12427```
428
429The Ubuntu package `sun-java6-fonts` contains a subset of Java of the fonts used.
430Since this package requires Java as a prerequisite anyway, we can do the same
431thing by just installing the equivalent openSUSE Sun Java package:
432
433```shell
434sudo zypper in java-1_6_0-sun
435```
436
437WebKit is currently hard-linked to the Microsoft fonts. To install these using `zypper`
438
439```shell
440sudo zypper in fetchmsttfonts pullin-msttf-fonts
441```
442
443To make the fonts installed above work, as the paths are hardcoded for Ubuntu,
444create symlinks to the appropriate locations:
445
446```shell
447sudo mkdir -p /usr/share/fonts/truetype/msttcorefonts
448sudo ln -s /usr/share/fonts/truetype/arial.ttf /usr/share/fonts/truetype/msttcorefonts/Arial.ttf
449sudo ln -s /usr/share/fonts/truetype/arialbd.ttf /usr/share/fonts/truetype/msttcorefonts/Arial_Bold.ttf
450sudo ln -s /usr/share/fonts/truetype/arialbi.ttf /usr/share/fonts/truetype/msttcorefonts/Arial_Bold_Italic.ttf
451sudo ln -s /usr/share/fonts/truetype/ariali.ttf /usr/share/fonts/truetype/msttcorefonts/Arial_Italic.ttf
452sudo ln -s /usr/share/fonts/truetype/comic.ttf /usr/share/fonts/truetype/msttcorefonts/Comic_Sans_MS.ttf
453sudo ln -s /usr/share/fonts/truetype/comicbd.ttf /usr/share/fonts/truetype/msttcorefonts/Comic_Sans_MS_Bold.ttf
454sudo ln -s /usr/share/fonts/truetype/cour.ttf /usr/share/fonts/truetype/msttcorefonts/Courier_New.ttf
455sudo ln -s /usr/share/fonts/truetype/courbd.ttf /usr/share/fonts/truetype/msttcorefonts/Courier_New_Bold.ttf
456sudo ln -s /usr/share/fonts/truetype/courbi.ttf /usr/share/fonts/truetype/msttcorefonts/Courier_New_Bold_Italic.ttf
457sudo ln -s /usr/share/fonts/truetype/couri.ttf /usr/share/fonts/truetype/msttcorefonts/Courier_New_Italic.ttf
458sudo ln -s /usr/share/fonts/truetype/impact.ttf /usr/share/fonts/truetype/msttcorefonts/Impact.ttf
459sudo ln -s /usr/share/fonts/truetype/times.ttf /usr/share/fonts/truetype/msttcorefonts/Times_New_Roman.ttf
460sudo ln -s /usr/share/fonts/truetype/timesbd.ttf /usr/share/fonts/truetype/msttcorefonts/Times_New_Roman_Bold.ttf
461sudo ln -s /usr/share/fonts/truetype/timesbi.ttf /usr/share/fonts/truetype/msttcorefonts/Times_New_Roman_Bold_Italic.ttf
462sudo ln -s /usr/share/fonts/truetype/timesi.ttf /usr/share/fonts/truetype/msttcorefonts/Times_New_Roman_Italic.ttf
463sudo ln -s /usr/share/fonts/truetype/verdana.ttf /usr/share/fonts/truetype/msttcorefonts/Verdana.ttf
464sudo ln -s /usr/share/fonts/truetype/verdanab.ttf /usr/share/fonts/truetype/msttcorefonts/Verdana_Bold.ttf
465sudo ln -s /usr/share/fonts/truetype/verdanai.ttf /usr/share/fonts/truetype/msttcorefonts/Verdana_Italic.ttf
466sudo ln -s /usr/share/fonts/truetype/verdanaz.ttf /usr/share/fonts/truetype/msttcorefonts/Verdana_Bold_Italic.ttf
467```
468
469The Ubuntu package `sun-java6-fonts` contains a subset of Java of the fonts used.
470Since this package requires Java as a prerequisite anyway, we can do the same
471thing by just installing the equivalent openSUSE Sun Java package:
472
473```shell
474sudo zypper in java-1_6_0-sun
475```
476
477WebKit is currently hard-linked to the Microsoft fonts. To install these using `zypper`
478
479```shell
480sudo zypper in fetchmsttfonts pullin-msttf-fonts
481```
482
483To make the fonts installed above work, as the paths are hardcoded for Ubuntu,
484create symlinks to the appropriate locations:
485
486```shell
487sudo mkdir -p /usr/share/fonts/truetype/msttcorefonts
488sudo ln -s /usr/share/fonts/truetype/arial.ttf /usr/share/fonts/truetype/msttcorefonts/Arial.ttf
489sudo ln -s /usr/share/fonts/truetype/arialbd.ttf /usr/share/fonts/truetype/msttcorefonts/Arial_Bold.ttf
490sudo ln -s /usr/share/fonts/truetype/arialbi.ttf /usr/share/fonts/truetype/msttcorefonts/Arial_Bold_Italic.ttf
491sudo ln -s /usr/share/fonts/truetype/ariali.ttf /usr/share/fonts/truetype/msttcorefonts/Arial_Italic.ttf
492sudo ln -s /usr/share/fonts/truetype/comic.ttf /usr/share/fonts/truetype/msttcorefonts/Comic_Sans_MS.ttf
493sudo ln -s /usr/share/fonts/truetype/comicbd.ttf /usr/share/fonts/truetype/msttcorefonts/Comic_Sans_MS_Bold.ttf
494sudo ln -s /usr/share/fonts/truetype/cour.ttf /usr/share/fonts/truetype/msttcorefonts/Courier_New.ttf
495sudo ln -s /usr/share/fonts/truetype/courbd.ttf /usr/share/fonts/truetype/msttcorefonts/Courier_New_Bold.ttf
496sudo ln -s /usr/share/fonts/truetype/courbi.ttf /usr/share/fonts/truetype/msttcorefonts/Courier_New_Bold_Italic.ttf
497sudo ln -s /usr/share/fonts/truetype/couri.ttf /usr/share/fonts/truetype/msttcorefonts/Courier_New_Italic.ttf
498sudo ln -s /usr/share/fonts/truetype/impact.ttf /usr/share/fonts/truetype/msttcorefonts/Impact.ttf
499sudo ln -s /usr/share/fonts/truetype/times.ttf /usr/share/fonts/truetype/msttcorefonts/Times_New_Roman.ttf
500sudo ln -s /usr/share/fonts/truetype/timesbd.ttf /usr/share/fonts/truetype/msttcorefonts/Times_New_Roman_Bold.ttf
501sudo ln -s /usr/share/fonts/truetype/timesbi.ttf /usr/share/fonts/truetype/msttcorefonts/Times_New_Roman_Bold_Italic.ttf
502sudo ln -s /usr/share/fonts/truetype/timesi.ttf /usr/share/fonts/truetype/msttcorefonts/Times_New_Roman_Italic.ttf
503sudo ln -s /usr/share/fonts/truetype/verdana.ttf /usr/share/fonts/truetype/msttcorefonts/Verdana.ttf
504sudo ln -s /usr/share/fonts/truetype/verdanab.ttf /usr/share/fonts/truetype/msttcorefonts/Verdana_Bold.ttf
505sudo ln -s /usr/share/fonts/truetype/verdanai.ttf /usr/share/fonts/truetype/msttcorefonts/Verdana_Italic.ttf
506sudo ln -s /usr/share/fonts/truetype/verdanaz.ttf /usr/share/fonts/truetype/msttcorefonts/Verdana_Bold_Italic.ttf
507```
508
509And then for the Java fonts:
510
511```shell
512sudo mkdir -p /usr/share/fonts/truetype/ttf-lucida
513sudo find /usr/lib*/jvm/java-1.6.*-sun-*/jre/lib -iname '*.ttf' -print \
514 -exec ln -s {} /usr/share/fonts/truetype/ttf-lucida \;
515```