Softpanorama

Home Switchboard Unix Administration Red Hat TCP/IP Networks Neoliberalism Toxic Managers
May the source be with you, but remember the KISS principle ;-)
Bigger doesn't imply better. Bigger often is a sign of obesity, of lost control, of overcomplexity, of cancerous cells

Installation of Son of Grid Engine 8.1.8 RPMs for Master Host

News SGE implementations Recommended Links Installation Planning Installation of Grid Engine Master Host Installation of the Son of Grid Engine 8.1.8 RPMs for Execution Host Installation of the Grid Engine Execution Host
Configuring Hosts From the Command Line Usage of NFS Network File System (NFS) Mounting NFS directory owned by root Adding NFS partitions to /etc/fstab qconf qstat
Migrating to Son of Grid Engine 8.1.8 Private and Public key management Passwordless SSH login SSH Configuration RHEL NTP configuration Troubleshooting NTP on Red Hat Linux qsub
SGE Queues Grid Engine Config Tips SGE Parallel Environment Configuring Hosts From the Command Line Perl Admin Tools and Scripts Humor Etc

Introduction

We will assume that installation is performed on RHEL 6.5 or 6.6.  We also assume that NFS is used for sharing files with master host.

Degree of sharing is not that important but generally $SGE_ROOT/$SGE_CELL should be shared.  Efficiency consideration that are sited by many are overblown and without careful measurements and determining real bottleneck you might fall into classical trap called "premature optimization". And as Donald Knuth used to say "Premature optimization is the source of all evil". and long before him Talleyrand gave the following advice to young diplomats: "First and foremost, not too too much zeal".  Just substitute "young diplomats" for novice SGE administrators.

The same issue applies to a choice between classic spooling vs. Berkeley DB. Without measurements the selection of Berkeley DB is fools gold.

Content of RPM and installation from RPM

RPMs shipped with SGE are not real RPMs. Additional installation using SGE installer is still required. They are proxy for tar files with some built-in checking.  For example real installation of master daemon should be performed using special installation script, as described in Installation of SGE Master HostThe key value of using RPMs its ability to check presence of necessary libraries. For example attempt to install RPMs compiled for RHEL fails on SLES because of libraries problems.  Welcome to RPM hell...  As we use Son of Grid Engine 8.1.8 as an example, the necessary RPMs For RHEL 6.5 are:

On master host you need to install all of them except gridengine-execd packages. Dave love provides some dependencies at Index of -downloads-SGE-support. For example hwloc-1.4.1-0.el5.x86_64.rpm but for RHel 6/5 this library is not a problem.

On computation node you need at least gridengine and gridengine-execd packages. Here things become tricky as those two packages have a lot of dependencies not provided by stock RHEL 6.5. See Execution Host Installation

If you share /opt/sge between nodes, install both. You can install the gridengine-guiinst package too, and try to run "./start_gui_installer" from /opt/sge, but it does not work. So in this version only command line version of installer work, which is good enough. 

Content  of RPM can be viewed by using rpm -qlp file command

You can relocate installation directory from the default location /opt/SGE during installation using RPM option --prefix, for example

rpm -iv --prefix=/opt/sge/sge gridengine-8.1.8-1.el6.x86_64.rpm

But /opt/sge is good enough for most cases.

 First you need add EPEL channel to your yum configuration. You also need just one package from EPEL so you can download it manually (see below).  The you need download several additional RPMs. The most important is perl-XML-Simple. For RHEL 6.x this RPM not available from main RPM depositories. Only from the 'rhel-x86_64-server-optional-6' channel (on RHEL 6), which you need either be subscribed to or download manually using you Red Hat login.. 

