Desktop Factory Host Requirements

To successfully build a customized Linux distribution using the Timesys Desktop Factory, your host machine must be running a modern GNU/Linux Operating System. Timesys recommends one of the following distributions:

  • Ubuntu - Most recent release or LTS (currently 20.04, 32/64-bit)
  • Fedora - Most recent release
  • RHEL - RHEL 7, CentOS 7, RHEL 6.7, CentOS 6.5

Timesys testing and support is focused on these newest versions of Ubuntu or Fedora. For additional distribution support, please contact for a professional services agreement.

The factory engine's "checksystem" target is available to detect whether all required host tools are present on your system. After installing the tools listed below, please run "make checksystem" from your Desktop Factory directory to see if any required tools are missed or not detected by Factory.

The following sections provide the requirements and commands that will fulfill most of your host requirements for given distributions

Basic Requirements

  • 10GB+ of free disk space
  • working toolchain
    • gcc
    • gnu make
    • c library with development headers
  • bison
  • sed and awk (gawk, not mawk for ubuntu users)
  • flex
  • gmp
  • mpfr
  • perl
    • XML::Parser
  • tetex (optional, CodeSourcery toolchain does not prebuild docs)
  • libxslt (optional for some desktop/X apps)
  • wget
  • ncurses
  • bzip2, gzip, and xz
  • module-init-tools / kmod (for depmod)
  • bc (to build modern kernels)

Distribution Specific Requirements

Debian Wheezy/Jessie and Ubuntu 16.04/18.04/20.04

  • For 64-bit Debian Wheezy, Jessie, or newer versions, enable multiarch:
    • $ sudo dpkg --add-architecture i386
    • $ sudo apt-get update
  • For all Debian/Ubuntu versions, reconfigure dash and install required packages:
    • $ sudo dpkg-reconfigure dash
      respond "No" to the prompt asking "Install dash as /bin/sh?"
    • $ sudo apt-get update
    • $ sudo apt-get install automake binutils-dev bison build-essential bzip2 ecj fastjar flex gawk gconf2 gettext gperf groff gtk-doc-tools icon-naming-utils indent libc6-dev libdbus-glib-1-dev libexpat1-dev libglade2-dev libgmp3-dev libgtk2.0-bin libgtk2.0-dev libmpfr-dev libncurses5-dev libperl-dev libsdl1.2-dev libssl-dev libtool libusb-dev libxml-parser-perl lzop python-dev python-libxml2 ruby scons sharutils swig texinfo texlive-extra-utils unzip wget x11-xkb-utils xfonts-utils zip zlib1g -y
  • For all 32-bit Debian/Ubuntu versions:
    • $ sudo apt-get install libc6-dev-amd64
  • For all 64-bit Debian/Ubuntu versions:
    • $ sudo apt-get install lib32z1 lib32z1-dev libc6-dev-i386 -y
  • For 64-bit Ubuntu 16.04:
    • $ sudo apt-get install guile-1.8 texlive-latex3 lib32ncurses5 -y
  • For Ubuntu 18.04 and above:
    • $ sudo apt-get install guile-2.2 texlive-latex-extra lib32ncurses6 -y

Fedora

  • Fedora 25:
    • dnf install texinfo gtk2-devel SDL-devel swig perl-XML-Parser icon-naming-utils dbus-glib guile binutils-devel gtk-doc wget zip unzip glibc-static xorg-x11-xkb-utils libglade2-devel perl-devel ncurses-devel ncurses-static zlib-static xorg-x11-font-utils perl-XML-Simple libxml2-python expat-devel GConf2 groff python-devel ecj ruby
    • dnf groupinstall "C Development Tools and Libraries"
    • dnf install patch libstdc++-static
    • create a repository config file /etc/yum.repos.d/rpm-sphere.repo:
      [rpm-sphere]
      name=RPM Sphere
      baseurl=http://download.opensuse.org/repositories/home:/zhonghuaren/Fedora_25/
      gpgkey=http://download.opensuse.org/repositories/home:/zhonghuaren/Fedora_25/repodata/repomd.xml.key
      enabled=1
      gpgcheck=1
      
    • dnf install fastjar
  • Older versions:
    • yum install texinfo gtk2-devel SDL-devel swig perl-XML-Parser icon-naming-utils dbus-glib guile binutils-devel gtk-doc wget zip unzip glibc-static xorg-x11-xkb-utils libglade2-devel perl-devel ncurses-devel ncurses-static zlib-static xorg-x11-font-utils perl-XML-Simple libxml2-python expat-devel GConf2 groff
    • yum groupinstall "C Development Tools and Libraries"
    • Fedora 20:
      • yum install patch libstdc++-static
    • Fedora <19:
      • yum groupinstall "Development Tools" "Development Libraries"

Red Hat Enterprise Linux

