# ICU
# ===
# Below are 73.2, 74.2, 75.1 and 76.1
#
# I was not able to build Cyrus IMAP 3.6.7 with ICU 76.1 or 75.1 or 74.2,
# but successful with 73.2
# Get the tarball
cd
test -f installed/icu4c-76_1-src.tgz &&
mv -f icu4c-76_1-src.tgz .
test ! -f icu4c-76_1-src.tgz &&
wget https://github.com/unicode-org/icu/releases/download/release-76-1/\
icu4c-76_1-src.tgz
# Verify tarball w/ sha512sum:
# (this came from the GitHub release page gpg-verified SHASUM512.txt)
echo "b702ab62fb37a1574d5f4a768326d0f8fa30d9db5b015605b5f8215b5d85\
47f83d84880c586d3dcc7b6c76f8d47ef34e04b0f51baa55908f737024dd79a42a\
6c icu4c-76_1-src.tgz" | sha512sum -c
# Extract the source
mkdir -p -m 0700 ~/src
cd ~/src
find -maxdepth 1 -type d -name "icu4c-*" -exec rm -r {} \;
mkdir -p -m 0700 icu4c-76.1
cd icu4c-76.1
tar xzvf ~/icu4c-76_1-src.tgz
cd icu/source
test $UID = 0 && chown -R root:root .
# Configure the build for 64-bit
test $(uname -m) = 'x86_64' &&
./runConfigureICU Linux/gcc --prefix=/usr --libdir=/usr/lib64 \
--mandir=/usr/man
# Configure the build for anything else
test $(uname -m) != 'x86_64' &&
./runConfigureICU Linux/gcc --prefix=/usr --mandir=/usr/man
# Build it
make
# Check the build
make check
# Become root to install it
su
# Remove the Slackware package, if there is one
## You may have running Apache httpd, Cyrus IMAP, Samba, etc. daemons
## running using the old version of libicu*. If that is the case (run lsof
## to check), I would suggest copying the shared library files temporarily,
## then removing the Slackware package, then copying them back where they
## were
test -f /var/adm/packages/icu4c-* &&
find /usr/lib64 -maxdepth 1 -type f -name "libicu*.so.*" -exec cp -a {} /tmp \;
# You may want to keep a copy of shared library files (or the Slackware
# package file) just in case
test -x /sbin/removepkg && /sbin/removepkg icu4c
# Copy the shared library files you put in /tmp back to /usr/lib64
find /tmp -maxdepth 1 -type f -name "libicu*.so.*"\
-exec cp -a {} /usr/lib64/ \;
# Install it
make install
ldconfig
# Make sure your non-root user can remove the source later
chown -R $(logname) .
chmod -R u+w .
# Become your non-root user again
exit
# Save the source for later
cd
mkdir -p -m 0700 installed
rm -f installed/icu4c-*.tar.*
mv icu4c-76_1-src.tgz installed/
# Get the tarball
cd
test -f installed/icu4c-75_1-src.tgz &&
mv -f icu4c-75_1-src.tgz .
test ! -f icu4c-75_1-src.tgz &&
wget https://github.com/unicode-org/icu/releases/download/release-75-1/\
icu4c-75_1-src.tgz
# Verify tarball w/ sha512sum:
# (this came from the GitHub release page gpg-verified SHASUM512.txt)
echo "70ea842f0d5f1f6c6b65696ac71d96848c4873f4d794bebc40fd87af2ad4\
ef064c61a786bf7bc430ce4713ec6deabb8cc1a8cc0212eab148cee2d498a3683e\
45 icu4c-75_1-src.tgz" | sha512sum -c
# Extract the source
mkdir -p -m 0700 ~/src
cd ~/src
find -maxdepth 1 -type d -name "icu4c-*" -exec rm -r {} \;
mkdir -p -m 0700 icu4c-75.1
cd icu4c-75.1
tar xzvf ~/icu4c-75_1-src.tgz
cd icu/source
test $UID = 0 && chown -R root:root .
# Configure the build for 64-bit
test $(uname -m) = 'x86_64' &&
./runConfigureICU Linux/gcc --prefix=/usr --libdir=/usr/lib64 \
--mandir=/usr/man
# Configure the build for anything else
test $(uname -m) != 'x86_64' &&
./runConfigureICU Linux/gcc --prefix=/usr --mandir=/usr/man
# Build it
make -j$(nproc)
# Check the build
make check
# Become root to install it
su
# Remove the Slackware package, if there is one
## You may have running Apache httpd, Cyrus IMAP, Samba, etc. daemons
## running using the old version of libicu*. If that is the case (run lsof
## to check), I would suggest copying the shared library files temporarily,
## then removing the Slackware package, then copying them back where they
## were
test -f /var/adm/packages/icu4c-* &&
find /usr/lib64 -maxdepth 1 -type f -name "libicu*.so.*" -exec cp -a {} /tmp \;
# You may want to keep a copy of shared library files (or the Slackware
# package file) just in case
test -x /sbin/removepkg && /sbin/removepkg icu4c
# Copy the shared library files you put in /tmp back to /usr/lib64
find /tmp -maxdepth 1 -type f -name "libicu*.so.*"\
-exec cp -a {} /usr/lib64/ \;
# Install it
make install
ldconfig
# Make sure your non-root user can remove the source later
chown -R $(logname) .
chmod -R u+w .
# Become your non-root user again
exit
# Save the source for later
cd
mkdir -p -m 0700 installed
rm -f installed/icu4c-*.tar.*
mv icu4c-75_1-src.tgz installed/
# Get the tarball
cd
test -f installed/icu4c-74_2-src.tgz &&
mv -f icu4c-74_2-src.tgz .
test ! -f icu4c-74_2-src.tgz &&
wget https://github.com/unicode-org/icu/releases/download/release-74-2/\
icu4c-74_2-src.tgz
# Verify tarball w/ sha512sum:
# (this came from the GitHub release page gpg-verified SHASUM512.txt)
echo "e6c7876c0f3d756f3a6969cad9a8909e535eeaac352f3a721338b9cbd56\
864bf7414469d29ec843462997815d2ca9d0dab06d38c37cdd4d8feb28ad04d87\
81b0 icu4c-74_2-src.tgz" | sha512sum -c
# Extract the source
mkdir -p -m 0700 ~/src
cd ~/src
find -maxdepth 1 -type d -name "icu4c-*" -exec rm -r {} \;
mkdir -p -m 0700 icu4c-74.2
cd icu4c-74.2
tar xzvf ~/icu4c-74_2-src.tgz
cd icu/source
test $UID = 0 && chown -R root:root .
# Configure the build for 64-bit
test $(uname -m) = 'x86_64' &&
./runConfigureICU Linux/gcc --prefix=/usr --libdir=/usr/lib64 \
--mandir=/usr/man
# Configure the build for anything else
test $(uname -m) != 'x86_64' &&
./runConfigureICU Linux/gcc --prefix=/usr --mandir=/usr/man
# Build it
make -j$(nproc)
# Check the build
make check
# Become root to install it
su
# Remove the Slackware package, if there is one
## You may have running Apache httpd, Cyrus IMAP, Samba, etc. daemons
## running using the old version of libicu*. If that is the case (run lsof
## to check), I would suggest copying the shared library files temporarily,
## then removing the Slackware package, then copying them back where they
## were
test -f /var/adm/packages/icu4c-* &&
find /usr/lib64 -maxdepth 1 -type f -name "libicu*.so.*" -exec cp -a {} /tmp \;
# You may want to keep a copy of shared library files (or the Slackware
# package file) just in case
test -x /sbin/removepkg && /sbin/removepkg icu4c
# Copy the shared library files you put in /tmp back to /usr/lib64
find /tmp -maxdepth 1 -type f -name "libicu*.so.*"\
-exec cp -a {} /usr/lib64/ \;
# Install it
make install
ldconfig
# Make sure your non-root user can remove the source later
chown -R $(logname) .
chmod -R u+w .
# Become your non-root user again
exit
# Save the source for later
cd
mkdir -p -m 0700 installed
rm -f installed/icu4c-*.tar.*
mv icu4c-74_2-src.tgz installed/
# Get the tarball
cd
test -f installed/icu4c-73_2-src.tgz &&
mv -f icu4c-73_2-src.tgz .
test ! -f icu4c-73_2-src.tgz &&
wget https://github.com/unicode-org/icu/releases/download/release-73-2/\
icu4c-73_2-src.tgz
# Verify tarball w/ sha512sum:
# (this came from the GitHub release page gpg-verified SHASUM512.txt)
echo "76dd782db6205833f289d7eb68b60860dddfa3f614f0ba03fe\
7ec13117077f82109f0dc1becabcdf4c8a9c628b94478ab0a46134bd\
b06f4302be55f74027ce62 icu4c-73_2-src.tgz" | sha512sum -c
# Extract the source
mkdir -p -m 0700 ~/src
cd ~/src
find -maxdepth 1 -type d -name "icu4c-*" -exec rm -r {} \;
mkdir -p -m 0700 icu4c-73.2
cd icu4c-73.2
tar xzvf ~/icu4c-73_2-src.tgz
cd icu/source
test $UID = 0 && chown -R root:root .
# Configure the build for 64-bit
test $(uname -m) = 'x86_64' &&
./runConfigureICU Linux/gcc --prefix=/usr --libdir=/usr/lib64 \
--mandir=/usr/man
# Configure the build for anything else
test $(uname -m) != 'x86_64' &&
./runConfigureICU Linux/gcc --prefix=/usr --mandir=/usr/man
# Build it
make -j$(nproc)
# Check the build
make check
# Become root to install it
su
# Remove the Slackware package, if there is one
## You may have running Apache httpd, Cyrus IMAP, Samba, etc. daemons
## running using the old version of libicu*. If that is the case (run lsof
## to check), I would suggest copying the shared library files temporarily,
## then removing the Slackware package, then copying them back where they
## were
test -f /var/adm/packages/icu4c-* &&
find /usr/lib64 -maxdepth 1 -type f -name "libicu*.so.*" -exec cp -a {} /tmp \;
# You may want to keep a copy of shared library files (or the Slackware
# package file) just in case
test -x /sbin/removepkg && /sbin/removepkg icu4c
# Copy the shared library files you put in /tmp back to /usr/lib64
find /tmp -maxdepth 1 -type f -name "libicu*.so.*"\
-exec cp -a {} /usr/lib64/ \;
# Install it
make install
ldconfig
# Make sure your non-root user can remove the source later
chown -R $(logname) .
chmod -R u+w .
# Become your non-root user again
exit
# Save the source for later
cd
mkdir -p -m 0700 installed
rm -f installed/icu4c-*.tar.*
mv icu4c-73_2-src.tgz installed/
# If you ever want to uninstall ICU, this should do it:
cd
su
test -d src/icu4c-* && ( cd src/icu4c-* ; make uninstall )
( cd /usr/bin
rm -f derb genbrk gencfu gencnval gendict genrb icu-config icuexportdata \
icuinfo makeconv pkgdata uconv )
test -d /usr/include/unicode && rm -r /usr/include/unicode
( cd /usr/lib
rm -f libicudata.* libicui18n.* libicuio.* libicutest.* libicutu.* \
libicuuc.* )
test -d /usr/lib/pkgconfig &&
( cd /usr/lib/pkgconfig
rm -f icu-i18n.pc icu-io.pc icu-uc.pc )
test -d /usr/lib64 &&
( cd /usr/lib64
rm -f libicudata.* libicui18n.* libicuio.* libicutest.* libicutu.* \
libicuuc.* )
test -d /usr/lib64/pkgconfig &&
( cd /usr/lib64/pkgconfig
rm -f icu-i18n.pc icu-io.pc icu-uc.pc )
( cd /usr/man/man1
rm -f derb.1 genbrk.1 gencfu.1 gencnval.1 gendict.1 genrb.1 icu-config.1 \
icuexportdata.1 makeconv.1 pkgdata.1 uconv.1 )
( cd /usr/man/man8
rm -f genccode.8 gencmn.8 gensprep.8 icupkg.8 )
( cd /usr/sbin
rm -f escapesrc genccode gencmn gennorm2 gensprep icupkg )
test -d /usr/share/icu && rm -r /usr/share/icu
ldconfig
exit
find ~/src -maxdepth 1 -type d -name "icu4c-*" -exec rm -r {} \;
rm -f ~/installed/icu4c-*.tar.*