How to Write an Ebuild on Gentoo

An ebuild is a script written in the Gentoo Linux Portage system that contains the instructions for building and installing a package. Here is a step-by-step guide to writing an ebuild on Gentoo:

  1. Create a directory for the ebuild: Ebuilds are stored in a directory structure that reflects the package’s name and version. For example, the ebuild for version 1.2.3 of the package “foo” would be stored in a directory called “foo-1.2.3”. Create this directory in the appropriate location in the Portage tree.
  2. Write the ebuild file: The ebuild file should be named after the package and version, with the “.ebuild” extension. For example, the ebuild for “foo-1.2.3” would be called “foo-1.2.3.ebuild”.
  3. Set the ebuild header: The first part of the ebuild file should contain a set of variables that define the package. These include the package name and version, the homepage, the license, the dependencies, and any other relevant information. For example:

inherit autotools

DESCRIPTION="A description of the package"


  1. Write the ebuild functions: The main part of the ebuild consists of a set of functions that are executed at different stages of the build and installation process. These include:
  • src_unpack: This function is called before the source code is extracted and is typically used to patch the source code or prepare it in some way.
  • src_prepare: This function is called after the source code has been extracted and is typically used to run the package’s configure script.
  • src_compile: This function is called to compile the source code.
  • src_install: This function is called to install the compiled code and any necessary files into the correct locations on the system.

Here is an example of what these functions might look like for a simple autotools-based package:

src_unpack() {
  unpack ${A}
  cd "${S}"

src_prepare() {

src_compile() {

src_install() {
  dodoc ChangeLog
  1. Test the ebuild: Before you submit the ebuild, it’s a good idea to test it to make sure it works correctly. To do this, you can use the ebuild command to build and install the package:
ebuild foo-1.2.3.ebuild install

This will build and install the package using the instructions in the ebuild. If there are any issues, they will be reported at this stage.

  1. Submit the ebuild: Once you have tested the ebuild and are satisfied that it works correctly, you can submit it to the Gentoo development team for inclusion