[0]root@sandbox: # yum install gridengine-8.1.8-1.el6.x86_64.rpm
Loaded plugins: product-id, refresh-packagekit, rhnplugin, security, subscription-manager
This system is receiving updates from RHN Classic or RHN Satellite.
Setting up Install Process
Examining gridengine-8.1.8-1.el6.x86_64.rpm: gridengine-8.1.8-1.el6.x86_64
Marking gridengine-8.1.8-1.el6.x86_64.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package gridengine.x86_64 0:8.1.8-1.el6 will be installed
--> Processing Dependency: perl(XML::Simple) for package: gridengine-8.1.8-1.el6.x86_64
--> Processing Dependency: libhwloc.so.5()(64bit) for package: gridengine-8.1.8-1.el6.x86_64
--> Processing Dependency: libjemalloc.so.1()(64bit) for package: gridengine-8.1.8-1.el6.x86_64
--> Running transaction check
---> Package gridengine.x86_64 0:8.1.8-1.el6 will be installed
--> Processing Dependency: perl(XML::Simple) for package: gridengine-8.1.8-1.el6.x86_64
--> Processing Dependency: libjemalloc.so.1()(64bit) for package: gridengine-8.1.8-1.el6.x86_64
---> Package hwloc.x86_64 0:1.5-3.el6_5 will be installed
--> Finished Dependency Resolution
Error: Package: gridengine-8.1.8-1.el6.x86_64 (/gridengine-8.1.8-1.el6.x86_64)
           Requires: perl(XML::Simple)
Error: Package: gridengine-8.1.8-1.el6.x86_64 (/gridengine-8.1.8-1.el6.x86_64)
           Requires: libjemalloc.so.1()(64bit)
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

 

Dependencies Resolved

=============================================================================================================================
 Package                  Arch                 Version                    Repository                                    Size
=============================================================================================================================
...
Installing for dependencies:
 hwloc                    x86_64               1.5-3.el6_5                rhel-x86_64-server-6                         1.4 M
 jemalloc                 x86_64               3.6.0-1.el6                epel  

Here is protocol of successful installation of all RPMs:

root@sandbox: # yum install perl-XML-Simple
Loaded plugins: product-id, refresh-packagekit, rhnplugin, security, subscription-manager
This system is receiving updates from RHN Classic or RHN Satellite.
Setting up Install Process
rhel-x86_64-server-optional-6                                                                         | 1.8 kB     00:00
rhel-x86_64-server-optional-6/primary                                                                 | 1.9 MB     00:00
rhel-x86_64-server-optional-6                                                                                      8066/8066
Resolving Dependencies
--> Running transaction check
---> Package perl-XML-Simple.noarch 0:2.18-6.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================================================================
 Package                      Arch                Version                   Repository                                  Size
=============================================================================================================================
Installing:
 perl-XML-Simple              noarch              2.18-6.el6                rhel-x86_64-server-optional-6               72 k

Transaction Summary
=============================================================================================================================
Install       1 Package(s)

Total download size: 72 k
Installed size: 0
Is this ok [y/N]: y
Downloading Packages:
perl-XML-Simple-2.18-6.el6.noarch.rpm                                                                 |  72 kB     00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : perl-XML-Simple-2.18-6.el6.noarch                                                                         1/1
  Verifying  : perl-XML-Simple-2.18-6.el6.noarch                                                                         1/1

Installed:
  perl-XML-Simple.noarch 0:2.18-6.el6

Complete!
14/11/05 16:19 /home ============================
[0]root@sandbox: # yum install gridengine-8.1.8-1.el6.x86_64.rpm
Loaded plugins: product-id, refresh-packagekit, rhnplugin, security, subscription-manager
This system is receiving updates from RHN Classic or RHN Satellite.
Setting up Install Process
Examining gridengine-8.1.8-1.el6.x86_64.rpm: gridengine-8.1.8-1.el6.x86_64
Marking gridengine-8.1.8-1.el6.x86_64.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package gridengine.x86_64 0:8.1.8-1.el6 will be installed
--> Processing Dependency: libhwloc.so.5()(64bit) for package: gridengine-8.1.8-1.el6.x86_64
--> Processing Dependency: libjemalloc.so.1()(64bit) for package: gridengine-8.1.8-1.el6.x86_64
--> Running transaction check
---> Package hwloc.x86_64 0:1.5-3.el6_5 will be installed
---> Package jemalloc.x86_64 0:3.6.0-1.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================================================================
 Package                  Arch                 Version                    Repository                                    Size
=============================================================================================================================
Installing:
 gridengine               x86_64               8.1.8-1.el6                /gridengine-8.1.8-1.el6.x86_64                40 M
Installing for dependencies:
 hwloc                    x86_64               1.5-3.el6_5                rhel-x86_64-server-6                         1.4 M
 jemalloc                 x86_64               3.6.0-1.el6                epel                                         100 k

