How to Install Kodi on Ubuntu-based Linux Distributions

Kodi is a free and open-source media server application that transforms your Linux system into a full-fledged entertainment center.

It lets you organize, play, and view your entire collection of movies, music, TV shows, and even photos, all from one user-friendly interface.

In addition to your videos and music, you can also use Kodi to watch YouTube, Netflix, Hulu, Prime Video, and more.

Whether you’re a movie buff, a music enthusiast, or just someone who enjoys having all their media neatly organized, Kodi is a great option for Linux users.

In this guide, we’ll walk you through the process of installing Kodi on Ubuntu-based Linux distributions.

Installing Kodi on Linux

Before installing Kodi, it’s a good idea to update your Linux system to ensure you have the latest software packages.

sudo apt update -y
sudo apt upgrade -y

Once your system is up to date, you can install Kodi from the official software repositories using the following apt command.

Note: The version of Kodi found in the official software repositories isn’t the newest, which means you won’t get the latest and best features if you use this version of Kodi.
sudo apt install kodi

To get the latest version of Kodi, you can use the official PPA repository of Kodi as shown.

sudo apt install software-properties-common
sudo add-apt-repository -y ppa:team-xbmc/ppa
sudo apt install kodi

Keep in mind that if you have any add-ons (like PVR clients), you’ll need to update them separately as shown.

sudo apt install kodi-pvr-mythtv

After the installation is complete, you can launch Kodi from the applications menu or by running the following command in the terminal.

kodi
Kodi Media Server
Kodi Media Server

Removing Kodi from Ubuntu

To remove Kodi from Ubuntu, you can use the following command in the terminal.

sudo apt remove kodi
sudo add-apt-repository --remove ppa:team-xbmc/ppa

The above commands, will uninstall Kodi and remove PPA from your system.

Conclusion

Kodi is a handy media center tool that turns your Linux computer into an all-in-one entertainment hub. It’s easy to install, has a user-friendly interface, and offers lots of features.

Ravi Saive
I am an experienced GNU/Linux expert and a full-stack software developer with over a decade in the field of Linux and Open Source technologies

Each tutorial at TecMint is created by a team of experienced Linux system administrators so that it meets our high-quality standards.

Join the TecMint Weekly Newsletter (More Than 156,129 Linux Enthusiasts Have Subscribed)
Was this article helpful? Please add a comment or buy me a coffee to show your appreciation.

10 Comments

