feat: st2334 cheatsheet
This commit is contained in:
82
cs3223/cs3223_assign1/install-macos.sh
Normal file
82
cs3223/cs3223_assign1/install-macos.sh
Normal file
@@ -0,0 +1,82 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# CS3223 Assignment 1
|
||||
# Script to install PostgreSQL 17.6 on MacOS
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
source ./settings.sh
|
||||
|
||||
VERSION=17.6
|
||||
ASSIGN_DIR=$HOME/cs3223_assign1
|
||||
DOWNLOAD_DIR=$HOME
|
||||
SRC_DIR=${DOWNLOAD_DIR}/postgresql-${VERSION}
|
||||
FILE=postgresql-${VERSION}.tar.gz
|
||||
|
||||
mkdir -p ${DOWNLOAD_DIR}
|
||||
mkdir -p ${INSTALL_DIR}
|
||||
mkdir -p ${PGDATA}
|
||||
|
||||
# Download PostgreSQL source files
|
||||
if [ ! -e ${DOWNLOAD_DIR}/${FILE} ]; then
|
||||
cd ${DOWNLOAD_DIR}
|
||||
wget https://ftp.postgresql.org/pub/source/v${VERSION}/${FILE}
|
||||
tar xvfz ${FILE}
|
||||
fi
|
||||
|
||||
|
||||
# Install PostgreSQL
|
||||
cd ${SRC_DIR}
|
||||
export CFLAGS="-O0"
|
||||
|
||||
# To process the Postgres documentation, you need to install additional tools.
|
||||
# The following 2 lines should work on both Mac Intel and ARM.
|
||||
# For MacPorts alternatives,
|
||||
# see: https://www.postgresql.org/docs/current/docguide-toolsets.html#DOCGUIDE-TOOLSETS-INST-MACOS
|
||||
|
||||
# Remember to install Homebrew if you haven't!
|
||||
brew install docbook docbook-xsl libxslt fop
|
||||
export XML_CATALOG_FILES=$(brew --prefix)/etc/xml/catalog
|
||||
|
||||
|
||||
# You may need to find the path to the icu4c package and add it to PKG_CONFIG_PATH variable
|
||||
# This package is needed to build Postgres 17.2.
|
||||
# The following line should work on both Mac Intel and ARM.
|
||||
# If you still get an error, you may need to change the path slightly,
|
||||
# see: https://viggy28.dev/article/postgres-v16-icu-installation-issue/
|
||||
|
||||
export PKG_CONFIG_PATH=$(brew --prefix icu4c)/lib/pkgconfig/:${PKG_CONFIG_PATH:-""}
|
||||
|
||||
./configure --prefix=${INSTALL_DIR} --enable-debug --enable-cassert
|
||||
make clean && make world && make install-world
|
||||
|
||||
# Install test_bufmgr extension
|
||||
if [ ! -d ${ASSIGN_DIR} ]; then
|
||||
echo "Error: Assignment directory ${ASSIGN_DIR} missing!"
|
||||
exit 1
|
||||
fi
|
||||
if [ ! -d ${SRC_DIR}/contrib/test_bufmgr ]; then
|
||||
cp -r ${ASSIGN_DIR}/test_bufmgr ${SRC_DIR}/contrib
|
||||
cd ${SRC_DIR}/contrib/test_bufmgr
|
||||
make && make install
|
||||
fi
|
||||
chmod u+x ${ASSIGN_DIR}/*.sh
|
||||
|
||||
# Create a new database cluster.
|
||||
if [ -d ${PGDATA} ]; then
|
||||
rm -Rf ${PGDATA}
|
||||
fi
|
||||
${INSTALL_DIR}/bin/initdb -D ${PGDATA}
|
||||
|
||||
|
||||
# Update ~/.zshrc
|
||||
PROFILE=~/.zshrc # Change to ~/.bash_profile if your default shell is bash
|
||||
echo >> ${PROFILE}
|
||||
echo "export PATH=${INSTALL_DIR}/bin:\$PATH" >> ${PROFILE}
|
||||
echo "export MANPATH=${INSTALL_DIR}/share/man:\$MANPATH" >> ${PROFILE}
|
||||
echo "export PGDATA=${PGDATA}" >> ${PROFILE}
|
||||
echo "export PGUSER=$(whoami)" >> ${PROFILE}
|
||||
echo >> ${PROFILE}
|
||||
|
||||
exec zsh # Restart the shell. Use "source ~/.bash_profile" for bash
|
||||
|
||||
Reference in New Issue
Block a user