Transaction Summary
=============================================================================================================================
Install       3 Package(s)

Total size: 42 M
Total download size: 1.5 M
Installed size: 40 M
Is this ok [y/N]: y
Downloading Packages:
(1/2): hwloc-1.5-3.el6_5.x86_64.rpm                                                                   | 1.4 MB     00:00
(2/2): jemalloc-3.6.0-1.el6.x86_64.rpm                                                                | 100 kB     00:00
-----------------------------------------------------------------------------------------------------------------------------
Total                                                                                        755 kB/s | 1.5 MB     00:02
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : hwloc-1.5-3.el6_5.x86_64                                                                                  1/3
  Installing : jemalloc-3.6.0-1.el6.x86_64                                                                               2/3
  Installing : gridengine-8.1.8-1.el6.x86_64                                                                             3/3
  Verifying  : gridengine-8.1.8-1.el6.x86_64                                                                             1/3
  Verifying  : jemalloc-3.6.0-1.el6.x86_64                                                                               2/3
  Verifying  : hwloc-1.5-3.el6_5.x86_64                                                                                  3/3

Installed:
  gridengine.x86_64 0:8.1.8-1.el6

Dependency Installed:
  hwloc.x86_64 0:1.5-3.el6_5                                  jemalloc.x86_64 0:3.6.0-1.el6

Complete!
14/11/05 16:20 /home ============================
[0]root@sandbox: # yum install gridengine-qmaster-8.1.8-1.el6.x86_64.rpm
Loaded plugins: product-id, refresh-packagekit, rhnplugin, security, subscription-manager
This system is receiving updates from RHN Classic or RHN Satellite.
Setting up Install Process
Examining gridengine-qmaster-8.1.8-1.el6.x86_64.rpm: gridengine-qmaster-8.1.8-1.el6.x86_64
Marking gridengine-qmaster-8.1.8-1.el6.x86_64.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package gridengine-qmaster.x86_64 0:8.1.8-1.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================================================================
 Package                      Arch             Version                Repository                                        Size
=============================================================================================================================
Installing:
 gridengine-qmaster           x86_64           8.1.8-1.el6            /gridengine-qmaster-8.1.8-1.el6.x86_64           9.1 M

Transaction Summary
=============================================================================================================================
Install       1 Package(s)

Total size: 9.1 M
Installed size: 9.1 M
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : gridengine-qmaster-8.1.8-1.el6.x86_64                                                                     1/1
  Verifying  : gridengine-qmaster-8.1.8-1.el6.x86_64                                                                     1/1

Installed:
  gridengine-qmaster.x86_64 0:8.1.8-1.el6

Complete!
14/11/05 16:21 /home ============================
 
[0]root@sandbox: # yum install gridengine-execd-8.1.8-1.el6.x86_64.rpm
Loaded plugins: product-id, refresh-packagekit, rhnplugin, security, subscription-manager
This system is receiving updates from RHN Classic or RHN Satellite.
Setting up Install Process
Examining gridengine-execd-8.1.8-1.el6.x86_64.rpm: gridengine-execd-8.1.8-1.el6.x86_64
Marking gridengine-execd-8.1.8-1.el6.x86_64.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package gridengine-execd.x86_64 0:8.1.8-1.el6 will be installed
--> Processing Dependency: xterm for package: gridengine-execd-8.1.8-1.el6.x86_64
--> Running transaction check
---> Package xterm.x86_64 0:253-1.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================================================================
 Package                     Arch              Version                 Repository                                       Size
=============================================================================================================================
Installing:
 gridengine-execd            x86_64            8.1.8-1.el6             /gridengine-execd-8.1.8-1.el6.x86_64            3.8 M
Installing for dependencies:
 xterm                       x86_64            253-1.el6               rhel-x86_64-server-6                            357 k

Transaction Summary
=============================================================================================================================
Install       2 Package(s)

Total size: 4.1 M
Total download size: 357 k
Installed size: 3.8 M
Is this ok [y/N]: y
Downloading Packages:
xterm-253-1.el6.x86_64.rpm                                                                            | 357 kB     00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : xterm-253-1.el6.x86_64                                                                                    1/2
  Installing : gridengine-execd-8.1.8-1.el6.x86_64                                                                       2/2
  Verifying  : gridengine-execd-8.1.8-1.el6.x86_64                                                                       1/2
  Verifying  : xterm-253-1.el6.x86_64                                                                                    2/2

