2020-11-01 05:26:58 +01:00
|
|
|
# Linux
|
|
|
|
|
|
|
|
## Requirements
|
|
|
|
|
|
|
|
These instructions are written for Debian/Ubuntu; adjust for your distribution.
|
2021-09-02 12:52:55 +02:00
|
|
|
Some extra notes have been provided by a forum member:
|
|
|
|
https://forums.ankiweb.net/t/guide-how-to-build-and-run-anki-from-source-with-xubuntu-20-04/12865
|
2020-11-01 05:26:58 +01:00
|
|
|
|
2021-01-02 00:49:41 +01:00
|
|
|
Glibc is required - if you are on a distro like Alpine that uses musl, you'll need
|
|
|
|
to contribute fixes to the upstream [Rust rules](https://github.com/bazelbuild/rules_rust/issues/390),
|
|
|
|
then follow the steps in [Other Platforms](./new-platform.md).
|
|
|
|
|
2020-11-01 05:26:58 +01:00
|
|
|
**Ensure some basic tools are installed**:
|
|
|
|
|
|
|
|
```
|
2020-11-18 04:22:51 +01:00
|
|
|
$ sudo apt install bash grep findutils curl gcc g++ git
|
2020-11-01 05:26:58 +01:00
|
|
|
```
|
|
|
|
|
|
|
|
The 'find' utility is 'findutils' on Debian.
|
|
|
|
|
2021-10-15 12:16:04 +02:00
|
|
|
**Python**:
|
2020-11-01 05:26:58 +01:00
|
|
|
|
2021-10-15 12:16:04 +02:00
|
|
|
For building and running from source, Python is required, but the version is
|
|
|
|
flexible - any version from 2.7 onwards should work. The build system expects to
|
|
|
|
find the command `python`, so if your system only has a `python3`, you'll need
|
|
|
|
to link it to `python`, or do something like `sudo apt install python-is-python3`.
|
2020-11-01 05:26:58 +01:00
|
|
|
|
2021-10-15 12:16:04 +02:00
|
|
|
The system Python is only used for running scripts, and the build system will
|
|
|
|
download a copy of Python 3.9 into a local folder as part of the build.
|
2020-12-31 23:49:29 +01:00
|
|
|
|
2021-10-15 12:16:04 +02:00
|
|
|
You can have it use a locally installed Python instead, by putting something
|
|
|
|
like the following into a file called user.bazelrc at the top of this repo
|
|
|
|
before proceeding:
|
2020-12-07 12:06:52 +01:00
|
|
|
|
|
|
|
```
|
2021-10-04 07:05:15 +02:00
|
|
|
build --action_env=PYO3_PYTHON=/usr/local/bin/python3.9
|
2020-12-07 12:06:52 +01:00
|
|
|
```
|
|
|
|
|
2020-11-01 05:26:58 +01:00
|
|
|
**Install Bazelisk**:
|
|
|
|
|
|
|
|
Download it under the name 'bazel':
|
|
|
|
|
|
|
|
```
|
2021-10-15 12:16:04 +02:00
|
|
|
$ curl -L https://github.com/bazelbuild/bazelisk/releases/download/v1.10.1/bazelisk-linux-amd64 -o ./bazel
|
2020-11-01 05:26:58 +01:00
|
|
|
```
|
|
|
|
|
|
|
|
And put it on your path:
|
|
|
|
|
|
|
|
```
|
|
|
|
$ chmod +x bazel && sudo mv bazel /usr/local/bin/
|
|
|
|
```
|
|
|
|
|
|
|
|
## Running Anki during development
|
|
|
|
|
|
|
|
From the top level of Anki's source folder:
|
|
|
|
|
|
|
|
```
|
|
|
|
./run
|
|
|
|
```
|
|
|
|
|
|
|
|
This will build Anki and run it in place.
|
|
|
|
|
2020-12-08 00:08:51 +01:00
|
|
|
The first build will take a while, as it downloads and builds a bunch of
|
2020-11-01 05:26:58 +01:00
|
|
|
dependencies. When the build is complete, Anki will automatically start.
|
|
|
|
|
2021-06-21 05:23:03 +02:00
|
|
|
The Javascript build code is currently a bit flaky, so the initial
|
|
|
|
build may fail with an error. If you get an error when running/building,
|
|
|
|
try repeating the command once or twice - it should pick up where it left off.
|
|
|
|
|
2020-12-16 10:09:45 +01:00
|
|
|
To play and record audio, install mpv and lame.
|
2020-11-01 05:26:58 +01:00
|
|
|
|
2020-12-10 11:28:33 +01:00
|
|
|
If you or your distro has made ccache the standard compiler, you will need to
|
2020-12-11 11:56:08 +01:00
|
|
|
set CC and CXX to point directly to gcc/g++ or clang/clang++ prior to building
|
|
|
|
Anki.
|
2020-12-10 11:28:33 +01:00
|
|
|
|
2021-10-05 00:33:44 +02:00
|
|
|
## Missing Libraries
|
|
|
|
|
|
|
|
If you get errors during startup, try starting with
|
|
|
|
|
|
|
|
QT_DEBUG_PLUGINS=1 ./run
|
|
|
|
|
|
|
|
It will likely complain about missing libraries, which you can install with
|
|
|
|
your package manager. Some of the libraries that might be required on Debian
|
|
|
|
for example:
|
|
|
|
|
|
|
|
```
|
|
|
|
sudo apt install libxcb-icccm4 libxcb-image0 libxcb-keysyms1 \
|
|
|
|
libxcb-randr0 libxcb-render-util0
|
|
|
|
```
|
|
|
|
|
2020-12-07 02:50:03 +01:00
|
|
|
## Optimized builds
|
|
|
|
|
|
|
|
The `./run` command will create a non-optimized build by default. This is faster
|
|
|
|
to compile, but will mean Anki will run considerably slower.
|
|
|
|
|
|
|
|
To run Anki in optimized mode, use:
|
|
|
|
|
|
|
|
```
|
|
|
|
./scripts/runopt
|
|
|
|
```
|
|
|
|
|
2020-11-04 05:01:14 +01:00
|
|
|
## More
|
2020-11-01 05:26:58 +01:00
|
|
|
|
2020-11-04 05:01:14 +01:00
|
|
|
For info on running tests, building wheels and so on, please see [Development](./development.md).
|