--- ~~Title: Installing EFL on Ubuntu ~~ --- # Installing EFL on Ubuntu # [The *Enlightenment Foundation Libraries (EFL)*](/about-efl.md) power millions of systems from mobile phones to set-top boxes, desktops, laptops, game systems and more. You'll need EFL if you want to develop apps for Enlightenment and for any of the devices that use Enlightenment for its visual interface. This tutorial describes several ways to install EFL on your system. You will only need to use one of these. Many distributions offer EFL as installable packages from their default repositories. In this case you only need to use your distribution's software management system to install. However, most versions of EFL in default repositories are out of date and will not compile more recent Enlightenment applications. If this is not an issue for you, read through the ["From Distribution Repositories"](#From_Distribution_Repositories) section below. The Enlightenment developers provide a pre-packaged source of EFL. Although not bleeding edge it is up to date and considered stable for production environments. You can download, compile and install it yourself by following the instructions in ["Installing from Packaged Source"](#Installing_from_Packaged_Source). You can also download the source code for the most recent version from the Enlightenment git repositories. To get started, read the section ["Installing from Git"](#Installing_from_Git). ## From Distribution Repositories ## You can install all the items you need from Ubuntu's official repository: ```bash sudo apt install libefl-all-dev libeet-bin libeina-bin libelua-bin ``` This will give you a working EFL installation. Ubuntu does not install by default the *gcc* compiler or *meson* or *ninja*, so, before you can compile any apps, you will need to install those too: ```bash sudo apt install build-essential meson ninja-build ``` Note that the version of EFL in Ubuntu's official repositories may not be the most recent release. This can cause problems when trying to compile examples from tutorials in this documentation. If this is the case, it is advised you install a more recent version of EFL following one of the methods below. ## Installing from Packaged Source ## There are two versions available from the Enlightenment website. One is a packaged and available from the [EFL's download site](https://download.enlightenment.org/rel/libs/efl/). The other is the nightly bleeding edge version which you can [download using git](#Installing_from_Git). This section deals with installing with the packaged version available from the EFL's download site. ### Step 0: Removing packaged versions Ensure that you don't have any of the enlightenment packages from the repos and/or pip installed. This will cause issues. ```bash # find what you have installed: $ dpkg-query -l \*efl\* | grep -P '^i' $ dpkg-query -l \*elementary\* | grep -P '^i' # ...and then remove whatever you need to remove: $ sudo apt-get remove elemtentary efl $ pip uninstall python-efl ``` ### Step 1: Downloading Stable Version ### [Download the latest version of EFL](https://download.enlightenment.org/rel/libs/efl/) and check it against its SHA256 hash: ```bash wget https://download.enlightenment.org/rel/libs/efl/efl-X.XX.X.tar.xz wget https://download.enlightenment.org/rel/libs/efl/efl-X.XX.X.tar.xz.sha256 cat efl-X.XX.X.tar.xz.sha256; sha256sum efl-X.XX.X.tar.xz ``` Note that you will have to change ``X.XX.X`` for the actual version of EFL. ### Step 2: Unpacking ### Once you have the archive file containing EFL in your hard disk, unpack it with: ```bash tar xvf efl-X.XX.X.tar.xz ``` This will produce a folder called ``efl-X.XX.X``. ### Step 3: Installing Dependencies ### You will need to install some tools to build EFL: ```bash sudo apt install build-essential check meson ninja-build ``` As well as the dependencies specific for EFL: ```bash sudo apt install libinput-dev libssl-dev libsystemd-dev libjpeg-dev libglib2.0-dev libgstreamer1.0-dev libluajit-5.2-dev libfreetype-dev libfontconfig-dev libfribidi-dev libavahi-client-dev libharfbuzz-dev libibus-1.0-dev libx11-dev libxext-dev libxrender-dev libgl1-mesa-dev libopenjp2-7-dev libwebp-dev libgif-dev libtiff5-dev libpoppler-dev libpoppler-cpp-dev libspectre-dev libraw-dev librsvg2-dev libudev-dev libmount-dev libdbus-1-dev libpulse-dev libsndfile1-dev libxcursor-dev libxcomposite-dev libxinerama-dev libxrandr-dev libxtst-dev libxss-dev libgstreamer-plugins-base1.0-dev doxygen libscim-dev libxdamage-dev libwebp-dev libunwind-dev libheif-dev libavif-dev libyuv-dev ``` If you also plan on building python-efl, you'll also need to install the python-dbus-dev package. Note that libavif-dev and libyuv-dev may not be available in the repos if you're using an ubuntu version earlier than 22. In this case, it's okay to just not install those packages, they're optional and won't be used if not available. Alternatively you could compile and install them yourself. ### Step 4: Building and Installing ### Once you have installed all the packages EFL needs, ``cd`` into the ``efl-X.XX.X`` folder and run: ```bash meson -Dlua-interpreter=lua build ninja -C build sudo ninja -C build install ``` This will configure the files needed for compiling, actually compile the software, and then install it. ### Step 5: Carrying out Post Installation Tasks ### You also have to make some files visible to *pkgconfig*. One way of doing this is to open ``/etc/profile`` in a text editor as root (using for example ``sudo nano /etc/profile``) and add the following line to the end: ```bash export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig ``` You may also need to refresh your library path to make sure your apps can find the EFL libraries: ```bash sudo ldconfig ``` ## Installing from Git ## You can also get the bleeding edge version of EFL by cloning it from the git repository. ### Step 1: Installing git and Cloning ### By default, *git* is not installed in Ubuntu, so the first step is to install it: ```bash sudo apt install git ``` Next clone EFL's source code: ```bash git clone https://git.enlightenment.org/enlightenment/efl.git ``` This will create a directory called ``efl/``. ### Step 2: Installing Dependencies ### You will need to install some tools to build EFL: ```bash sudo apt install build-essential check meson ninja-build ``` As well as the dependencies specific for EFL: ```bash sudo apt install libssl-dev libsystemd-dev libjpeg-dev libglib2.0-dev libgstreamer1.0-dev liblua5.2-dev libfreetype-dev libfontconfig-dev libfribidi-dev libavahi-client-dev libharfbuzz-dev libibus-1.0-dev libx11-dev libxext-dev libxrender-dev libgl1-mesa-dev libgif-dev libtiff5-dev libpoppler-dev libpoppler-cpp-dev libspectre-dev libraw-dev librsvg2-dev libudev-dev libmount-dev libdbus-1-dev libpulse-dev libsndfile1-dev libxcursor-dev libxcomposite-dev libxinerama-dev libxrandr-dev libxtst-dev libxss-dev libgstreamer-plugins-base1.0-dev doxygen libopenjp2-7-dev libscim-dev libxdamage-dev libwebp-dev libunwind-dev libheif-dev libavif-dev libyuv-dev libinput-dev ``` > **NOTE:** > Unless you are already running Ubuntu 23.04 or a higher version (simply install libjxl-dev), JPEG XL has to be compiled from source. If you need jxl support in efl, > please visit their [GitHub repository](https://github.com/libjxl/libjxl/) for more information. ### Step 3: Configuring the Software ### Now you can ``cd`` into the ``efl`` directory and run the ``meson build`` script to create and configure the software ready for compilation: ```bash meson -Dlua-interpreter=lua build ``` Once configured, you can compile the software with: ```bash ninja -C build sudo ninja -C build install ``` ### Step 4: Carrying out Post Installation Tasks ### You also have to make some files visible to *pkgconfig*. One way of doing this is to open ``/etc/profile`` in a text editor as root (using for example ``sudo nano /etc/profile``) and add the following line to the end: ```bash export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig ``` You may also need to refresh your library path to make sure your apps can find the EFL libraries: ```bash sudo ldconfig ``` ## Troubleshooting ## If you are having problems compiling and installing EFL, you can come and seek advice on [any of our IRC channels](https://www.enlightenment.org/contact) or [post a ticket to our Gitea](https://git.enlightenment.org/issues). ## Installing on Other Operating Systems ## If you would like to install EFL on a different operating system visit the [Installing EFL](start) page.