Installed:
  gridengine-execd.x86_64 0:8.1.8-1.el6

Dependency Installed:
  xterm.x86_64 0:253-1.el6

Complete!
14/11/05 16:23 /home ============================
[0]root@sandbox: # yum install gridengine-guiinst-8.1.8-1.el6.noarch.rpm
Loaded plugins: product-id, refresh-packagekit, rhnplugin, security, subscription-manager
This system is receiving updates from RHN Classic or RHN Satellite.
Setting up Install Process
Examining gridengine-guiinst-8.1.8-1.el6.noarch.rpm: gridengine-guiinst-8.1.8-1.el6.noarch
Marking gridengine-guiinst-8.1.8-1.el6.noarch.rpm to be installed
rhel-x86_64-server-6                                                                                  | 1.8 kB     00:00
Resolving Dependencies
--> Running transaction check
---> Package gridengine-guiinst.noarch 0:8.1.8-1.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================================================================
 Package                      Arch             Version                Repository                                        Size
=============================================================================================================================
Installing:
 gridengine-guiinst           noarch           8.1.8-1.el6            /gridengine-guiinst-8.1.8-1.el6.noarch           821 k

Transaction Summary
=============================================================================================================================
Install       1 Package(s)

Total size: 821 k
Installed size: 821 k
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : gridengine-guiinst-8.1.8-1.el6.noarch                                                                     1/1
  Verifying  : gridengine-guiinst-8.1.8-1.el6.noarch                                                                     1/1

Installed:
  gridengine-guiinst.noarch 0:8.1.8-1.el6

Complete!
14/11/05 16:23 /home ============================
[0]root@sandbox: # yum install gridengine-qmon-8.1.8-1.el6.x86_64.rpm
Loaded plugins: product-id, refresh-packagekit, rhnplugin, security, subscription-manager
This system is receiving updates from RHN Classic or RHN Satellite.
Setting up Install Process
Examining gridengine-qmon-8.1.8-1.el6.x86_64.rpm: gridengine-qmon-8.1.8-1.el6.x86_64
Marking gridengine-qmon-8.1.8-1.el6.x86_64.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package gridengine-qmon.x86_64 0:8.1.8-1.el6 will be installed
--> Processing Dependency: xorg-x11-fonts-ISO8859-1-75dpi for package: gridengine-qmon-8.1.8-1.el6.x86_64
--> Running transaction check
---> Package xorg-x11-fonts-ISO8859-1-75dpi.noarch 0:7.2-9.1.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================================================================
 Package                                Arch           Version             Repository                                   Size
=============================================================================================================================
Installing:
 gridengine-qmon                        x86_64         8.1.8-1.el6         /gridengine-qmon-8.1.8-1.el6.x86_64         4.6 M
Installing for dependencies:
 xorg-x11-fonts-ISO8859-1-75dpi         noarch         7.2-9.1.el6         rhel-x86_64-server-6                        933 k

Transaction Summary
=============================================================================================================================
Install       2 Package(s)

Total size: 5.5 M
Total download size: 933 k
Installed size: 4.6 M
Is this ok [y/N]: y
Downloading Packages:
xorg-x11-fonts-ISO8859-1-75dpi-7.2-9.1.el6.noarch.rpm                                                 | 933 kB     00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : xorg-x11-fonts-ISO8859-1-75dpi-7.2-9.1.el6.noarch                                                         1/2
  Installing : gridengine-qmon-8.1.8-1.el6.x86_64                                                                        2/2
  Verifying  : gridengine-qmon-8.1.8-1.el6.x86_64                                                                        1/2
  Verifying  : xorg-x11-fonts-ISO8859-1-75dpi-7.2-9.1.el6.noarch                                                         2/2

Installed:
  gridengine-qmon.x86_64 0:8.1.8-1.el6

Dependency Installed:
  xorg-x11-fonts-ISO8859-1-75dpi.noarch 0:7.2-9.1.el6