Leave a Reply
  1. hi Ravi
    I have an old HP TC1100 tablet PC with Fedora 23 and I tried to install Kodi w/o success. So I was searching for an alternative and I thought I had found it coming across you page.
    However the command: sudo dnf install kffmpegthumbnailer
    I got this:
    Error: nothing provides kdsbase-workspace needed by kffmpegthumbnailer-1.1.0-8.fcc.1686
    (try to add ‘–allowerasing’ t command line to replace conflicting packages)
    so I tried: sudo dnf install kffmpegthumbnailer –allowerasing
    but it came back with the same error message

    so I decided to ignore that step and continue. Everything worked fine until I tried:
    cmake .. -DCMAKE_INSTALL_PREFIX=`kde4-config –prefix`
    I got this:
    — The CXX compiler identification is unknown
    CMake Error at CMakeList.txt:l (project):
    No CMAKE_CXX_COMPILER could be found

    here’s the content of the files CMakeError.log and CMakeOutput.log

    CMakeOutput.log——————————————
    The system is: Linux – 4.2.3-300.fc23.i686 – i686
    Compiling the C compiler identification source file “CMakeCCompilerId.c” succeeded.
    Compiler: /usr/bin/cc
    Build flags:
    Id flags:

    The output was:
    0

    Compilation of the C compiler identification source “CMakeCCompilerId.c” produced “a.out”

    The C compiler identification is GNU, found in “/home/Franz/plasma-mediacenter/build/CMakeFiles/3.4.1/CompilerIdC/a.out”

    Determining if the C compiler works passed with the following output:
    Change Dir: /home/Franz/plasma-mediacenter/build/CMakeFiles/CMakeTmp

    Run Build Command:”/usr/bin/gmake” “cmTC_025bc/fast”
    /usr/bin/gmake -f CMakeFiles/cmTC_025bc.dir/build.make CMakeFiles/cmTC_025bc.dir/build
    gmake[1]: Entering directory ‘/home/Franz/plasma-mediacenter/build/CMakeFiles/CMakeTmp’
    Building C object CMakeFiles/cmTC_025bc.dir/testCCompiler.c.o
    /usr/bin/cc -o CMakeFiles/cmTC_025bc.dir/testCCompiler.c.o -c /home/Franz/plasma-mediacenter/build/CMakeFiles/CMakeTmp/testCCompiler.c
    Linking C executable cmTC_025bc
    /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_025bc.dir/link.txt –verbose=1
    /usr/bin/cc CMakeFiles/cmTC_025bc.dir/testCCompiler.c.o -o cmTC_025bc -rdynamic
    gmake[1]: Leaving directory ‘/home/Franz/plasma-mediacenter/build/CMakeFiles/CMakeTmp’

    Detecting C compiler ABI info compiled with the following output:
    Change Dir: /home/Franz/plasma-mediacenter/build/CMakeFiles/CMakeTmp

    Run Build Command:”/usr/bin/gmake” “cmTC_ebc7e/fast”
    /usr/bin/gmake -f CMakeFiles/cmTC_ebc7e.dir/build.make CMakeFiles/cmTC_ebc7e.dir/build
    gmake[1]: Entering directory ‘/home/Franz/plasma-mediacenter/build/CMakeFiles/CMakeTmp’
    Building C object CMakeFiles/cmTC_ebc7e.dir/CMakeCCompilerABI.c.o
    /usr/bin/cc -o CMakeFiles/cmTC_ebc7e.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake/Modules/CMakeCCompilerABI.c
    Linking C executable cmTC_ebc7e
    /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_ebc7e.dir/link.txt –verbose=1
    /usr/bin/cc -v CMakeFiles/cmTC_ebc7e.dir/CMakeCCompilerABI.c.o -o cmTC_ebc7e -rdynamic
    Using built-in specs.
    COLLECT_GCC=/usr/bin/cc
    COLLECT_LTO_WRAPPER=/usr/libexec/gcc/i686-redhat-linux/5.3.1/lto-wrapper
    Target: i686-redhat-linux
    Configured with: ../configure –enable-bootstrap –enable-languages=c,c++,objc,obj-c++,fortran,ada,go,lto –prefix=/usr –mandir=/usr/share/man

    –infodir=/usr/share/info –with-bugurl=http://bugzilla.redhat.com/bugzilla –enable-shared –enable-threads=posix –enable-checking=release —

    enable-multilib –with-system-zlib –enable-__cxa_atexit –disable-libunwind-exceptions –enable-gnu-unique-object –enable-linker-build-id —

    with-linker-hash-style=gnu –enable-plugin –enable-initfini-array –disable-libgcj –with-isl –enable-libmpx –enable-gnu-indirect-function —

    with-tune=generic –with-arch=i686 –build=i686-redhat-linux
    Thread model: posix
    gcc version 5.3.1 20151207 (Red Hat 5.3.1-2) (GCC)
    COMPILER_PATH=/usr/libexec/gcc/i686-redhat-linux/5.3.1/:/usr/libexec/gcc/i686-redhat-linux/5.3.1/:/usr/libexec/gcc/i686-redhat-

    linux/:/usr/lib/gcc/i686-redhat-linux/5.3.1/:/usr/lib/gcc/i686-redhat-linux/
    LIBRARY_PATH=/usr/lib/gcc/i686-redhat-linux/5.3.1/:/usr/lib/gcc/i686-redhat-linux/5.3.1/../../../:/lib/:/usr/lib/
    COLLECT_GCC_OPTIONS=’-v’ ‘-o’ ‘cmTC_ebc7e’ ‘-rdynamic’ ‘-mtune=generic’ ‘-march=i686’
    /usr/libexec/gcc/i686-redhat-linux/5.3.1/collect2 -plugin /usr/libexec/gcc/i686-redhat-linux/5.3.1/liblto_plugin.so -plugin-

    opt=/usr/libexec/gcc/i686-redhat-linux/5.3.1/lto-wrapper -plugin-opt=-fresolution=/tmp/ccaps53h.res -plugin-opt=-pass-through=-lgcc -plugin-

    opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s –build-id –no-add-

    needed –eh-frame-hdr –hash-style=gnu -m elf_i386 -export-dynamic -dynamic-linker /lib/ld-linux.so.2 -o cmTC_ebc7e /usr/lib/gcc/i686-redhat-

    linux/5.3.1/../../../crt1.o /usr/lib/gcc/i686-redhat-linux/5.3.1/../../../crti.o /usr/lib/gcc/i686-redhat-linux/5.3.1/crtbegin.o –

    L/usr/lib/gcc/i686-redhat-linux/5.3.1 -L/usr/lib/gcc/i686-redhat-linux/5.3.1/../../.. CMakeFiles/cmTC_ebc7e.dir/CMakeCCompilerABI.c.o -lgcc —

    as-needed -lgcc_s –no-as-needed -lc -lgcc –as-needed -lgcc_s –no-as-needed /usr/lib/gcc/i686-redhat-linux/5.3.1/crtend.o /usr/lib/gcc/i686-

    redhat-linux/5.3.1/../../../crtn.o
    gmake[1]: Leaving directory ‘/home/Franz/plasma-mediacenter/build/CMakeFiles/CMakeTmp’

    Parsed C implicit link information from above output:
    link line regex: [^( *|.*[/\])(ld|([^/\]+-)?ld|collect2)[^/\]*( |$)]
    ignore line: [Change Dir: /home/Franz/plasma-mediacenter/build/CMakeFiles/CMakeTmp]
    ignore line: []
    ignore line: [Run Build Command:”/usr/bin/gmake” “cmTC_ebc7e/fast”]
    ignore line: [/usr/bin/gmake -f CMakeFiles/cmTC_ebc7e.dir/build.make CMakeFiles/cmTC_ebc7e.dir/build]
    ignore line: [gmake[1]: Entering directory ‘/home/Franz/plasma-mediacenter/build/CMakeFiles/CMakeTmp’]
    ignore line: [Building C object CMakeFiles/cmTC_ebc7e.dir/CMakeCCompilerABI.c.o]
    ignore line: [/usr/bin/cc -o CMakeFiles/cmTC_ebc7e.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake/Modules/CMakeCCompilerABI.c]
    ignore line: [Linking C executable cmTC_ebc7e]
    ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_ebc7e.dir/link.txt –verbose=1]
    ignore line: [/usr/bin/cc -v CMakeFiles/cmTC_ebc7e.dir/CMakeCCompilerABI.c.o -o cmTC_ebc7e -rdynamic ]
    ignore line: [Using built-in specs.]
    ignore line: [COLLECT_GCC=/usr/bin/cc]
    ignore line: [COLLECT_LTO_WRAPPER=/usr/libexec/gcc/i686-redhat-linux/5.3.1/lto-wrapper]
    ignore line: [Target: i686-redhat-linux]
    ignore line: [Configured with: ../configure –enable-bootstrap –enable-languages=c,c++,objc,obj-c++,fortran,ada,go,lto –prefix=/usr —

    mandir=/usr/share/man –infodir=/usr/share/info –with-bugurl=http://bugzilla.redhat.com/bugzilla –enable-shared –enable-threads=posix —

    enable-checking=release –enable-multilib –with-system-zlib –enable-__cxa_atexit –disable-libunwind-exceptions –enable-gnu-unique-object —

    enable-linker-build-id –with-linker-hash-style=gnu –enable-plugin –enable-initfini-array –disable-libgcj –with-isl –enable-libmpx —

    enable-gnu-indirect-function –with-tune=generic –with-arch=i686 –build=i686-redhat-linux]
    ignore line: [Thread model: posix]
    ignore line: [gcc version 5.3.1 20151207 (Red Hat 5.3.1-2) (GCC) ]
    ignore line: [COMPILER_PATH=/usr/libexec/gcc/i686-redhat-linux/5.3.1/:/usr/libexec/gcc/i686-redhat-linux/5.3.1/:/usr/libexec/gcc/i686-redhat-

    linux/:/usr/lib/gcc/i686-redhat-linux/5.3.1/:/usr/lib/gcc/i686-redhat-linux/]
    ignore line: [LIBRARY_PATH=/usr/lib/gcc/i686-redhat-linux/5.3.1/:/usr/lib/gcc/i686-redhat-linux/5.3.1/../../../:/lib/:/usr/lib/]
    ignore line: [COLLECT_GCC_OPTIONS=’-v’ ‘-o’ ‘cmTC_ebc7e’ ‘-rdynamic’ ‘-mtune=generic’ ‘-march=i686’]
    link line: [ /usr/libexec/gcc/i686-redhat-linux/5.3.1/collect2 -plugin /usr/libexec/gcc/i686-redhat-linux/5.3.1/liblto_plugin.so -plugin-

    opt=/usr/libexec/gcc/i686-redhat-linux/5.3.1/lto-wrapper -plugin-opt=-fresolution=/tmp/ccaps53h.res -plugin-opt=-pass-through=-lgcc -plugin-

    opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s –build-id –no-add-

    needed –eh-frame-hdr –hash-style=gnu -m elf_i386 -export-dynamic -dynamic-linker /lib/ld-linux.so.2 -o cmTC_ebc7e /usr/lib/gcc/i686-redhat-

    linux/5.3.1/../../../crt1.o /usr/lib/gcc/i686-redhat-linux/5.3.1/../../../crti.o /usr/lib/gcc/i686-redhat-linux/5.3.1/crtbegin.o –

    L/usr/lib/gcc/i686-redhat-linux/5.3.1 -L/usr/lib/gcc/i686-redhat-linux/5.3.1/../../.. CMakeFiles/cmTC_ebc7e.dir/CMakeCCompilerABI.c.o -lgcc —

    as-needed -lgcc_s –no-as-needed -lc -lgcc –as-needed -lgcc_s –no-as-needed /usr/lib/gcc/i686-redhat-linux/5.3.1/crtend.o /usr/lib/gcc/i686-

    redhat-linux/5.3.1/../../../crtn.o]
    arg [/usr/libexec/gcc/i686-redhat-linux/5.3.1/collect2] ==> ignore
    arg [-plugin] ==> ignore
    arg [/usr/libexec/gcc/i686-redhat-linux/5.3.1/liblto_plugin.so] ==> ignore
    arg [-plugin-opt=/usr/libexec/gcc/i686-redhat-linux/5.3.1/lto-wrapper] ==> ignore
    arg [-plugin-opt=-fresolution=/tmp/ccaps53h.res] ==> ignore
    arg [-plugin-opt=-pass-through=-lgcc] ==> ignore
    arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore
    arg [-plugin-opt=-pass-through=-lc] ==> ignore
    arg [-plugin-opt=-pass-through=-lgcc] ==> ignore
    arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore
    arg [–build-id] ==> ignore
    arg [–no-add-needed] ==> ignore
    arg [–eh-frame-hdr] ==> ignore
    arg [–hash-style=gnu] ==> ignore
    arg [-m] ==> ignore
    arg [elf_i386] ==> ignore
    arg [-export-dynamic] ==> ignore
    arg [-dynamic-linker] ==> ignore
    arg [/lib/ld-linux.so.2] ==> ignore
    arg [-o] ==> ignore
    arg [cmTC_ebc7e] ==> ignore
    arg [/usr/lib/gcc/i686-redhat-linux/5.3.1/../../../crt1.o] ==> ignore
    arg [/usr/lib/gcc/i686-redhat-linux/5.3.1/../../../crti.o] ==> ignore
    arg [/usr/lib/gcc/i686-redhat-linux/5.3.1/crtbegin.o] ==> ignore
    arg [-L/usr/lib/gcc/i686-redhat-linux/5.3.1] ==> dir [/usr/lib/gcc/i686-redhat-linux/5.3.1]
    arg [-L/usr/lib/gcc/i686-redhat-linux/5.3.1/../../..] ==> dir [/usr/lib/gcc/i686-redhat-linux/5.3.1/../../..]
    arg [CMakeFiles/cmTC_ebc7e.dir/CMakeCCompilerABI.c.o] ==> ignore
    arg [-lgcc] ==> lib [gcc]
    arg [–as-needed] ==> ignore
    arg [-lgcc_s] ==> lib [gcc_s]
    arg [–no-as-needed] ==> ignore
    arg [-lc] ==> lib [c]
    arg [-lgcc] ==> lib [gcc]
    arg [–as-needed] ==> ignore
    arg [-lgcc_s] ==> lib [gcc_s]
    arg [–no-as-needed] ==> ignore
    arg [/usr/lib/gcc/i686-redhat-linux/5.3.1/crtend.o] ==> ignore
    arg [/usr/lib/gcc/i686-redhat-linux/5.3.1/../../../crtn.o] ==> ignore
    remove lib [gcc]
    remove lib [gcc_s]
    remove lib [gcc]
    remove lib [gcc_s]
    collapse library dir [/usr/lib/gcc/i686-redhat-linux/5.3.1] ==> [/usr/lib/gcc/i686-redhat-linux/5.3.1]
    collapse library dir [/usr/lib/gcc/i686-redhat-linux/5.3.1/../../..] ==> [/usr/lib]
    implicit libs: [c]
    implicit dirs: [/usr/lib/gcc/i686-redhat-linux/5.3.1;/usr/lib]
    implicit fwks: []

    Detecting C [-std=c11] compiler features compiled with the following output:
    Change Dir: /home/Franz/plasma-mediacenter/build/CMakeFiles/CMakeTmp

    Run Build Command:”/usr/bin/gmake” “cmTC_71a4d/fast”
    /usr/bin/gmake -f CMakeFiles/cmTC_71a4d.dir/build.make CMakeFiles/cmTC_71a4d.dir/build
    gmake[1]: Entering directory ‘/home/Franz/plasma-mediacenter/build/CMakeFiles/CMakeTmp’
    Building C object CMakeFiles/cmTC_71a4d.dir/feature_tests.c.o
    /usr/bin/cc -std=c11 -o CMakeFiles/cmTC_71a4d.dir/feature_tests.c.o -c /home/Franz/plasma-mediacenter/build/CMakeFiles/feature_tests.c
    Linking C executable cmTC_71a4d
    /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_71a4d.dir/link.txt –verbose=1
    /usr/bin/cc CMakeFiles/cmTC_71a4d.dir/feature_tests.c.o -o cmTC_71a4d -rdynamic
    gmake[1]: Leaving directory ‘/home/Franz/plasma-mediacenter/build/CMakeFiles/CMakeTmp’

    Feature record: C_FEATURE:1c_function_prototypes
    Feature record: C_FEATURE:1c_restrict
    Feature record: C_FEATURE:1c_static_assert
    Feature record: C_FEATURE:1c_variadic_macros

    Detecting C [-std=c99] compiler features compiled with the following output:
    Change Dir: /home/Franz/plasma-mediacenter/build/CMakeFiles/CMakeTmp

    Run Build Command:”/usr/bin/gmake” “cmTC_07805/fast”
    /usr/bin/gmake -f CMakeFiles/cmTC_07805.dir/build.make CMakeFiles/cmTC_07805.dir/build
    gmake[1]: Entering directory ‘/home/Franz/plasma-mediacenter/build/CMakeFiles/CMakeTmp’
    Building C object CMakeFiles/cmTC_07805.dir/feature_tests.c.o
    /usr/bin/cc -std=c99 -o CMakeFiles/cmTC_07805.dir/feature_tests.c.o -c /home/Franz/plasma-mediacenter/build/CMakeFiles/feature_tests.c
    Linking C executable cmTC_07805
    /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_07805.dir/link.txt –verbose=1
    /usr/bin/cc CMakeFiles/cmTC_07805.dir/feature_tests.c.o -o cmTC_07805 -rdynamic
    gmake[1]: Leaving directory ‘/home/Franz/plasma-mediacenter/build/CMakeFiles/CMakeTmp’

    Feature record: C_FEATURE:1c_function_prototypes
    Feature record: C_FEATURE:1c_restrict
    Feature record: C_FEATURE:0c_static_assert
    Feature record: C_FEATURE:1c_variadic_macros

    Detecting C [-std=c90] compiler features compiled with the following output:
    Change Dir: /home/Franz/plasma-mediacenter/build/CMakeFiles/CMakeTmp

    Run Build Command:”/usr/bin/gmake” “cmTC_cc951/fast”
    /usr/bin/gmake -f CMakeFiles/cmTC_cc951.dir/build.make CMakeFiles/cmTC_cc951.dir/build
    gmake[1]: Entering directory ‘/home/Franz/plasma-mediacenter/build/CMakeFiles/CMakeTmp’
    Building C object CMakeFiles/cmTC_cc951.dir/feature_tests.c.o
    /usr/bin/cc -std=c90 -o CMakeFiles/cmTC_cc951.dir/feature_tests.c.o -c /home/Franz/plasma-mediacenter/build/CMakeFiles/feature_tests.c
    Linking C executable cmTC_cc951
    /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_cc951.dir/link.txt –verbose=1
    /usr/bin/cc CMakeFiles/cmTC_cc951.dir/feature_tests.c.o -o cmTC_cc951 -rdynamic
    gmake[1]: Leaving directory ‘/home/Franz/plasma-mediacenter/build/CMakeFiles/CMakeTmp’

    Feature record: C_FEATURE:1c_function_prototypes
    Feature record: C_FEATURE:0c_restrict
    Feature record: C_FEATURE:0c_static_assert
    Feature record: C_FEATURE:0c_variadic_macros

    Reply
  2. hi ravi, i did the install on ubuntu 13.10 as you described. there isnt an icon in the launcher, i found the executable in the plasma media centre newshell folder but it comes up with the error “there was an error launching the aplication” with no details.

    Reply

Got Something to Say? Join the Discussion...

Thank you for taking the time to share your thoughts with us. We appreciate your decision to leave a comment and value your contribution to the discussion. It's important to note that we moderate all comments in accordance with our comment policy to ensure a respectful and constructive conversation.

Rest assured that your email address will remain private and will not be published or shared with anyone. We prioritize the privacy and security of our users.