Difference between revisions of "Building LinuxMCE 0810"

From LinuxMCE
Jump to: navigation, search
(Notes)
m
 
(37 intermediate revisions by 11 users not shown)
Line 1: Line 1:
[[category: tutorials]]
+
[[Category: Building]]
 
[[category: programmer's Guide]]
 
[[category: programmer's Guide]]
 
{| align="right"
 
{| align="right"
Line 5: Line 5:
 
   |}
 
   |}
  
==Setting up a chroot environment==
+
{{versioninfo|810Status=relevant|810UpdatedDate=8 October 2010|810UpdatedBy=golgoj4}}
These steps are optional as you can just build on a clean Kubuntu-8.10 install. But required if you want to build using an existing 0810 core without ruining it's run-time database.
+
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-8.10 install. There are notes to this effect at the end of the page.
  
Start with becoming root as the following steps will need to be done using super user privileges.
+
This information is relevant for 810 as well as for 1004. For 810 use intrepid, for 1004, replace every 810 with 1004, and every intrepid with lucid.
 +
 
 +
For 1204 please see [[Building_LinuxMCE]]
 +
 
 +
==Setting up a chroot environment==
 +
Start with becoming root on your core. The following steps will need to be done using super user privileges.
 
   sudo su -
 
   sudo su -
  
 
===Create the environment===
 
===Create the environment===
 
  apt-get install debootstrap
 
  apt-get install debootstrap
  debootstrap --arch i386 intrepid /media/kubuntu-8.10/
+
  debootstrap --arch i386 intrepid /media/kubuntu-8.10/ http://old-releases.ubuntu.com/ubuntu
 +
# or for 1004
 +
debootstrap --arch i386 lucid /media/kubuntu-8.10/  
  
===Steps after each reboot ===
+
 
(Note: For First building, perform steps in the '''Getting Started''' section)
+
Note: the following steps will also have to be performed after each reboot
 
====Mount required directories====
 
====Mount required directories====
 
  mount --bind /dev /media/kubuntu-8.10/dev
 
  mount --bind /dev /media/kubuntu-8.10/dev
Line 24: Line 31:
 
====Change-root into the environment====
 
====Change-root into the environment====
 
  chroot /media/kubuntu-8.10
 
  chroot /media/kubuntu-8.10
====Start MySQL Server====
 
Do not execute the mysql start before doing the sed statement listed in the '''Installing needed packages section''' below to reconfigure MySQL.
 
/etc/init.d/mysql start
 
  
 
===Verify apt's list of repositories===
 
===Verify apt's list of repositories===
 
Make sure ''/etc/apt/sources.list'' (inside the chroot) contains something very similar to:
 
Make sure ''/etc/apt/sources.list'' (inside the chroot) contains something very similar to:
  deb       <nowiki>http://</nowiki>''us.archive.ubuntu.com''/ubuntu/ intrepid  main restricted universe multiverse  
+
  deb     <nowiki>http://</nowiki>''old-releases.ubuntu.com''/ubuntu/ intrepid  main restricted universe multiverse
  deb-src <nowiki>http://</nowiki>''us.archive.ubuntu.com''/ubuntu/ intrepid  main restricted universe
+
  deb-src <nowiki>http://</nowiki>''old-releases.ubuntu.com''/ubuntu/ intrepid  main restricted universe
  deb       <nowiki>http://</nowiki>''us.archive.ubuntu.com''/ubuntu/ intrepid-updates  main restricted universe multiverse
+
  deb     <nowiki>http://</nowiki>''old-releases.ubuntu.com''/ubuntu/ intrepid-updates  main restricted universe multiverse
  deb-src <nowiki>http://</nowiki>''us.archive.ubuntu.com''/ubuntu/ intrepid-updates  main restricted universe
+
  deb-src <nowiki>http://</nowiki>''old-releases.ubuntu.com''/ubuntu/ intrepid-updates  main restricted universe
  deb       <nowiki>http://</nowiki>security.ubuntu.com/ubuntu intrepid-security  main restricted universe
+
  deb     <nowiki>http://</nowiki>security.ubuntu.com/ubuntu intrepid-security  main restricted universe
 
  deb-src <nowiki>http://</nowiki>security.ubuntu.com/ubuntu intrepid-security  main restricted universe
 
  deb-src <nowiki>http://</nowiki>security.ubuntu.com/ubuntu intrepid-security  main restricted universe
 +
deb    <nowiki>http://www.e-tobi.net/vdr-experimental/ sid base</nowiki>
 +
deb    <nowiki>http://deb.linuxmce.org/ubuntu/ intrepid beta2</nowiki>
 +
deb    <nowiki>http://deb.linuxmce.org/ubuntu/ 20dev_ubuntu main</nowiki>
  
 
The following line is added to the sources.list during the prepare script and should not be added before. [[User:Posde|posde]]
 
The following line is added to the sources.list during the prepare script and should not be added before. [[User:Posde|posde]]
  deb       <nowiki>http://</nowiki>debian.slimdevices.com/ stable  main
+
  deb     <nowiki>http://</nowiki>debian.slimdevices.com/ stable  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===
 
===Installing needed packages===
'''Important!''' Perform these also '''after''' chrooting.
+
'''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.)
 
(Leave the root password for MySQL empty.)
 
  apt-get update
 
  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 dist-upgrade
 
  apt-get install aptitude openssh-client mysql-server
 
  apt-get install aptitude openssh-client mysql-server
  
Reconfigure MySQL to not open a TCP-IP network port:
+
====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>
 
  <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==
 
==Building from source==
Line 58: Line 81:
 
===Getting started===
 
===Getting started===
 
You should only have to do this part once initially.
 
You should only have to do this part once initially.
 
The following steps will require superuser privileges, and it is '''always''' wise to refresh the packages list beforehand.
 
sudo su -
 
apt-get update
 
  
 
====Obtaining the build scripts====
 
====Obtaining the build scripts====
Line 70: Line 89:
 
  cd Ubuntu_Helpers_NoHardcode
 
  cd Ubuntu_Helpers_NoHardcode
 
  ./install.sh
 
  ./install.sh
cd /usr/local/lmce-build
 
  
 
====Configuring the build scripts====
 
====Configuring the build scripts====
 
  cat >/etc/lmce-build/builder.custom.conf <<EOF
 
  cat >/etc/lmce-build/builder.custom.conf <<EOF
 
   
 
   
  # Uncomment to avoid DVD build step[s]
+
  # Avoid DVD build step[s]
 
  do_not_build_sl_dvd="yes"
 
  do_not_build_sl_dvd="yes"
 
  do_not_build_dl_dvd="yes"
 
  do_not_build_dl_dvd="yes"
 
   
 
   
 
   
 
   
  # Uncomment to create fake win32 binaries
+
  # Create fake win32 binaries
 
  win32_create_fake="yes"
 
  win32_create_fake="yes"
 
   
 
   
Line 103: Line 121:
  
 
===Building from source===
 
===Building from source===
 
cd /usr/local/lmce-build
 
  
 
All the build steps can be executed seperately (recommended at least the first time):
 
All the build steps can be executed seperately (recommended at least the first time):
Line 122: Line 138:
  
 
== Using the build's output ==
 
== 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. 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
+
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> ./
 
  deb <ip-address-of-your-builder> ./
 
and re-run apt-get update
 
and re-run apt-get update
 
You will find, that two packages are missing. Get those two packages from the regular repository and put them into the builders /var/www directory
 
You will find, that two packages are missing. Get those two packages from the regular repository and put them into the builders /var/www directory
  cd /var/www
+
 
 +
  pushd /var/www
 
  wget http://deb.linuxmce.org/ubuntu/dists/intrepid/lmce-alpha2/binary-all/libft-perl_1.0_all.deb
 
  wget http://deb.linuxmce.org/ubuntu/dists/intrepid/lmce-alpha2/binary-all/libft-perl_1.0_all.deb
 
  wget http://deb.linuxmce.org/ubuntu/dists/intrepid/lmce-alpha-latest/binary-all/mail-transport-agent_1.0_all.deb  
 
  wget http://deb.linuxmce.org/ubuntu/dists/intrepid/lmce-alpha-latest/binary-all/mail-transport-agent_1.0_all.deb  
and you now you need to regenerate the package index file for the deb repository. While still in the /var/www directory execute
 
 
  dpkg-scanpackages . >Packages
 
  dpkg-scanpackages . >Packages
 
  gzip -c Packages > Packages.gz
 
  gzip -c Packages > Packages.gz
 +
popd
  
 
Now, on your new or test core, execute another apt-get update, and you are good to go for the mce-install.sh
 
Now, on your new or test core, execute another apt-get update, and you are good to go for the mce-install.sh
 +
 
== Notes ==
 
== Notes ==
 
If you want to speed up building on a multi-core machine, amend build-scripts/build-maindebs.sh and change the call to MakeRelease to include -j <number of cores>. Before executing the build, copy libresolution.so from an older build to your lib dir, and run ldconfig.
 
If you want to speed up building on a multi-core machine, amend build-scripts/build-maindebs.sh and change the call to MakeRelease to include -j <number of cores>. Before executing the build, copy libresolution.so from an older build to your lib dir, and run ldconfig.
Line 148: Line 169:
  
 
  Total: roughly 1h 38minutes for compiling
 
  Total: roughly 1h 38minutes for compiling
 +
 +
=== Notes for installing on a virgin Kubuntu 8.10 installation (no chroot) ===
 +
* As pointed out above, there is no need to run the command below, IF you are not chroot'ing
 +
  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.
 +
 +
* 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 01:59, 3 October 2014

Version Status Date Updated Updated By
710 Unknown N/A N/A
810 relevant 8 October 2010 golgoj4
1004 Unknown N/A N/A
1204 Unknown N/A N/A
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-8.10 install. There are notes to this effect at the end of the page.

This information is relevant for 810 as well as for 1004. For 810 use intrepid, for 1004, replace every 810 with 1004, and every intrepid with lucid.

For 1204 please see Building_LinuxMCE

Setting up a chroot environment

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

 sudo su -

Create the environment

apt-get install debootstrap
debootstrap --arch i386 intrepid /media/kubuntu-8.10/ http://old-releases.ubuntu.com/ubuntu
# or for 1004
debootstrap --arch i386 lucid /media/kubuntu-8.10/ 


Note: the following steps will also have to be performed after each reboot

Mount required directories

mount --bind /dev /media/kubuntu-8.10/dev
mount none /media/kubuntu-8.10/proc -t proc
mount none /media/kubuntu-8.10/dev/pts -t devpts

Change-root into the environment

chroot /media/kubuntu-8.10

Verify apt's list of repositories

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

deb     http://old-releases.ubuntu.com/ubuntu/ intrepid  main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ intrepid  main restricted universe
deb     http://old-releases.ubuntu.com/ubuntu/ intrepid-updates  main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ intrepid-updates  main restricted universe
deb     http://security.ubuntu.com/ubuntu intrepid-security  main restricted universe
deb-src http://security.ubuntu.com/ubuntu intrepid-security  main restricted universe
deb     http://www.e-tobi.net/vdr-experimental/ sid base
deb     http://deb.linuxmce.org/ubuntu/ intrepid beta2
deb     http://deb.linuxmce.org/ubuntu/ 20dev_ubuntu main

The following line is added to the sources.list during the prepare script and should not be added before. posde

deb      http://debian.slimdevices.com/ stable  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

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/branches/LinuxMCE-0810/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 You will find, that two packages are missing. Get those two packages from the regular repository and put them into the builders /var/www directory

pushd /var/www
wget http://deb.linuxmce.org/ubuntu/dists/intrepid/lmce-alpha2/binary-all/libft-perl_1.0_all.deb
wget http://deb.linuxmce.org/ubuntu/dists/intrepid/lmce-alpha-latest/binary-all/mail-transport-agent_1.0_all.deb 
dpkg-scanpackages . >Packages
gzip -c Packages > Packages.gz
popd

Now, on your new or test core, execute another apt-get update, and you are good to go for the mce-install.sh

Notes

If you want to speed up building on a multi-core machine, amend build-scripts/build-maindebs.sh and change the call to MakeRelease to include -j <number of cores>. Before executing the build, copy libresolution.so from an older build to your lib dir, and run ldconfig.

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 8.10 installation (no chroot)

  • As pointed out above, there is no need to run the command below, IF you are not chroot'ing
 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.
  • 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