Complete!
14/11/05 16:24 /home ============================

 Set File Access Permissions

RPMs installation creates the installation directory. You can also create it beforehand, probably as a separate partition of SSD drive if you need the highest NFS speed possible.  For example:

mkdir /opt/sge

After that you need to create and export SGE_ROOT environment variable.

Export SGE-ROOT env. variable: 

export SGE_ROOT=/opt/sge

Now ensure that the file systems and directories that are contain the Grid Engine software as well as the spool and configuration files are set up properly by setting the access permissions as defined in File Access Permissions.  This is done by running

./util/setfileperm.sh $SGE_ROOT

This step is important as it creates several SUID-root executables

Note: this utility requires that gridengine-execd-8.1.8-1.el6.x86_64  RPM be installed on the master host too.

           WARNING WARNING WARNING
                    -----------------------
We will set the the file ownership and permission to

   UserID:         0
   GroupID:        0
   In directory:   /opt/sge

We will also install the following binaries as SUID-root:

   $SGE_ROOT/utilbin//rlogin
   $SGE_ROOT/utilbin//rsh
   $SGE_ROOT/utilbin//testsuidroot
   $SGE_ROOT/bin//sgepasswd
   $SGE_ROOT/bin//authuser

Do you want to set the file permissions (yes/no) [NO] >> yes
Verifying and setting file permissions and owner in >bin<
Verifying and setting file permissions and owner in >examples<
Verifying and setting file permissions and owner in >inst_sge<
Verifying and setting file permissions and owner in >install_execd<
Verifying and setting file permissions and owner in >install_qmaster<
Verifying and setting file permissions and owner in >lib<
Verifying and setting file permissions and owner in >mpi<
Verifying and setting file permissions and owner in >pvm<
Verifying and setting file permissions and owner in >util<
Verifying and setting file permissions and owner in >utilbin<
Verifying and setting file permissions and owner in >doc<
Verifying and setting file permissions and owner in >man<
Verifying and setting file permissions and owner in >qmon<
Verifying and setting file permissions and owner in >start_gui_installer<

Your file permissions were set

Install the  Master Host

Installation essentially consists of two steps:

Recommended Links

Google matched content

Softpanorama Recommended

Top articles

Sites

 



Etc

Society

Groupthink : Two Party System as Polyarchy : Corruption of Regulators : Bureaucracies : Understanding Micromanagers and Control Freaks : Toxic Managers :   Harvard Mafia : Diplomatic Communication : Surviving a Bad Performance Review : Insufficient Retirement Funds as Immanent Problem of Neoliberal Regime : PseudoScience : Who Rules America : Neoliberalism  : The Iron Law of Oligarchy : Libertarian Philosophy

Quotes

War and Peace : Skeptical Finance : John Kenneth Galbraith :Talleyrand : Oscar Wilde : Otto Von Bismarck : Keynes : George Carlin : Skeptics : Propaganda  : SE quotes : Language Design and Programming Quotes : Random IT-related quotesSomerset Maugham : Marcus Aurelius : Kurt Vonnegut : Eric Hoffer : Winston Churchill : Napoleon Bonaparte : Ambrose BierceBernard Shaw : Mark Twain Quotes

Bulletin:

Vol 25, No.12 (December, 2013) Rational Fools vs. Efficient Crooks The efficient markets hypothesis : Political Skeptic Bulletin, 2013 : Unemployment Bulletin, 2010 :  Vol 23, No.10 (October, 2011) An observation about corporate security departments : Slightly Skeptical Euromaydan Chronicles, June 2014 : Greenspan legacy bulletin, 2008 : Vol 25, No.10 (October, 2013) Cryptolocker Trojan (Win32/Crilock.A) : Vol 25, No.08 (August, 2013) Cloud providers as intelligence collection hubs : Financial Humor Bulletin, 2010 : Inequality Bulletin, 2009 : Financial Humor Bulletin, 2008 : Copyleft Problems Bulletin, 2004 : Financial Humor Bulletin, 2011 : Energy Bulletin, 2010 : Malware Protection Bulletin, 2010 : Vol 26, No.1 (January, 2013) Object-Oriented Cult : Political Skeptic Bulletin, 2011 : Vol 23, No.11 (November, 2011) Softpanorama classification of sysadmin horror stories : Vol 25, No.05 (May, 2013) Corporate bullshit as a communication method  : Vol 25, No.06 (June, 2013) A Note on the Relationship of Brooks Law and Conway Law

