Difference between revisions of "SME on CentOS 6"

From SME Server
Jump to navigationJump to search
 
(177 intermediate revisions by 8 users not shown)
Line 1: Line 1:
{{Level|Developer}}
+
Back to [[SME_Server_9.0_Development|SME Server 9.0 Development]]
  
  
{{Note box|Do NOT try this on anything other than a Virtual Machine, or a test machine.}}
+
{{note box| This page is now obsolete, kept for reference only. see [[SME Server:9.0|SME Server 9 Release Notes]]}}
Despite the Developer warning above, please don't let it stop you from having a go. Try to follow what others have done and repeat it. Make any notes yourself and post your findings. Daniel from Firewall Services is further ahead https://wikit.firewall-services.com/doku.php?id=smedev:install_sme_el6
 
  
His notes are also below.
+
----
  
 +
The [http://wiki.contribs.org/index.php?title=SME_on_CentOS_6&oldid=18561 previous] instructions on how to install SME packages on CentOS 6 minimal are now out of date, but are still available in the history [http://wiki.contribs.org/index.php?title=SME_on_CentOS_6&action=history archive].  Please see [[SME9Alpha | SME9Alpha]] for the latest development steps.
  
== SME 9, based on CentOS 6 ==
+
The [http://wiki.contribs.org/index.php?title=SME_on_CentOS_6&oldid=18561 previous] version can be usefull as a starting point for:
 +
* Creating an OpenVZ template for SME
 +
* Building SME on other future CentOS versions
 +
* Building SME on CentOS like distros
  
=== Prerequisites ===
+
<noinclude>[[Category:Howto]][[Category:SME9-Development]]
* VIrtual machine (Vmware, Parallels or Virtualbox)
 
* Centos Minimal 64-bit architecture. 32-bit may follow later
 
* Access to EPEL, RPMForge and ATrpms repositories
 
* Setting up a RPM Building environment
 
 
 
=== Current status ===
 
* Last update Januari 21st, 2013
 
* Identify all SME Server specific packages (John C.) See notes below.
 
* Setting up a RPM building environment (Ian W.)
 
* booting CentOS 6 with the SME packages installed. (Daniel)
 
* Notes:
 
** Some RPMs need to be got from EPEL, RPMForge and ATrpms
 
** Needs a hack in yum-priority.conf
 
** selinux-policy-targeted and authconfig need to be removed
 
** You have to completely disable SELinux in /etc/sysconfig/selinux
 
** LOTS of things are broken, but then that's no great surprise.
 
** If we have a booting system we can start to look at fixing it.
 
** nke has been playing on 32 bit as well - I guess it will probably be worth replicating from 64 to 32 to see what happens.
 
 
 
 
 
There are two paths that I can see to testing this:
 
 
 
1. Install CentOS 6 Minimal and try to add the equivalent 6 packages and see what is missing.
 
 
 
2. Install CentOS 6 Minimal and then try to add existing SME v8 (el5) packages
 
 
 
This how-to takes on route 1.
 
 
 
== Installing CentOS 6 minimal ==
 
First a few notes on CentOS 6 minimal, which is a bare bones install with very little on board. You can download a copy from one of the CentOS mirrors [http://www.centos.org/modules/tinycontent/index.php?id=30 here]
 
 
 
* As per above note, only use Virtual Machine for testing purposes. A good free VM package can be obtained [https://www.virtualbox.org/wiki/Downloads here]
 
* You might want to note down as much as possible so you yourself and others can reproduce the actions
 
* Don't use yum with the '-y' flag (install/upgrade without further user interaction) when using the yum install/upgrade commands. (beware copy/paste yum commands)
 
* you might want to note down all packages listed by yum to be installed/upgraded AND their dependencies
 
* When you are using 64-bit, please add '--exlcude=*86' at the end of the yum command line. This will prevent i386/i686 packages to be installed as 'required' dependencies
 
* Make regular snapshots of your Virtual Machine and describe them specifically. At least when you've reached an important milestone for yourself
 
 
 
==== Installing the ISO ====
 
 
 
* Just install a minimal el6 installation (I just installed a few utilities like htop, screen, rsync, vim, openssh-clients mc etc…). You can use either the DVD, the minimal CD install, a net install with PXE, it's up to you
 
 
 
==== Enable networking ====
 
 
 
Each boot you have to start the network etc etc. I decided it was better with the minimal install and touch as little as possible - if I could then get SME packages installed I could then use that to configure networking later.
 
 
 
To start the networking
 
./etc/sysconfig/network-scripts/ifup-eth eth0
 
 
 
or
 
dhclient eth0
 
 
 
or if you want to assign a IP address yourself.
 
ifconfig eth0 192.168.1.2
 
echo "nameserver 192.168.1.254" >> /etc/resolv.conf
 
route add default gw 192.168.1.254 eth0
 
 
To make your changes permanent you will need to edit the configuration file to make it active on boot. There is only the vi text editor, you can also install nano.
 
yum install nano
 
nano /etc/sysconfig/network-scripts/ifcfg-eth0
 
and set ONBOOT=”YES”
 
 
 
For the current purposes I decided to start manually each time so I that left the base settings as untouched as possible.
 
 
 
==== Enable SSH ====
 
 
 
On first run make sure we have ssh installed so we can use a terminal to login - much easier for copy and pasting stuff :
 
yum install open-ssh*
 
 
 
To get to the sshd service you will need this on each boot :
 
service iptables stop
 
service sshd start
 
 
 
==== Disable SELinux ====
 
It will be easier to see what's going on (and turn off selinux at kernel level, just to be sure)
 
sed -i -e 's/rhgb quiet/selinux=0/g' /boot/grub/menu.lst
 
sed -i -e 's/SELINUX=.*/SELINUX=disabled/g' /etc/sysconfig/selinux
 
 
 
==== Remove selinux-policy-targeted and authconfig ====
 
They conflict with some e-smith/smeserver packages
 
yum remove selinux-policy-targeted authconfig
 
 
 
== Configure basic requirements ==
 
==== Configure third party repo ====
 
Enable the EPEL repo
 
rpm -Uvh http://fr2.rpmfind.net/linux/epel/6/i386/epel-release-6-8.noarch.rpm
 
 
 
Enable the ATrpms repo
 
rpm -Uvh http://dl.atrpms.net/el6-x86_64/atrpms/stable/atrpms-repo-6-6.el6.x86_64.rpm
 
 
 
Enable RPMForge
 
rpm -Uvh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
 
 
 
Configure SME repository (EL5 version for now)
 
cat<<'EOF' > /etc/yum.repos.d/sme.repo
 
[smeaddons]
 
enabled=1
 
mirrorlist=http://mirrorlist.contribs.org/mirrorlist/smeaddons-8
 
name=SME Server - addons
 
gpgcheck=1
 
enablegroups=1
 
#
 
[smecontribs]
 
enabled=0
 
mirrorlist=http://mirrorlist.contribs.org/mirrorlist/smecontribs-8
 
name=SME Server - contribs
 
gpgcheck=1
 
enablegroups=1
 
#
 
[smedev]
 
enabled=0
 
mirrorlist=http://mirrorlist.contribs.org/mirrorlist/smedev-8
 
name=SME Server - dev
 
gpgcheck=1
 
enablegroups=1
 
#
 
[smeextras]
 
enabled=1
 
mirrorlist=http://mirrorlist.contribs.org/mirrorlist/smeextras-8
 
name=SME Server - extras
 
gpgcheck=1
 
enablegroups=1
 
#
 
[smeos]
 
enabled=1
 
mirrorlist=http://mirrorlist.contribs.org/mirrorlist/smeos-8
 
name=SME Server - os
 
gpgcheck=1
 
enablegroups=1
 
#
 
[smetest]
 
enabled=0
 
mirrorlist=http://mirrorlist.contribs.org/mirrorlist/smetest-8
 
name=SME Server - test
 
gpgcheck=1
 
enablegroups=1
 
#
 
[smeupdates]
 
enabled=1
 
mirrorlist=http://mirrorlist.contribs.org/mirrorlist/smeupdates-8
 
name=SME Server - updates
 
gpgcheck=1
 
enablegroups=1
 
#
 
[smeupdates-testing]
 
enabled=0
 
mirrorlist=http://mirrorlist.contribs.org/mirrorlist/smeupdates-testing-8
 
name=SME Server - updates testing
 
gpgcheck=1
 
enablegroups=1
 
#
 
EOF
 
 
 
==== import SME's GPG key ====
 
rpm --import http://sme-mirror.firewall-services.com/releases/8/smeos/x86_64/RPM-GPG-KEY-SMEServer
 
 
 
==== install yum-plugin-priorities ====
 
yum install yum-plugin-priorities
 
 
 
==== Configure yum priorities ====
 
Set the base, updates and extras repo in /etc/yum.repos.d/CentOS-Base.repo a high priority (respectivly 50, 40, 50)
 
[...]
 
[base]
 
name=CentOS-$releasever - Base
 
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
 
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
 
gpgcheck=1
 
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
 
priority=50
 
#
 
#released updates
 
[updates]
 
name=CentOS-$releasever - Updates
 
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
 
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
 
gpgcheck=1
 
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
 
priority=40
 
#
 
#additional packages that may be useful
 
[extras]
 
name=CentOS-$releasever - Extras
 
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
 
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
 
gpgcheck=1
 
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
 
priority=50
 
#
 
[...]
 
 
 
==== Set Epel to a priority of 60 in /etc/yum.repos.d/epel.repo ====
 
[epel]
 
name=Extra Packages for Enterprise Linux 6 - $basearch
 
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
 
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
 
failovermethod=priority
 
enabled=1
 
gpgcheck=1
 
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
 
priority=60
 
 
 
==== Set RPMForge to a priority of 65 in /etc/yum.repos.d/rpmforge.repo ====
 
[rpmforge]
 
name = RHEL $releasever - RPMforge.net - dag
 
baseurl = http://apt.sw.be/redhat/el6/en/$basearch/rpmforge
 
mirrorlist = http://apt.sw.be/redhat/el6/en/mirrors-rpmforge
 
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge
 
enabled = 1
 
protect = 0
 
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
 
gpgcheck = 1
 
priority=65
 
 
 
==== Set atrpms to priority of 70 in /etc/yum.repos.d/atrpms.repo ====
 
[atrpms]
 
name=Red Hat Enterprise Linux $releasever - $basearch - ATrpms
 
failovermethod=priority
 
baseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/stable
 
enabled=1
 
gpgcheck=1
 
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-atrpms
 
priority=70
 
 
 
==== Install some package without dependancy check ====
 
 
 
A few packages have to be installed manually without dependancy check:
 
rpm -Uvh --nodeps http://sme-mirror.firewall-services.com/releases/8/smeupdates/x86_64/RPMS/smeserver-yum-2.2.0-20.el5.sme.noarch.rpm
 
rpm -Uvh --nodeps http://sme-mirror.firewall-services.com/releases/8/smeupdates/x86_64/RPMS/e-smith-samba-2.2.0-49.el5.sme.noarch.rpm
 
rpm -Uvh --nodeps http://sme-mirror.firewall-services.com/releases/8/smeos/x86_64/SME/e-smith-test-2.2.0-1.el5.sme.noarch.rpm
 
 
 
Two perl package need to be installed manually with sme and epel repo disabled (I need to figure out why repo priority doesn't fix this)
 
yum install perl-Razor-Agent perl-Data-UUID --disablerepo=sme\* --disablerepo=epel
 
 
 
== Install e-smith-base ==
 
Now, you should be ready to install e-smith-base. For me, this pulls 222 packages (166MB). For some reason, the GPGKey is not recognized, so just run yum with –nogpgcheck
 
yum --nogpgcheck install e-smith-base
 
 
 
==== Install the remaining e-smith/smeserver packages ====
 
Now install all the remaining e-smith/smeserver packages
 
yum --nogpgcheck install e-smith\* smeserver\*
 
 
 
It should install the following packages and their dependancies:
 
e-smith                     
 
e-smith-LPRng               
 
e-smith-apache               
 
e-smith-backup               
 
e-smith-devtools             
 
e-smith-dynamicdns-dyndns   
 
e-smith-dynamicdns-dyndns.org
 
e-smith-dynamicdns-tzo       
 
e-smith-dynamicdns-yi       
 
e-smith-flexbackup           
 
e-smith-horde               
 
e-smith-hosts               
 
e-smith-imp                 
 
e-smith-ingo                 
 
e-smith-ldap                 
 
e-smith-lib-compspec         
 
e-smith-mysql               
 
e-smith-ntp                 
 
e-smith-oidentd             
 
e-smith-openssh             
 
e-smith-php                 
 
e-smith-pptpd               
 
e-smith-proftpd             
 
e-smith-proxy               
 
e-smith-qmailanalog         
 
e-smith-quota               
 
e-smith-radiusd             
 
e-smith-turba               
 
e-smith-viewlogfiles         
 
smeserver-release
 
 
 
==== Install samba ====
 
Now install samba-client (e-smith-samba has been installed manually without dep check, otherwise it would have pulled samba3x package instead of samba)
 
yum install samba-client
 
 
 
==== Replace upstart with SysVinit ====
 
We've almost finished, we just have to replace upstart with the good old SysVinit, because upstart doesn't support the custom runlevel 7 SME uses
 
rpm -e --nodeps upstart sysvinit-tools
 
rpm -Uvh http://sme-mirror.firewall-services.com/releases/8/smeos/x86_64/SME/SysVinit-2.86-17.el5.x86_64.rpm
 
 
 
==== Move some perl modules ====
 
We need to copy some perl modules to a new directory, because @INC has changed in EL6:
 
cp -a /usr/lib/perl5/site_perl/esmith/ /usr/share/perl5/vendor_perl/
 
 
 
==== Create a service entry for rsyslog ====
 
We need to create a new service entry in the DB, because the standard syslog package is now rsyslog:
 
/sbin/e-smith/db configuration set rsyslog service status enabled
 
cp -a /etc/rc7.d/S05syslog /etc/rc7.d/S05rsyslog
 
 
 
==== Run post-upgrade ====
 
We can now try to post-upgrade
 
/sbin/e-smith/signal-event post-upgrade
 
 
 
 
 
And reboot. Unfortunatly, I wasn't able to reboot properly at this stage, because of the upstart → SysVinit transition (the error message is ”/dev/initctl: No such file or directory”) so I had to destroy the VM completely
 
 
 
== The system boots but completly broken :-) ==
 
Ok, so the system should now boot, but is really not usable, after a quick look, at least the following doesn't work as expected:
 
 
 
* The console on the first boot don't really work. It asks for the admin password (and BTW the password appears in cleartext) but it's all
 
* No network interfaces are detected by the console menu (because kudzu is not installed, only available in SME repo, and require an older python which conflicts with the the one * from EL6)
 
* slapd won't start
 
* httpd won't start
 
* squid won't start
 
* manually running expand-template has no effect (and no error message is printed). But signal-event seems to work (files get expanded and services restarted)
 
* as the network interface are not configured, all the services which requires the internel IP (or the external one) in their config (at least sshd squid and dnscache) won't start
 
* even if we manually add 0.0.0.0 after the ListenAddress line in /etc/ssh/sshd_config, we cannot connect using SSH (the daemon is running, but from a computer on the same network, I get a ssh_exchange_identification: Connection closed by remote host error)
 
* qpsmtpd won't start (can't locate Qpsmtpd/TcpServer.pm in @INC)
 
* There's probably a lot more which is not working
 
 
 
== SME Server specific/required packages ==
 
To get a list of all specific SME Server packages you can run:
 
rpm -qa | grep 'smeserver\|e-smith'| sed -e 's/-[0-9].*//'|sort > smeserver-packages.txt
 
 
 
 
 
== SME Server specific/required perl packages ==
 
I decided to attack perl first as the SME stuff is written in it.
 
 
 
Here is a list of perl files from v8 and their equivalent in CentOS 6 if available....
 
 
 
To get a list of the file names in v8 either do (all file starting with the string 'perl'):
 
rpm -qa --qf '%{NAME}\n' name=perl\*
 
(Thanks Shad !)
 
 
 
or as per suggestion on the lists (All files containing the string 'perl')
 
rpm -qa | grep perl | sed -e 's/-[0-9].*//'
 
(Thanks Gordon !)
 
 
 
To get a alphabetically sorted list (which is easier to compare lists) add '|sort' to the commands above.
 
rpm -qa --qf '%{NAME}\n' name=perl\*|sort
 
rpm -qa | grep perl | sed -e 's/-[0-9].*//'|sort
 
 
 
To export the list to a plain text file you could do:
 
rpm -qa | grep perl | sed -e 's/-[0-9].*//'|sort > perl-list.txt
 
(Thanks HF !)
 
 
 
{{Note box|Which command will be the de facto standard to use so we are all talking about the same list??}}
 
 
 
This is the output of the non-GREP variant:
 
 
 
perl-Digest-SHA Y
 
perl Y
 
perl-Archive-Tar Y
 
perl-Authen-PAM ******
 
perl-Authen-SASL Y
 
perl-BSD-Resource ******
 
perl-CGI-FormMagick ******
 
perl-CGI-Persistent ******
 
perl-Class-ParamParser ******
 
perl-Clone Y
 
perl-Compress-Raw-Bzip2 Y
 
perl-Compress-Raw-Zlib         Y
 
perl-Compress-Zlib     Y
 
perl-Convert-ASN1     Y
 
perl-Convert-BinHex Y
 
perl-Convert-TNEF ******
 
perl-Crypt-Cracklib ******
 
perl-Crypt-OpenSSL-Bignum Y
 
perl-Crypt-OpenSSL-Random Y
 
perl-Crypt-OpenSSL-RSA Y
 
perl-DateManip Y
 
perl-DBD-MySQL Y
 
perl-DBI Y
 
perl-Digest-HMAC Y
 
perl-Digest-SHA1 Y
 
perl-Email-Date-Format Y
 
perl-Encode-Detect Y
 
perl-Error Y
 
perl-File-MMagic ******
 
perl-Geography-Countries ******
 
perl-HTML-Parser Y
 
perl-HTML-Tabulate ******
 
perl-HTML-Tagset Y
 
perl-I18N-AcceptLanguage ******
 
perl-IO-Compress-Base Y
 
perl-IO-Compress-Bzip2 Y
 
perl-IO-Compress-Zlib Y
 
perl-IO-Socket-INET6 Y
 
perl-IO-Socket-SSL Y
 
perl-IO-stringy Y
 
perl-IO-Zlib Y
 
perl-IP-Country ******
 
perl-LDAP Y
 
perl-libwww-perl Y
 
perl-Locale-gettext ******
 
perl-Mail-DKIM Y
 
perl-Mail-RFC822-Address ******
 
perl-Mail-SPF ******
 
perl-MailTools Y
 
perl-MIME-Lite Y
 
perl-MIME-tools Y
 
perl-Net-DNS Y
 
perl-Net-Ident ******
 
perl-Net-IP Y
 
perl-Net-IPv4Addr ******
 
perl-Net-SMTP-SSL Y
 
perl-Net-SSLeay Y
 
perl-NetAddr-IP Y
 
perl-Object-Persistence ******
 
perl-Package-Constants Y
 
perl-Quota ******
 
perl-Razor-Agent ******
 
perl-RPM2 ******
 
perl-Socket6 Y
 
perl-suidperl Y
 
perl-Test-Inline ******
 
perl-Text-Iconv Y
 
perl-Text-Template ******
 
perl-Time-TAI64 ******
 
perl-TimeDate Y
 
perl-Unix-ConfigFile ******
 
perl-URI Y
 
perl-version Y
 
perl-WWW-Automate ******
 
perl-XML-NamespaceSupport Y
 
perl-XML-Parser Y
 
perl-XML-SAX Y
 
 
 
 
 
I am now going to try and lob in the existing/missing el5 versions to see what happens. My guess is we will need to rebuild the required modules.
 
 
 
== FormMagick ==
 
Next will be an attack on FormMagick - there is no package in the default install so need to figure that out. In may indeed be horrible, but we can live with it for now.
 
 
 
Hopefully with perl and FormMagick installed, most of the SME stuff *should* basically install.
 
 
 
 
 
== Discussion, help and share ==
 
* Please consult/subscribe to the devs list for more information. [http://lists.contribs.org/mailman/listinfo/devinfo devinfo mailinglist] and in particular all threads starting with " SME on CentOS 6"
 
* There is a IRC channel where people who are interested in this effort 'hang out'. You're most welcome to drop by and/or join. It's free! ;-)
 
** You do not have to install anything to pay the channel a visit. All you need is a nice nickname and right click [http://webchat.freenode.net?channels=SME_server&uio=Mj10cnVlJjk9dHJ1ZSYxMT03Mg13 here] to open the channel in a new browser window or tab.
 
 
 
 
 
== Resources and references ==
 
 
 
==== Setting up a RPM Building environment under CentOS ====
 
 
 
* [http://wiki.contribs.org/Package_Modification Simple Package Modification from our wiki]
 
* [http://wiki.contribs.org/Setting_up_RPM_Building_for_SME_Server Building using Mock]
 
* [http://wiki.centos.org/HowTos/SetupRpmBuildEnvironment On the CentOS wiki]
 
* [http://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/RPM_Guide/index.html From the Fedora project]
 
 
 
 
 
{{Note box|
 
 
 
Setting up a build system using mock should be documented somewhere on the wiki, but where?
 
http://wiki.contribs.org/Setting_up_RPM_Building_for_SME_Server
 
Ian, if ok, please delete this note.}}
 
 
 
<noinclude>[[Category:Howto]]</noinclude>
 

Latest revision as of 06:06, 12 April 2014

Back to SME Server 9.0 Development


Important.png Note:
This page is now obsolete, kept for reference only. see SME Server 9 Release Notes



The previous instructions on how to install SME packages on CentOS 6 minimal are now out of date, but are still available in the history archive. Please see SME9Alpha for the latest development steps.

The previous version can be usefull as a starting point for:

  • Creating an OpenVZ template for SME
  • Building SME on other future CentOS versions
  • Building SME on CentOS like distros