Difference between revisions of "Building gLExec from src rpm gLite era"

From PDP/Grid Wiki
Jump to navigationJump to search
Line 2: Line 2:
 
Different versions can be used, this is a working example and work in progress...
 
Different versions can be used, this is a working example and work in progress...
  
*Platform: Centos-4
+
=== General ===
  
*Yum Installed
+
* Tested platform: Centos-4
 +
 
 +
* Yum Installed:
 
<pre>
 
<pre>
 
rpm-build
 
rpm-build
Line 13: Line 15:
 
</pre>
 
</pre>
  
*For ''64bit'' we also need to yum install (to fulfill a vdt dependency)
+
* For ''64bit'' we also need to yum install (to fulfill a vdt dependency)
 
<pre>
 
<pre>
 
glibc.i686
 
glibc.i686
 
</pre>
 
</pre>
  
*Installed extra packages (<tt>rpm -i</tt>)
+
* We need the following extra packages. Installation instructions are split between ''superuser mode'' or ''unprivileged mode'' below:
 
  ''32bit''
 
  ''32bit''
 
  [http://eticssoft.web.cern.ch/eticssoft/repository/vdt/globus/4.0.3-VDT-1.6.1/slc4_ia32_gcc346/vdt_globus_essentials-VDT1.6.1x86_rhas_4-9.i386.rpm vdt_globus_essentials-VDT1.6.1x86_rhas_4-9.i386.rpm]
 
  [http://eticssoft.web.cern.ch/eticssoft/repository/vdt/globus/4.0.3-VDT-1.6.1/slc4_ia32_gcc346/vdt_globus_essentials-VDT1.6.1x86_rhas_4-9.i386.rpm vdt_globus_essentials-VDT1.6.1x86_rhas_4-9.i386.rpm]
Line 37: Line 39:
 
  [http://eticssoft.web.cern.ch/eticssoft/repository/org.glite/org.glite.security.lcmaps/1.4.7/slc4_x86_64_gcc346/glite-security-lcmaps-1.4.7-1.slc4.x86_64.rpm glite-security-lcmaps-1.4.7-1.slc4.x86_64.rpm]
 
  [http://eticssoft.web.cern.ch/eticssoft/repository/org.glite/org.glite.security.lcmaps/1.4.7/slc4_x86_64_gcc346/glite-security-lcmaps-1.4.7-1.slc4.x86_64.rpm glite-security-lcmaps-1.4.7-1.slc4.x86_64.rpm]
  
*Alternative, for ''32bit'' only: setup a Yum repository:
+
=== Working as superuser ===
 +
 
 +
* Install the above packages using <tt>rpm -i</tt>
 +
 
 +
* Instead of using <tt>rpm -i</tt> to install the extra packages, we can for ''32bit'' only, setup a Yum repository:
 
<pre>
 
<pre>
 
cat > /etc/yum.repos.d/glite-GLEXEC_wn.repo << EOF
 
cat > /etc/yum.repos.d/glite-GLEXEC_wn.repo << EOF
Line 50: Line 56:
 
Unfortunately [http://eticssoft.web.cern.ch/eticssoft/repository/org.glite/org.glite.build.common-cpp/3.2.1/slc4_ia32_gcc346/org.glite.build.common-cpp-3.2.1-2.slc4.i386.rpm org.glite.build.common-cpp-3.2.1-2.slc4.i386.rpm] still has to be installed by hand from Etics.
 
Unfortunately [http://eticssoft.web.cern.ch/eticssoft/repository/org.glite/org.glite.build.common-cpp/3.2.1/slc4_ia32_gcc346/org.glite.build.common-cpp-3.2.1-2.slc4.i386.rpm org.glite.build.common-cpp-3.2.1-2.slc4.i386.rpm] still has to be installed by hand from Etics.
  
*Installed from tarball into /opt/globus:
+
* Installed from tarball into /opt/globus: <tt>tar -C /opt/globus -zxf globus-4.0.3-VDT-1.6.1-9.tar.gz</tt>
 
  ''32bit''
 
  ''32bit''
 
  [http://eticssoft.web.cern.ch/eticssoft/repository//vdt/globus/4.0.3-VDT-1.6.1/slc4_ia32_gcc346/globus-4.0.3-VDT-1.6.1-9.tar.gz globus-4.0.3-VDT-1.6.1-9.tar.gz]
 
  [http://eticssoft.web.cern.ch/eticssoft/repository//vdt/globus/4.0.3-VDT-1.6.1/slc4_ia32_gcc346/globus-4.0.3-VDT-1.6.1-9.tar.gz globus-4.0.3-VDT-1.6.1-9.tar.gz]
Line 59: Line 65:
 
:'''NOTE''': it would have been sufficient to install [http://eticssoft.web.cern.ch/eticssoft/repository//vdt/globus/4.0.3-VDT-1.6.1/slc4_ia32_gcc346/vdt_globus_sdk-VDT1.6.1x86_rhas_4-9.i386.rpm vdt_globus_sdk-VDT1.6.1x86_rhas_4-9.i386.rpm] (''32bit'') or [http://eticssoft.web.cern.ch/eticssoft/repository/vdt/globus/4.0.3-VDT-1.6.1/slc4_x86_64_gcc346/vdt_globus_simple_ca-VDT1.6.1x86_64_rhas_4-9.x86_64.rpm vdt_globus_simple_ca-VDT1.6.1x86_64_rhas_4-9.x86_64.rpm] (''64bit''), but unfortunately these don't contain the files <tt>/opt/globus/include/gcc64*/globus_config.h</tt> which is why it is easier to install the tarball. See also [https://twiki.cern.ch/twiki/bin/view/LCG/GenerateLfcDpmRpms https://twiki.cern.ch/twiki/bin/view/LCG/GenerateLfcDpmRpms] for a way to rebuild the <tt>globus_config.h</tt> files.
 
:'''NOTE''': it would have been sufficient to install [http://eticssoft.web.cern.ch/eticssoft/repository//vdt/globus/4.0.3-VDT-1.6.1/slc4_ia32_gcc346/vdt_globus_sdk-VDT1.6.1x86_rhas_4-9.i386.rpm vdt_globus_sdk-VDT1.6.1x86_rhas_4-9.i386.rpm] (''32bit'') or [http://eticssoft.web.cern.ch/eticssoft/repository/vdt/globus/4.0.3-VDT-1.6.1/slc4_x86_64_gcc346/vdt_globus_simple_ca-VDT1.6.1x86_64_rhas_4-9.x86_64.rpm vdt_globus_simple_ca-VDT1.6.1x86_64_rhas_4-9.x86_64.rpm] (''64bit''), but unfortunately these don't contain the files <tt>/opt/globus/include/gcc64*/globus_config.h</tt> which is why it is easier to install the tarball. See also [https://twiki.cern.ch/twiki/bin/view/LCG/GenerateLfcDpmRpms https://twiki.cern.ch/twiki/bin/view/LCG/GenerateLfcDpmRpms] for a way to rebuild the <tt>globus_config.h</tt> files.
  
*Created <tt>/etc/ld.so.conf.d/glite.conf</tt> and <tt>/etc/ld.so.conf.d/globus.conf</tt>:
+
*Create <tt>/etc/ld.so.conf.d/glite.conf</tt> and <tt>/etc/ld.so.conf.d/globus.conf</tt>:
 
''32bit''
 
''32bit''
 
<pre>
 
<pre>
Line 74: Line 80:
 
</pre>
 
</pre>
  
* installed (<tt>rpm -i</tt>)
+
* install (<tt>rpm -i</tt>)
 
  [http://etics-repository.cern.ch:8080/repository/download/registered/org.glite/org.glite.security.glexec/0.6.8/src/glite-security-glexec-0.6.8-3.src.rpm glite-security-glexec-0.6.8-3.src.rpm]
 
  [http://etics-repository.cern.ch:8080/repository/download/registered/org.glite/org.glite.security.glexec/0.6.8/src/glite-security-glexec-0.6.8-3.src.rpm glite-security-glexec-0.6.8-3.src.rpm]
  
Line 116: Line 122:
 
</pre>
 
</pre>
  
*Create rpm:
+
* Create rpm:
 
<pre>
 
<pre>
 
cd /usr/src/redhat
 
cd /usr/src/redhat
Line 168: Line 174:
 
</pre>
 
</pre>
  
* Install the globus tarball:
+
* Install the above globus tarball:
 
tar -C $MYDIR/opt/globus -zxf ~/rpm/globus-4.0.3-VDT-1.6.1-9.tar.gz
 
tar -C $MYDIR/opt/globus -zxf ~/rpm/globus-4.0.3-VDT-1.6.1-9.tar.gz
  
* Extra patch for the <tt>glite-security-glexec.spec</tt>:
+
* Patch the <tt>glite-security-glexec.spec</tt>:
 
''32bit''
 
''32bit''
 
<pre>
 
<pre>
Line 224: Line 230:
 
</pre>
 
</pre>
  
*TODO:
+
=== TODO ===
provide a script which does all the above steps...
+
* provide a script which does all the above steps...
 +
 
 +
* SL5
 +
 
 +
* Other packages from .src.rpm
 +
 
 +
* Bug reports about vdt...

Revision as of 12:55, 2 October 2009

How to build gLExec from a .src.rpm

Different versions can be used, this is a working example and work in progress...

General

  • Tested platform: Centos-4
  • Yum Installed:
rpm-build
gcc
gcc-c++
make
libtool
  • For 64bit we also need to yum install (to fulfill a vdt dependency)
glibc.i686
  • We need the following extra packages. Installation instructions are split between superuser mode or unprivileged mode below:
32bit
vdt_globus_essentials-VDT1.6.1x86_rhas_4-9.i386.rpm
org.glite.build.common-cpp-3.2.1-2.slc4.i386.rpm
glite-security-voms-api-c-1.8.12-1.slc4.i386.rpm
glite-security-voms-api-cpp-1.8.12-1.slc4.i386.rpm
glite-security-lcas-interface-1.3.11-1.slc4.i386.rpm
glite-security-lcas-1.3.11-2.slc4.i386.rpm
glite-security-lcmaps-1.4.7-1.slc4.i386.rpm
64bit
vdt_globus_essentials-VDT1.6.1x86_64_rhas_4-9.x86_64.rpm
org.glite.build.common-cpp-3.2.1-2.slc4.x86_64.rpm
glite-security-voms-api-c-1.8.12-1.slc4.x86_64.rpm
glite-security-voms-api-cpp-1.8.12-1.slc4.x86_64.rpm
glite-security-lcas-interface-1.3.11-1.slc4.x86_64.rpm
glite-security-lcas-1.3.11-2.slc4.x86_64.rpm
glite-security-lcmaps-1.4.7-1.slc4.x86_64.rpm

Working as superuser

  • Install the above packages using rpm -i
  • Instead of using rpm -i to install the extra packages, we can for 32bit only, setup a Yum repository:
cat > /etc/yum.repos.d/glite-GLEXEC_wn.repo << EOF
[glite-GLEXEC_wn]
name=gLite 3.1 gLExec Worker Node
baseurl=http://linuxsoft.cern.ch/EGEE/gLite/R3.1/glite-GLEXEC_wn/sl4/\$basearch/
enabled=1
gpgcheck=0
EOF
yum install glite-security-lcmaps glite-security-lcas glite-security-lcas-interface

Unfortunately org.glite.build.common-cpp-3.2.1-2.slc4.i386.rpm still has to be installed by hand from Etics.

  • Installed from tarball into /opt/globus: tar -C /opt/globus -zxf globus-4.0.3-VDT-1.6.1-9.tar.gz
32bit
globus-4.0.3-VDT-1.6.1-9.tar.gz
64bit
globus-4.0.3-VDT-1.6.1-9.tar.gz
NOTE: it would have been sufficient to install vdt_globus_sdk-VDT1.6.1x86_rhas_4-9.i386.rpm (32bit) or vdt_globus_simple_ca-VDT1.6.1x86_64_rhas_4-9.x86_64.rpm (64bit), but unfortunately these don't contain the files /opt/globus/include/gcc64*/globus_config.h which is why it is easier to install the tarball. See also https://twiki.cern.ch/twiki/bin/view/LCG/GenerateLfcDpmRpms for a way to rebuild the globus_config.h files.
  • Create /etc/ld.so.conf.d/glite.conf and /etc/ld.so.conf.d/globus.conf:

32bit

echo /opt/glite/lib > /etc/ld.so.conf.d/glite.conf
echo /opt/globus/lib > /etc/ld.so.conf.d/globus.conf
ldconfig

64bit

echo /opt/glite/lib64 > /etc/ld.so.conf.d/glite.conf
echo /opt/globus/lib > /etc/ld.so.conf.d/globus.conf
ldconfig
  • install (rpm -i)
glite-security-glexec-0.6.8-3.src.rpm
  • patch /usr/src/redhat/SPECS/glite-security-glexec.spec

32bit

--- /usr/src/redhat/SPECS/glite-security-glexec.spec.orig       2009-09-30 12:10:03.000000000 +0200
+++ /usr/src/redhat/SPECS/glite-security-glexec.spec    2009-09-30 16:48:57.000000000 +0200
@@ -35,7 +35,7 @@

 %install
  rm -rf $RPM_BUILD_ROOT
- make DESTDIR=$RPM_BUILD_ROOTinstall
+ make install
  find $RPM_BUILD_ROOT/%{prefix} -name '*.la' -exec rm -rf {} \;

 %clean

64bit

--- glite-security-glexec.spec.orig     2009-09-30 17:50:54.000000000 +0200
+++ glite-security-glexec.spec  2009-10-01 10:51:46.000000000 +0200
@@ -28,14 +28,14 @@
 %setup  
 
 %build
- ./configure --prefix=$RPM_BUILD_ROOT/%{prefix} --with-glite-location=/opt/glite --with-globus-prefix=/opt/globus --with-globus-thr-flavor=gcc32dbgpthr --with-globus-nothr-flavor=gcc32dbg
+ ./configure --prefix=$RPM_BUILD_ROOT/%{prefix} --with-glite-location=/opt/glite --with-globus-prefix=/opt/globus --with-globus-thr-flavor=gcc64dbgpthr --with-globus-nothr-flavor=gcc64dbg
  make
   
   
 
 %install
  rm -rf $RPM_BUILD_ROOT
- make DESTDIR=$RPM_BUILD_ROOTinstall
+ make install
  find $RPM_BUILD_ROOT/%{prefix} -name '*.la' -exec rm -rf {} \;

 %clean
  • Create rpm:
cd /usr/src/redhat
rpmbuild -bb SPECS/glite-security-glexec.spec
  • NOTE: changing the install directory is now simply changing the
Prefix: /opt/glite

line in the spec file

Working as unprivileged user

  • Setup a working directory, e.g. /tmp/test:
export MYDIR=/tmp/test
  • Create a ~/.rpmmacros file:
cat > ~/.rpmmacros << EOF
%MYDIR $MYDIR
%_dbpath        %{MYDIR}/rpmdb
%_rpmlock_path  %{MYDIR}/tmp/rpmlock
%_topdir        %{MYDIR}/usr/src/redhat
EOF

NOTE: the %_dbpath setting means this rpm database will be used for all actions. Optionally, one could specify a

--dbpath $MYDIR/rpmdb

option to all the following rpm and rpmbuild commands.

  • Create all the necessary directories:
mkdir -p $MYDIR/tmp
mkdir -p $MYDIR/usr/src/redhat/{SOURCES,BUILD,RPMS}
  • Setup LD_LIBRARY_PATH:
export LD_LIBRARY_PATH=$MYDIR/opt/glite/lib:$MYDIR/opt/globus/lib
  • Install all the needed RPMs from the above list:
rpm --nodeps --prefix=$MYDIR/opt/globus -i vdt_globus_essentials-VDT1.6.1x86_rhas_4-9.i386.rpm
rpm --nodeps --relocate=/=$MYDIR -i glite-security-*.i386.rpm org.glite.build.common-cpp*
rpm -i glite-security-glexec-0.6.8-3.src.rpm
  • Install the above globus tarball:

tar -C $MYDIR/opt/globus -zxf ~/rpm/globus-4.0.3-VDT-1.6.1-9.tar.gz

  • Patch the glite-security-glexec.spec:

32bit

--- SPECS/glite-security-glexec.spec.orig    2009-09-30 17:50:54.000000000 +0200
+++ SPECS/glite-security-glexec.spec        2009-10-02 12:20:32.000000000 +0200
@@ -28,14 +28,14 @@
 %setup

 %build
- ./configure --prefix=$RPM_BUILD_ROOT/%{prefix} --with-glite-location=/opt/glite --with-globus-prefix=/opt/globus --with-globus-thr-flavor=gcc32dbgpthr --with-globus-nothr-flavor=gcc32dbg
+ ./configure --prefix=$RPM_BUILD_ROOT/%{prefix} --with-glite-location=%{MYDIR}/opt/glite --with-globus-prefix=%{MYDIR}/opt/globus --with-globus-thr-flavor=gcc32dbgpthr --with-globus-nothr-flavor=gcc32dbg
  make



 %install
  rm -rf $RPM_BUILD_ROOT
- make DESTDIR=$RPM_BUILD_ROOTinstall
+ make install
  find $RPM_BUILD_ROOT/%{prefix} -name '*.la' -exec rm -rf {} \;

 %clean

64bit

--- glite-security-glexec.spec.orig     2009-09-30 17:50:54.000000000 +0200
+++ glite-security-glexec.spec  2009-10-01 10:51:46.000000000 +0200
@@ -28,14 +28,14 @@
 %setup  
 
 %build
- ./configure --prefix=$RPM_BUILD_ROOT/%{prefix} --with-glite-location=/opt/glite --with-globus-prefix=/opt/globus --with-globus-thr-flavor=gcc32dbgpthr --with-globus-nothr-flavor=gcc32dbg
+ ./configure --prefix=$RPM_BUILD_ROOT/%{prefix} --with-glite-location=%{MYDIR}/opt/glite --with-globus-prefix=%{MYDIR}/opt/globus --with-globus-thr-flavor=gcc64dbgpthr --with-globus-nothr-flavor=gcc64dbg
  make
   
   
 
 %install
  rm -rf $RPM_BUILD_ROOT
- make DESTDIR=$RPM_BUILD_ROOTinstall
+ make install
  find $RPM_BUILD_ROOT/%{prefix} -name '*.la' -exec rm -rf {} \;

 %clean
  • Build:
cd $MYDIR/usr/src/redhat  
rpmbuild -bb SPECS/glite-security-glexec.spec

TODO

  • provide a script which does all the above steps...
  • SL5
  • Other packages from .src.rpm
  • Bug reports about vdt...