Difference between revisions of "Building LinuxMCE 1204"

From LinuxMCE
Jump to: navigation, search
(Building LinuxMCE moved to Building LinuxMCE 0804: The instructions are based on the initial work done creating an 0804 version.)
 
m (Phenigma moved page Building LinuxMCE to Building LinuxMCE 1204: data is not relevant for recent releases)
 
(9 intermediate revisions by 3 users not shown)
Line 1: Line 1:
#REDIRECT [[Building LinuxMCE 0804]]
+
[[Category: Building]]
 +
[[category: programmer's Guide]]
 +
{| align="right"
 +
  | __TOC__
 +
  |}
 +
 
 +
{{versioninfo|1204Status=relevant|1204UpdatedDate=2 October 2014|1204UpdatedBy=phenigma}}
 +
The following steps explain how to install a development environment onto your core in a chroot environment, so that your running core and its database are not affected. Alternatively, you could build on a separate machine or virtual machine with a clean Kubuntu install. There are notes to this effect at the end of the page.
 +
 
 +
==Setting up a chroot environment==
 +
Start with becoming root on your core (or standalone builder). The  following steps will need to be done using super user privileges.
 +
  sudo su -
 +
 
 +
===Create the environment===
 +
Note: these steps must be performed only once, if you are creating a chroot environment to build in (recommended)
 +
apt-get install debootstrap
 +
debootstrap --arch i386 precise /opt/builder-ubuntu-precise-i386/
 +
 
 +
====Mount required directories====
 +
Note: these steps must be performed after each reboot (or put in /etc/fstab of the root machine), if you are using a chroot environment
 +
mount --bind /dev /opt/builder-ubuntu-precise-i386/dev
 +
mount none /opt/builder-ubuntu-precise-i386/proc -t proc
 +
mount none /opt/builder-ubuntu-precise-i386/dev/pts -t devpts
 +
 
 +
====Change-root into the environment====
 +
Note: these steps must be performed after each reboot to access to build environment (if in a chroot)
 +
chroot /opt/builder-ubuntu-precise-i386
 +
 
 +
===Verify apt's list of repositories===
 +
Make sure ''/etc/apt/sources.list'' (inside the chroot) contains something very similar to:
 +
deb    <nowiki>http://</nowiki>''archive.ubuntu.com''/ubuntu/ precise  main restricted universe multiverse
 +
deb-src <nowiki>http://</nowiki>''archive.ubuntu.com''/ubuntu/ precise  main restricted universe
 +
deb    <nowiki>http://</nowiki>''archive.ubuntu.com''/ubuntu/ precise-updates  main restricted universe multiverse
 +
deb-src <nowiki>http://</nowiki>''archive.ubuntu.com''/ubuntu/ precise-updates  main restricted universe
 +
deb    <nowiki>http://</nowiki>security.ubuntu.com/ubuntu precise-security  main restricted universe
 +
deb-src <nowiki>http://</nowiki>security.ubuntu.com/ubuntu precise-security  main restricted universe
 +
deb    <nowiki>http://www.e-tobi.net/vdr-experimental/ sid base</nowiki>
 +
deb    <nowiki>http://deb.linuxmce.org/ubuntu/ precise main</nowiki>
 +
 
 +
Add the e-tobi.net GPG key
 +
gpg --keyserver pgp.mit.edu --recv-keys F7180D26AEDAA642
 +
gpg --export --armor F7180D26AEDAA642 | sudo apt-key add -
 +
 
 +
===Installing needed packages===
 +
'''Important!''' Perform these also '''after''' chrooting if you are building in a chrooted environment.
 +
 
 +
If you get messages like ''/usr/bin/locale: Cannot set LC_MESSAGES to default locale: No such file or directory'', that meens that $LANG is set. Either clear the LANG or install the needed language pack (english given example given in the code-snip below).
 +
 
 +
(Leave the root password for MySQL empty.)
 +
apt-get update
 +
 +
# Uncomment either of lines below if needed (see explanation above)
 +
#unset LANG
 +
#apt-get install language-pack-en-base
 +
 +
apt-get dist-upgrade
 +
apt-get install aptitude openssh-client mysql-server
 +
 
 +
If you are installing on a chrooted environment and get an error similar to the following:
 +
<pre>
 +
invoke-rc.d: initscript mysql, action "start" failed.
 +
dpkg: error processing mysql-server-5.5 (--configure):
 +
subprocess installed post-installation script returned error exit status 1
 +
No apport report written because MaxReports is reached already
 +
</pre>
 +
It may because the installer tries to start MySQL and is unable to due to networking so try running the
 +
step below (Reconfigure to not open TCP-IP network port) and then running
 +
<pre>
 +
apt-get install mysql-server
 +
</pre>
 +
again.
 +
 
 +
 
 +
====Reconfigure MySQL to not open a TCP-IP network port====
 +
(only needed if you are building in a chrooted environment)
 +
<nowiki>sed 's/^[^#]*bind-address[[:space:]]*=.*$/#&\nskip-networking/' -i /etc/mysql/my.cnf</nowiki>
 +
 
 +
====Start MySQL Server====
 +
Do not execute the mysql start before doing the sed statement listed above.
 +
/etc/init.d/mysql start
 +
 
 +
==Building from source==
 +
For a more in detail description of all the steps involved see [[Building LinuxMCE 0804]]
 +
 
 +
Currently the focus is on getting the following to work completely.
 +
 
 +
===Getting started===
 +
You should only have to do this part once initially.
 +
 
 +
====Obtaining the build scripts====
 +
apt-get install subversion
 +
svn co http://svn.linuxmce.org/svn/trunk/src/Ubuntu_Helpers_NoHardcode
 +
 
 +
====Installing the build scripts====
 +
cd Ubuntu_Helpers_NoHardcode
 +
./install.sh
 +
 
 +
====Configuring the build scripts====
 +
cat >/etc/lmce-build/builder.custom.conf <<EOF
 +
 +
# Avoid DVD build step[s]
 +
do_not_build_sl_dvd="yes"
 +
do_not_build_dl_dvd="yes"
 +
 +
 +
# Create fake win32 binaries
 +
win32_create_fake="yes"
 +
 +
# Point to the development sqlCVS server for 0810
 +
sqlcvs_host="schema.linuxmce.org"
 +
EOF
 +
 
 +
===Preparing for build===
 +
 
 +
cd /usr/local/lmce-build
 +
 
 +
The preparation steps one at a time (recommended):
 +
prepare-scripts/install-build-pkgs.sh
 +
#prepare-scripts/cd1-prepare.sh
 +
#prepare-scripts/cd2-prepare.sh
 +
prepare-scripts/create-diskless-debootstrap.sh
 +
prepare-scripts/import-external-files.sh
 +
prepare-scripts/preseed-build-pkgs.sh
 +
 
 +
Or, you could do them all in one go with:
 +
./prepare.sh
 +
 
 +
===Building from source===
 +
 
 +
All the build steps can be executed seperately (recommended at least the first time):
 +
build-scripts/checkout-svn.sh
 +
build-scripts/import-win32bins.sh
 +
build-scripts/build-replacements.sh
 +
build-scripts/build-makerelease.sh
 +
build-scripts/import-databases.sh
 +
build-scripts/build-maindebs.sh
 +
build-scripts/get-closed-source-debs.sh
 +
build-scripts/create-repo.sh
 +
#build-scripts/cd1-build.sh
 +
#build-scripts/cd2-build.sh
 +
 
 +
Or the following script will run them all:
 +
./build.sh
 +
 
 +
== Using the build's output ==
 +
The build.sh script puts all created deb-files under /var/www. Setup a web server to point to that directory.
 +
sudo apt-get install apache2
 +
 
 +
In the machine, where you want to test the build, follow the instructions on using the alpha build. After the step pre-install-from-repo.sh, go into /etc/apt/sources.list, and replace the deb.linuxmce.org line with
 +
deb <ip-address-of-your-builder> ./
 +
and re-run apt-get update
 +
 
 +
== Notes ==
 +
If you want to speed up building on a multi-core machine, create (or append) /etc/lmce-build/builder.custom.conf and add a line such as:
 +
NUMJOBS=4
 +
to build using 4 threads.  Adjust for you cpu core # +1 for optimal build efficiency.
 +
 
 +
=== Without -j 2 ===
 +
23:36:44  Compiling and building packages
 +
01:42:50  *** STEP: Download closed source debs
 +
 
 +
Total: roughly 2h 6minutes for compiling
 +
 
 +
=== With -j 2 ===
 +
13:13:44  Compiling and building packages
 +
14:51:56  *** STEP: Download closed source debs
 +
 
 +
Total: roughly 1h 38minutes for compiling
 +
 
 +
=== Notes for installing on a virgin Kubuntu 1204 installation (no chroot) ===
 +
* There is no need to run the command below, IF you are not chroot'ing, but it also doesn't hurt unless you expect to access the db from an external system.
 +
  sed 's/^[^#]*bind-address[[:space:]]*=.*$/#&\nskip-networking/' -i /etc/mysql/my.cnf
 +
 
 +
* After you reboot, you will notice that KDE mysteriously vanished, and you will go to a gnome desktop.  I'm not sure why this is, but it does not seem to affect the builder any. -- is this still the case???  <phenigma>
 +
 
 +
* If you want to run this builder headless (or just want to ability to ssh in to it), then you must configure it for ssh access by installing an ssh server
 +
sudo apt-get install openssh-server

Latest revision as of 20:19, 10 November 2017

Version Status Date Updated Updated By
710 Unknown N/A N/A
810 Unknown N/A N/A
1004 Unknown N/A N/A
1204 relevant 2 October 2014 phenigma
1404 Unknown N/A N/A
Usage Information

The following steps explain how to install a development environment onto your core in a chroot environment, so that your running core and its database are not affected. Alternatively, you could build on a separate machine or virtual machine with a clean Kubuntu install. There are notes to this effect at the end of the page.

Setting up a chroot environment

Start with becoming root on your core (or standalone builder). The following steps will need to be done using super user privileges.

 sudo su -

Create the environment

Note: these steps must be performed only once, if you are creating a chroot environment to build in (recommended)

apt-get install debootstrap
debootstrap --arch i386 precise /opt/builder-ubuntu-precise-i386/

Mount required directories

Note: these steps must be performed after each reboot (or put in /etc/fstab of the root machine), if you are using a chroot environment

mount --bind /dev /opt/builder-ubuntu-precise-i386/dev
mount none /opt/builder-ubuntu-precise-i386/proc -t proc
mount none /opt/builder-ubuntu-precise-i386/dev/pts -t devpts

Change-root into the environment

Note: these steps must be performed after each reboot to access to build environment (if in a chroot)

chroot /opt/builder-ubuntu-precise-i386

Verify apt's list of repositories

Make sure /etc/apt/sources.list (inside the chroot) contains something very similar to:

deb     http://archive.ubuntu.com/ubuntu/ precise  main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ precise  main restricted universe
deb     http://archive.ubuntu.com/ubuntu/ precise-updates  main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ precise-updates  main restricted universe
deb     http://security.ubuntu.com/ubuntu precise-security  main restricted universe
deb-src http://security.ubuntu.com/ubuntu precise-security  main restricted universe
deb     http://www.e-tobi.net/vdr-experimental/ sid base
deb     http://deb.linuxmce.org/ubuntu/ precise main

Add the e-tobi.net GPG key

gpg --keyserver pgp.mit.edu --recv-keys F7180D26AEDAA642
gpg --export --armor F7180D26AEDAA642 | sudo apt-key add -

Installing needed packages

Important! Perform these also after chrooting if you are building in a chrooted environment.

If you get messages like /usr/bin/locale: Cannot set LC_MESSAGES to default locale: No such file or directory, that meens that $LANG is set. Either clear the LANG or install the needed language pack (english given example given in the code-snip below).

(Leave the root password for MySQL empty.)

apt-get update

#  Uncomment either of lines below if needed (see explanation above)
#unset LANG
#apt-get install language-pack-en-base

apt-get dist-upgrade
apt-get install aptitude openssh-client mysql-server

If you are installing on a chrooted environment and get an error similar to the following:

invoke-rc.d: initscript mysql, action "start" failed.
dpkg: error processing mysql-server-5.5 (--configure):
 subprocess installed post-installation script returned error exit status 1
No apport report written because MaxReports is reached already

It may because the installer tries to start MySQL and is unable to due to networking so try running the step below (Reconfigure to not open TCP-IP network port) and then running

apt-get install mysql-server

again.


Reconfigure MySQL to not open a TCP-IP network port

(only needed if you are building in a chrooted environment)

sed 's/^[^#]*bind-address[[:space:]]*=.*$/#&\nskip-networking/' -i /etc/mysql/my.cnf

Start MySQL Server

Do not execute the mysql start before doing the sed statement listed above.

/etc/init.d/mysql start

Building from source

For a more in detail description of all the steps involved see Building LinuxMCE 0804

Currently the focus is on getting the following to work completely.

Getting started

You should only have to do this part once initially.

Obtaining the build scripts

apt-get install subversion
svn co http://svn.linuxmce.org/svn/trunk/src/Ubuntu_Helpers_NoHardcode

Installing the build scripts

cd Ubuntu_Helpers_NoHardcode
./install.sh

Configuring the build scripts

cat >/etc/lmce-build/builder.custom.conf <<EOF

# Avoid DVD build step[s]
do_not_build_sl_dvd="yes"
do_not_build_dl_dvd="yes"


# Create fake win32 binaries
win32_create_fake="yes"

# Point to the development sqlCVS server for 0810
sqlcvs_host="schema.linuxmce.org"
EOF

Preparing for build

cd /usr/local/lmce-build

The preparation steps one at a time (recommended):

prepare-scripts/install-build-pkgs.sh
#prepare-scripts/cd1-prepare.sh
#prepare-scripts/cd2-prepare.sh
prepare-scripts/create-diskless-debootstrap.sh
prepare-scripts/import-external-files.sh
prepare-scripts/preseed-build-pkgs.sh

Or, you could do them all in one go with:

./prepare.sh

Building from source

All the build steps can be executed seperately (recommended at least the first time):

build-scripts/checkout-svn.sh
build-scripts/import-win32bins.sh
build-scripts/build-replacements.sh
build-scripts/build-makerelease.sh
build-scripts/import-databases.sh
build-scripts/build-maindebs.sh
build-scripts/get-closed-source-debs.sh
build-scripts/create-repo.sh
#build-scripts/cd1-build.sh
#build-scripts/cd2-build.sh

Or the following script will run them all:

./build.sh

Using the build's output

The build.sh script puts all created deb-files under /var/www. Setup a web server to point to that directory.

sudo apt-get install apache2

In the machine, where you want to test the build, follow the instructions on using the alpha build. After the step pre-install-from-repo.sh, go into /etc/apt/sources.list, and replace the deb.linuxmce.org line with

deb <ip-address-of-your-builder> ./

and re-run apt-get update

Notes

If you want to speed up building on a multi-core machine, create (or append) /etc/lmce-build/builder.custom.conf and add a line such as:

NUMJOBS=4

to build using 4 threads. Adjust for you cpu core # +1 for optimal build efficiency.

Without -j 2

23:36:44  Compiling and building packages
01:42:50  *** STEP: Download closed source debs
Total: roughly 2h 6minutes for compiling

With -j 2

13:13:44  Compiling and building packages
14:51:56  *** STEP: Download closed source debs
Total: roughly 1h 38minutes for compiling

Notes for installing on a virgin Kubuntu 1204 installation (no chroot)

  • There is no need to run the command below, IF you are not chroot'ing, but it also doesn't hurt unless you expect to access the db from an external system.
 sed 's/^[^#]*bind-addressspace:*=.*$/#&\nskip-networking/' -i /etc/mysql/my.cnf
  • After you reboot, you will notice that KDE mysteriously vanished, and you will go to a gnome desktop. I'm not sure why this is, but it does not seem to affect the builder any. -- is this still the case??? <phenigma>
  • If you want to run this builder headless (or just want to ability to ssh in to it), then you must configure it for ssh access by installing an ssh server
sudo apt-get install openssh-server