Similar a mySQL, postgreSQL es una base de datos muy famosa y repleta de funciones gratuita y de código abierto .
Anteriormente, hemos discutido varias instalaciones, incluida la instalación de la pila LAMP, la instalación de Apache2 desde la fuente, la instalación de PHP5 desde la fuente y la instalación de mySQL.
En este artículo, repasemos cómo instalar una base de datos PostgreSQL en Linux desde el código fuente.
Paso 1:Descarga el código fuente de PostgreSQL
Desde el sitio de descarga de PostgreSQL, elija el sitio espejo que se encuentra en su país.
# wget http://wwwmaster.postgresql.org/redir/198/f/source/v8.3.7/postgresql-8.3.7.tar.gz
Paso 2:Instalar PostgreSQL
# tar xvfz postgresql-8.3.7.tar.gz # cd postgresql-8.3.7 # ./configure checking for sgmlspl... no configure: creating ./config.status config.status: creating GNUmakefile config.status: creating src/Makefile.global config.status: creating src/include/pg_config.h config.status: creating src/interfaces/ecpg/include/ecpg_config.h config.status: linking ./src/backend/port/tas/dummy.s to src/backend/port/tas.s config.status: linking ./src/backend/port/dynloader/linux.c to src/backend/port/dynloader.c config.status: linking ./src/backend/port/sysv_sema.c to src/backend/port/pg_sema.c config.status: linking ./src/backend/port/sysv_shmem.c to src/backend/port/pg_shmem.c config.status: linking ./src/backend/port/dynloader/linux.h to src/include/dynloader.h config.status: linking ./src/include/port/linux.h to src/include/pg_config_os.h config.status: linking ./src/makefiles/Makefile.linux to src/Makefile.port # make make[3]: Leaving directory `/usr/save/postgresql-8.3.7/contrib/spi' rm -rf ./testtablespace mkdir ./testtablespace make[2]: Leaving directory `/usr/save/postgresql-8.3.7/src/test/regress' make[1]: Leaving directory `/usr/save/postgresql-8.3.7/src' make -C config all make[1]: Entering directory `/usr/save/postgresql-8.3.7/config' make[1]: Nothing to be done for `all'. make[1]: Leaving directory `/usr/save/postgresql-8.3.7/config' All of PostgreSQL successfully made. Ready to install. # make install make -C test/regress install make[2]: Entering directory `/usr/save/postgresql-8.3.7/src/test/regress' /bin/sh ../../../config/install-sh -c pg_regress '/usr/local/pgsql/lib/pgxs/src/test/regress/pg_regress' make[2]: Leaving directory `/usr/save/postgresql-8.3.7/src/test/regress' make[1]: Leaving directory `/usr/save/postgresql-8.3.7/src' make -C config install make[1]: Entering directory `/usr/save/postgresql-8.3.7/config' mkdir -p -- /usr/local/pgsql/lib/pgxs/config /bin/sh ../config/install-sh -c -m 755 ./install-sh '/usr/local/pgsql/lib/pgxs/config/install-sh' /bin/sh ../config/install-sh -c -m 755 ./mkinstalldirs '/usr/local/pgsql/lib/pgxs/config/mkinstalldirs' make[1]: Leaving directory `/usr/save/postgresql-8.3.7/config' PostgreSQL installation complete.
PostgreSQL ./configurar opciones
Las siguientes son varias opciones que se pueden pasar a ./configure:
- –prefix=PREFIX instala archivos independientes de la arquitectura en PREFIX. La ubicación de instalación predeterminada es /usr/local/pgsql
- –enable-integer-datetimes habilita el soporte de fecha/hora de enteros de 64 bits
- –enable-nls[=LANGUAGES] habilita la compatibilidad con idiomas nativos
- –disable-shared no crear bibliotecas compartidas
- –disable-rpath no incrustar la ruta de búsqueda de la biblioteca compartida en los ejecutables
- –disable-spinlocks no use spinlocks
- –enable-debug compilación con símbolos de depuración (-g)
- compilación –enable-profiling con creación de perfiles habilitada
- –enable-dtrace Compilación con compatibilidad con DTrace
- –enable-depend activa el seguimiento automático de dependencias
- –enable-cassert habilitar comprobaciones de afirmación (para depuración)
- –enable-thread-safety hace que las bibliotecas cliente sean seguras para subprocesos
- –enable-thread-safety-force fuerza la seguridad de subprocesos a pesar de la falla de la prueba de subprocesos
- –disable-largefile omite la compatibilidad con archivos grandes
- –with-docdir=DIR instala la documentación en DIR [PREFIX/doc]
- –sin-docdir no instale la documentación
- –with-includes=DIRS busque archivos de encabezado adicionales en DIRS
- –with-libraries=DIRS busca bibliotecas adicionales en DIRS
- –with-libs=DIRS ortografía alternativa de –with-libraries
- –with-pgport=PORTNUM cambia el número de puerto predeterminado [5432]
- –with-tcl construir módulos Tcl (PL/Tcl)
- –with-tclconfig=DIR tclConfig.sh está en DIR
- –with-perl compilar módulos Perl (PL/Perl)
- –with-python compilar módulos de Python (PL/Python)
- compilación –with-gssapi compatible con GSSAPI
- –with-krb5 Compilación compatible con Kerberos 5
- –with-krb-srvnam=NAME nombre principal de servicio predeterminado en Kerberos [postgres]
- –with-pam compilación compatible con PAM
- –with-ldap compilación compatible con LDAP
- compilación –with-bonjour compatible con Bonjour
- compilación –with-openssl compatible con OpenSSL
- –sin-readline no use GNU Readline ni BSD Libedit para editar
- –con-libedit-preferred prefiere BSD Libedit sobre GNU Readline
- –with-ossp-uuid usa la biblioteca OSSP UUID al crear contrib/uuid-ossp
- –with-libxml compilación compatible con XML
- –with-libxslt usar la compatibilidad con XSLT al compilar contrib/xml2
- –with-system-tzdata=DIR usar datos de zona horaria del sistema en DIR
- –sin-zlib no use Zlib
- –with-gnu-ld asume que el compilador C usa GNU ld [predeterminado=no]
Problema de instalación de PostgreSQL 1:
Puede encontrar el siguiente mensaje de error al ejecutar ./configure durante la instalación de PostgreSQL.
# ./configure checking for -lreadline... no checking for -ledit... no configure: error: readline library not found If you have readline already installed, see config.log for details on the failure. It is possible the compiler isn't looking in the proper directory. Use --without-readline to disable readline support.
Solución de instalación de PostgreSQL 1:
Instale readline-devel y libtermcap-devel para resolver el problema anterior.
# rpm -ivh libtermcap-devel-2.0.8-46.1.i386.rpm readline-devel-5.1-1.1.i386.rpm warning: libtermcap-devel-2.0.8-46.1.i386.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159 Preparing... ########################################### [100%] 1:libtermcap-devel ########################################### [ 50%] 2:readline-devel ########################################### [100%]
Paso 3:Verificar la estructura de directorios de PostgreSQL
Después de la instalación, asegúrese de que los directorios bin, doc, include, lib, man y share se creen en el directorio predeterminado /usr/local/pgsql como se muestra a continuación.
# ls -l /usr/local/pgsql/ total 24 drwxr-xr-x 2 root root 4096 Apr 8 23:25 bin drwxr-xr-x 3 root root 4096 Apr 8 23:25 doc drwxr-xr-x 6 root root 4096 Apr 8 23:25 include drwxr-xr-x 3 root root 4096 Apr 8 23:25 lib drwxr-xr-x 4 root root 4096 Apr 8 23:25 man drwxr-xr-x 5 root root 4096 Apr 8 23:25 share
Paso 4:Cree una cuenta de usuario de PostgreSQL
# adduser postgres # passwd postgres Changing password for user postgres. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully.
Paso 5:crear un directorio de datos de PostgreSQL
Cree el directorio de datos de postgres y haga que el usuario de postgres sea el propietario.
# mkdir /usr/local/pgsql/data # chown postgres:postgres /usr/local/pgsql/data # ls -ld /usr/local/pgsql/data drwxr-xr-x 2 postgres postgres 4096 Apr 8 23:26 /usr/local/pgsql/data
Paso 6:Inicialice el directorio de datos de PostgreSQL
Antes de que pueda comenzar a crear cualquier base de datos PostgreSQL, el directorio de datos vacío creado en el paso anterior debe inicializarse con el comando initdb como se muestra a continuación.
# su - postgres # /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data/ The files belonging to this database system will be owned by user postgres This user must also own the server process. The database cluster will be initialized with locale en_US.UTF-8. The default database encoding has accordingly been set to UTF8. The default text search configuration will be set to "english". fixing permissions on existing directory /usr/local/pgsql/data ... ok creating subdirectories ... ok selecting default max_connections ... 100 selecting default shared_buffers/max_fsm_pages ... 32MB/204800 creating configuration files ... ok creating template1 database in /usr/local/pgsql/data/base/1 ... ok initializing pg_authid ... ok initializing dependencies ... ok creating system views ... ok loading system objects' descriptions ... ok creating conversions ... ok creating dictionaries ... ok setting privileges on built-in objects ... ok creating information schema ... ok vacuuming database template1 ... ok copying template1 to template0 ... ok copying template1 to postgres ... ok WARNING: enabling "trust" authentication for local connections You can change this by editing pg_hba.conf or using the -A option the next time you run initdb. Success. You can now start the database server using: /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data or /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start
Paso 7:validar el directorio de datos de PostgreSQL
Asegúrese de que todos los archivos de configuración de la base de datos de postgres (por ejemplo, postgresql.conf) se creen en el directorio de datos como se muestra a continuación.
$ ls -l /usr/local/pgsql/data total 64 drwx------ 5 postgres postgres 4096 Apr 8 23:29 base drwx------ 2 postgres postgres 4096 Apr 8 23:29 global drwx------ 2 postgres postgres 4096 Apr 8 23:29 pg_clog -rw------- 1 postgres postgres 3429 Apr 8 23:29 pg_hba.conf -rw------- 1 postgres postgres 1460 Apr 8 23:29 pg_ident.conf drwx------ 4 postgres postgres 4096 Apr 8 23:29 pg_multixact drwx------ 2 postgres postgres 4096 Apr 8 23:29 pg_subtrans drwx------ 2 postgres postgres 4096 Apr 8 23:29 pg_tblspc drwx------ 2 postgres postgres 4096 Apr 8 23:29 pg_twophase -rw------- 1 postgres postgres 4 Apr 8 23:29 PG_VERSION drwx------ 3 postgres postgres 4096 Apr 8 23:29 pg_xlog -rw------- 1 postgres postgres 16592 Apr 8 23:29 postgresql.conf
Paso 8:Inicie la base de datos PostgreSQL
Use el comando postgres postmaster para iniciar el servidor postgreSQL en segundo plano, como se muestra a continuación.
$ /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data >logfile 2>&1 & [1] 2222 $ cat logfile LOG: database system was shut down at 2009-04-08 23:29:50 PDT LOG: autovacuum launcher started LOG: database system is ready to accept connections
Paso 9:Crear base de datos postgreSQL y probar la instalación
Cree una base de datos de prueba y conéctese a ella para asegurarse de que la instalación se haya realizado correctamente, como se muestra a continuación. Una vez que comience a usar la base de datos, realice copias de seguridad con frecuencia como se menciona en el artículo Cómo realizar copias de seguridad y restaurar PostgreSQL.
$ /usr/local/pgsql/bin/createdb test $ /usr/local/pgsql/bin/psql test Welcome to psql 8.3.7, the PostgreSQL interactive terminal. Type: \copyright for distribution terms \h for help with SQL commands \? for help with psql commands \g or terminate with semicolon to execute query \q to quit test=#