icu4c - International Components for Unicode for C/C++ ChangeLog

HOWTO


# 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


# ICU 76.1 (released 2024-10-24)
# ========
# Slackware 14.0: icu4c 49.1.2
# Slackware 14.1: icu4c 51.2
# Slackware 14.2: icu4c 56.1
# Slackware 15.0: icu4c 69.1

# Alternate URL for home page is https://www.icu-project.org/
# As this is written, it redirects to icu.unicode.org

# Prerequisites:
# pkg-config >= 0.20
# icu-le-hb
# Python
# Doxygen

# ICU 76
# GitHub ICU 76.1 release
# GitHub ICU 75-1 (75.1) to 76-1 (76.1) compare
# GitHub ICU 74-2 (74.2) to 75-1 (75.1) compare
# ICU User Guide
# How To Build And Install On UNIX

# 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

# Verify tarball w/ gpg:
( gpg --list-keys E52F07877A5805F9AF4AB0ACD46C5610D06E7001 > /dev/null 2>&1 ||
  gpg --keyserver keyserver.ubuntu.com --recv-keys \
   E52F07877A5805F9AF4AB0ACD46C5610D06E7001 ) &&
wget -nc https://github.com/unicode-org/icu/releases/download/release-76-1/\
icu4c-76_1-src.tgz.asc &&
  gpg --verify icu4c-76_1-src.tgz.asc && rm icu4c-76_1-src.tgz.asc

# 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/


# ICU 75.1 (released 2024-04-15)
# ========
# Slackware 14.0: icu4c 49.1.2
# Slackware 14.1: icu4c 51.2
# Slackware 14.2: icu4c 56.1
# Slackware 15.0: icu4c 69.1

# Alternate URL for home page is https://www.icu-project.org/
# As this is written, it redirects to icu.unicode.org

# Prerequisites:
# pkg-config >= 0.20
# icu-le-hb
# Python
# Doxygen

# ICU 75
# GitHub ICU 75.1 release
# GitHub ICU 74-2 (74.2) to 75-1 (75.1) compare
# ICU User Guide
# How To Build And Install On UNIX

# 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

# Verify tarball w/ gpg:
( gpg --list-keys E52F07877A5805F9AF4AB0ACD46C5610D06E7001 > /dev/null 2>&1 ||
  gpg --keyserver keyserver.ubuntu.com --recv-keys \
   E52F07877A5805F9AF4AB0ACD46C5610D06E7001 ) &&
wget -nc https://github.com/unicode-org/icu/releases/download/release-75-1/\
icu4c-75_1-src.tgz.asc &&
  gpg --verify icu4c-75_1-src.tgz.asc && rm icu4c-75_1-src.tgz.asc

# 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/


# ICU 74.2 (released 2023-12-11)
# ========
# Slackware 14.0: icu4c 49.1.2
# Slackware 14.1: icu4c 51.2
# Slackware 14.2: icu4c 56.1
# Slackware 15.0: icu4c 69.1

# Alternate URL for home page is https://www.icu-project.org/
# As this is written, it redirects to icu.unicode.org

# Prerequisites:
# pkg-config >= 0.20
# icu-le-hb
# Python
# Doxygen

# ICU 74
# GitHub ICU 74.2 release
# ICU User Guide
# How To Build And Install On UNIX

# 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

# Verify tarball w/ gpg:
( gpg --list-keys 3DA35301A7C330257B8755754058F67406EAA6AB > /dev/null 2>&1 ||
  gpg --keyserver keyserver.ubuntu.com --recv-keys \
   3DA35301A7C330257B8755754058F67406EAA6AB ) &&
wget -nc https://github.com/unicode-org/icu/releases/download/release-74-2/\
icu4c-74_2-src.tgz.asc &&
  gpg --verify icu4c-74_2-src.tgz.asc && rm icu4c-74_2-src.tgz.asc

# 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/


# ICU 73.2 (released 2023-06-12)
# ========
# Slackware 14.0: icu4c 49.1.2
# Slackware 14.1: icu4c 51.2
# Slackware 14.2: icu4c 56.1
# Slackware 15.0: icu4c 69.1

# Alternate URL for home page is https://www.icu-project.org/
# As this is written, it redirects to icu.unicode.org

# Prerequisites:
# pkg-config >= 0.20
# icu-le-hb
# Python
# Doxygen

# ICU 73
# GitHub ICU 73.2 release
# ICU User Guide
# How To Build And Install On UNIX

# 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

# Verify tarball w/ gpg:
( gpg --list-keys 3DA35301A7C330257B8755754058F67406EAA6AB > /dev/null 2>&1 ||
  gpg --keyserver keyserver.ubuntu.com --recv-keys \
   3DA35301A7C330257B8755754058F67406EAA6AB ) &&
wget -nc https://github.com/unicode-org/icu/releases/download/release-73-2/\
icu4c-73_2-src.tgz.asc &&
  gpg --verify icu4c-73_2-src.tgz.asc && rm icu4c-73_2-src.tgz.asc

# 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.*

List of HOWTOs

Web page itself last updated: 2023-12-20 8:06pm (EDT -0400)
HOWTO last updated: 2025-02-24 6:58pm
Copyright © 2001-2025 Jason Englander. All Rights reserved.
[HTML5]