RHEL Workstation Repos require a Red Hat Enterprise Linux Workstation Subscription (purchased from Red Hat).
Installations under RHEL/CentOS 5 or older, please contact

In RHEL only, register the subscription manager:

# subscription-manager register

Log in at the prompt with your RHEL credentials.

  • RHEL 6.7:

Enable rhel-6-workstation-optional-rpms:

subscription-manager repos --enable=rhel-6-workstation-optional-rpms
  • yum install gcc gcc-c++ bison flex patch ruby texinfo automake binutils-devel zlib-devel zlib-static ncurses-devel glibc-static expat-devel perl-XML-Parser swig guile ncurses-static guile gtk2-devel SDL-devel python-devel icon-naming-utils ecj libtool libglade2-devel
  • RHEL 7:

Enable rhel-7-workstation-optional-rpms: (Not necessary on CentOS 7)

subscription-manager repos --enable=rhel-7-workstation-optional-rpms
  • yum install gcc gcc-c++ bison flex patch ruby texinfo automake binutils-devel zlib-devel zlib-static ncurses-devel glibc-static expat-devel perl-XML-Parser swig guile ncurses-static guile gtk2-devel SDL-devel python-devel icon-naming-utils ecj libtool libglade2-devel libstdc++-static GConf2
  • RHEL 8:

Allow installation of dev packages natively disabled during switch from RHEL 7 to 8

subscription-manager repos --enable codeready-builder-for-rhel-8-x86_64-rpms
  • Create a repository config file /etc/yum.repos.d/rpm-sphere.repo:
    [rpmsphere]
    name=RPM Sphere - Basearch
    baseurl=https://github.com/rpmsphere/$basearch/raw/master/
    skip_if_unavailable=True
    gpgcheck=0
    enabled=1
    
    [rpmsphere-noarch]
    name=RPM Sphere - Noarch
    baseurl=https://github.com/rpmsphere/noarch/raw/master/
    skip_if_unavailable=True
    gpgcheck=0
    enabled=1
    
    [rpmsphere-source]
    name=RPM Sphere - Source
    baseurl=https://github.com/rpmsphere/source/raw/master/
    skip_if_unavailable=True
    gpgcheck=0
    enabled=0
    
    [rpmsphere-caution]
    name=RPM Sphere - Caution
    baseurl=https://github.com/rpmsphere/caution/raw/master/
    skip_if_unavailable=True
    gpgcheck=0
    enabled=0
    
sudo dnf install gcc gcc-c++ autoconf automake texinfo ncurses-c++-libs ncurses-compat-libs ncurses-libs python2-devel texlive-tetex glibc-static libstdc++-static gcc-toolset-10-binutils patch expat-devel zlib-devel zlib-static ncurses-devel binutils-devel glib2 ncurses zlib libtool expat binutils guile swig libxml2 

If 'which python' gives no, results, fix with this:

sudo ln -s /usr/bin/python3 /usr/bin/python 
  • CentOS 7:
    • sudo yum install gcc gcc-c++ bison flex patch ruby texinfo automake binutils-devel zlib-devel zlib-static ncurses-devel glibc-static expat-devel perl-XML-Parser swig guile ncurses-static guile gtk2-devel SDL-devel python-devel icon-naming-utils ecj libtool libglade2-devel libstdc++-static GConf2 glibc.i686 zlib.i686
  • Create a repository config file /etc/yum.repos.d/rpm-sphere.repo:
    [rpm-sphere]
    name=RPM Sphere
    baseurl=http://download.opensuse.org/repositories/home:/zhonghuaren/Fedora_22/
    gpgkey=http://download.opensuse.org/repositories/home:/zhonghuaren/Fedora_22/repodata/repomd.xml.key
    enabled=1
    gpgcheck=1
    
  • yum install fastjar

Arch Linux

  • Enable multilib sources by uncommenting the [multilib] section in /etc/pacman.conf
    [multilib]
    Include = /etc/pacman.d/mirrorlist
    
  • Update the package manager:
    pacman -Syu
    
  • For all versions of Arch Linux:
    sudo pacman -S base-devel bc bison bzip2 eclipse-ecj expat fastjar flex gawk \
    gconf glibc gmp gperf groff gtk2 gtk-doc guile1.8 icon-naming-utils indent \
    libdbus libglade libtool libusb libxml2 lzop mpfr ncurses perl perl-xml-parser \
    python python2-lxml ruby scons sdl sharutils swig texinfo texlive-latex3 unzip \
    wget xorg-font-utils xorg-xkbutils zip zlib
    
  • For 64 bit Arch Linux:
    sudo pacman -S lib32-glibc lib32-ncurses lib32-zlib
    
  • Make make checksystem checksystem.sh happy:
    sudo touch /usr/lib/libncurses.a
    

Additional Notes