History:

Fifty glorious years (1950-2000): the triumph of the US computer engineering : Donald Knuth : TAoCP and its Influence of Computer Science : Richard Stallman : Linus Torvalds  : Larry Wall  : John K. Ousterhout : CTSS : Multix OS Unix History : Unix shell history : VI editor : History of pipes concept : Solaris : MS DOSProgramming Languages History : PL/1 : Simula 67 : C : History of GCC developmentScripting Languages : Perl history   : OS History : Mail : DNS : SSH : CPU Instruction Sets : SPARC systems 1987-2006 : Norton Commander : Norton Utilities : Norton Ghost : Frontpage history : Malware Defense History : GNU Screen : OSS early history

Classic books:

The Peter Principle : Parkinson Law : 1984 : The Mythical Man-MonthHow to Solve It by George Polya : The Art of Computer Programming : The Elements of Programming Style : The Unix Haterís Handbook : The Jargon file : The True Believer : Programming Pearls : The Good Soldier Svejk : The Power Elite

Most popular humor pages:

Manifest of the Softpanorama IT Slacker Society : Ten Commandments of the IT Slackers Society : Computer Humor Collection : BSD Logo Story : The Cuckoo's Egg : IT Slang : C++ Humor : ARE YOU A BBS ADDICT? : The Perl Purity Test : Object oriented programmers of all nations : Financial Humor : Financial Humor Bulletin, 2008 : Financial Humor Bulletin, 2010 : The Most Comprehensive Collection of Editor-related Humor : Programming Language Humor : Goldman Sachs related humor : Greenspan humor : C Humor : Scripting Humor : Real Programmers Humor : Web Humor : GPL-related Humor : OFM Humor : Politically Incorrect Humor : IDS Humor : "Linux Sucks" Humor : Russian Musical Humor : Best Russian Programmer Humor : Microsoft plans to buy Catholic Church : Richard Stallman Related Humor : Admin Humor : Perl-related Humor : Linus Torvalds Related humor : PseudoScience Related Humor : Networking Humor : Shell Humor : Financial Humor Bulletin, 2011 : Financial Humor Bulletin, 2012 : Financial Humor Bulletin, 2013 : Java Humor : Software Engineering Humor : Sun Solaris Related Humor : Education Humor : IBM Humor : Assembler-related Humor : VIM Humor : Computer Viruses Humor : Bright tomorrow is rescheduled to a day after tomorrow : Classic Computer Humor

The Last but not Least


Copyright © 1996-2018 by Dr. Nikolai Bezroukov. www.softpanorama.org was initially created as a service to the (now defunct) UN Sustainable Development Networking Programme (SDNP) in the author free time and without any remuneration. This document is an industrial compilation designed and created exclusively for educational use and is distributed under the Softpanorama Content License. Original materials copyright belong to respective owners. Quotes are made for educational purposes only in compliance with the fair use doctrine.

 

FAIR USE NOTICE This site contains copyrighted material the use of which has not always been specifically authorized by the copyright owner. We are making such material available to advance understanding of computer science, IT technology, economic, scientific, and social issues. We believe this constitutes a 'fair use' of any such copyrighted material as provided by section 107 of the US Copyright Law according to which such material can be distributed without profit exclusively for research and educational purposes.

This is a Spartan WHYFF (We Help You For Free) site written by people for whom English is not a native language. Grammar and spelling errors should be expected. The site contain some broken links as it develops like a living tree...

You can use PayPal to make a contribution, supporting development of this site and speed up access. In case softpanorama.org is down you can use the at softpanorama.info

Disclaimer:

The statements, views and opinions presented on this web page are those of the author (or referenced source) and are not endorsed by, nor do they necessarily reflect, the opinions of the author present and former employers, SDNP or any other organization the author may be associated with. We do not warrant the correctness of the information provided or its fitness for any purpose.

The site uses AdSense so you need to be aware of Google privacy policy. You you do not want to be tracked by Google please disable Javascript for this site. This site is perfectly usable without Javascript.

Last modified: September 12, 2017