Lmabda antivirus-update error.
b'./bin/freshclam: error while loading shared libraries: libltdl.so.7: cannot open shared object file: No such file or directory\n'
In the Dockerfile, the command "RUN yum install -y libtool-ltdl" is implemented to install the necessary packages. However, the error mentioned above occurs.
This code is for a Lambda function that performs virus scanning on files stored in S3.
Dockerfile
FROM amazonlinux:2
# Set up working directories
RUN mkdir -p /opt/app
RUN mkdir -p /opt/app/build
RUN mkdir -p /opt/app/bin/
RUN mkdir -p /opt/app/lib/
# Copy in the lambda source
WORKDIR /opt/app
COPY ./*.py /opt/app/
COPY requirements.txt /opt/app/requirements.txt
# Install packages
RUN yum update -y
RUN yum install -y cpio python3-pip yum-utils zip unzip less
RUN yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# Install Packages for Python3.11
RUN yum remove openssl-devel
RUN yum install -y openssl11 openssl11-devel
RUN yum install -y wget
RUN wget https://www.python.org/ftp/python/3.11.0/Python-3.11.0.tgz
RUN yum install -y tar gzip
RUN tar -xzf Python-3.11.0.tgz
RUN yum install -y make gcc nss json-c-devel
RUN cd Python-3.11.0 && \
./configure --enable-optimizations && \
nproc && \
make -j 8 && \
make install
RUN rm -f Python-3.11.0.tgz
# This had --no-cache-dir, tracing through multiple tickets led to a problem in wheel
RUN pip3 install -r requirements.txt
RUN rm -rf /root/.cache/pip
RUN yum install -y libtool-ltdl
# Download libraries we need to run in lambda
WORKDIR /tmp
RUN yumdownloader -x \*i686 --archlist=x86_64 clamav clamav-lib clamav-update json-c pcre2 libprelude gnutls libtasn1 lib64nettle nettle
RUN rpm2cpio clamav-0*.rpm | cpio -idmv
RUN rpm2cpio clamav-lib*.rpm | cpio -idmv
RUN rpm2cpio clamav-update*.rpm | cpio -idmv
RUN rpm2cpio json-c*.rpm | cpio -idmv
RUN rpm2cpio pcre*.rpm | cpio -idmv
RUN rpm2cpio gnutls* | cpio -idmv
RUN rpm2cpio nettle* | cpio -idmv
RUN rpm2cpio lib* | cpio -idmv
RUN rpm2cpio *.rpm | cpio -idmv
RUN rpm2cpio libtasn1* | cpio -idmv
# Copy over the binaries and libraries
RUN cp /tmp/usr/bin/clamscan /tmp/usr/bin/freshclam /tmp/usr/lib64/* /opt/app/bin/
RUN cp /tmp/usr/bin/clamscan /tmp/usr/bin/freshclam /tmp/usr/lib64/* /opt/app/lib
RUN cp /usr/lib64/libpthread.so.* /usr/lib64/libc.so.* /usr/lib64/libjson-c.so.* /usr/lib64/libbz2.so.* /usr/lib64/libxml2.so.* /usr/lib64/libdl.so.* /usr/lib64/libssl.so.* /usr/lib64/libcrypto.so.* /usr/lib64/libcrypt.so.* /usr/lib64/libz.so.* /usr/lib64/libpcre.so.* /usr/lib64/libm.so.* /usr/lib64/ld-linux-x86-64.so.* /usr/lib64/liblzma.so.* /usr/lib64/libgssapi_krb5.so.* /usr/lib64/libkrb5.so.* /usr/lib64/libcom_err.so.* /usr/lib64/libk5crypto.so.* /usr/lib64/libkrb5support.so.* /usr/lib64/libkeyutils.so.* /usr/lib64/libresolv.so.* /usr/lib64/libselinux.so.* /usr/lib64/libnssutil3.so /usr/lib64/libnss3.so /usr/lib64/libsmime3.so /usr/lib64/libssl3.so /usr/lib64/libsasl2.so.* /usr/lib64/libunistring.so.* /usr/lib64/liblber-2.4.so.* /usr/lib64/libldap-2.4.so.* /usr/lib64/libssh2.so.* /usr/lib64/libidn2.so.* /usr/lib64/libnghttp2.so.* /usr/lib64/libcurl.so.* /usr/lib64/libstdc++.so.* /usr/lib64/libgcc_s.so.* /usr/lib64/libplds4.so /usr/lib64/libplc4.so /usr/lib64/libnspr4.so /usr/lib64/librt.so.* /opt/app/bin
RUN cp /usr/lib64/libpthread.so.* /usr/lib64/libc.so.* /usr/lib64/libjson-c.so.* /usr/lib64/libbz2.so.* /usr/lib64/libxml2.so.* /usr/lib64/libdl.so.* /usr/lib64/libssl.so.* /usr/lib64/libcrypto.so.* /usr/lib64/libcrypt.so.* /usr/lib64/libz.so.* /usr/lib64/libpcre.so.* /usr/lib64/libm.so.* /usr/lib64/ld-linux-x86-64.so.* /usr/lib64/liblzma.so.* /usr/lib64/libgssapi_krb5.so.* /usr/lib64/libkrb5.so.* /usr/lib64/libcom_err.so.* /usr/lib64/libk5crypto.so.* /usr/lib64/libkrb5support.so.* /usr/lib64/libkeyutils.so.* /usr/lib64/libresolv.so.* /usr/lib64/libselinux.so.* /usr/lib64/libnssutil3.so /usr/lib64/libnss3.so /usr/lib64/libsmime3.so /usr/lib64/libssl3.so /usr/lib64/libsasl2.so.* /usr/lib64/libunistring.so.* /usr/lib64/liblber-2.4.so.* /usr/lib64/libldap-2.4.so.* /usr/lib64/libssh2.so.* /usr/lib64/libidn2.so.* /usr/lib64/libnghttp2.so.* /usr/lib64/libcurl.so.* /usr/lib64/libpsl.so.* /usr/lib64/libstdc++.so.* /usr/lib64/libgcc_s.so.* /usr/lib64/libplds4.so /usr/lib64/libplc4.so /usr/lib64/libnspr4.so /usr/lib64/librt.so.* /opt/app/lib
ENV LD_LIBRARY_PATH=/opt/app/bin:${LD_LIBRARY_PATH}
# Fix the freshclam.conf settings
RUN echo "DatabaseMirror database.clamav.net" > /opt/app/bin/freshclam.conf
RUN echo "CompressLocalDatabase yes" >> /opt/app/bin/freshclam.conf
# Create the zip file
WORKDIR /opt/app
RUN zip -r9 --exclude="*test*" /opt/app/build/lambda.zip *.py bin lib
WORKDIR /usr/local/lib/python3.11/site-packages
RUN zip -r9 /opt/app/build/lambda.zip *
WORKDIR /opt/app
requirements.txt
requests==2.31.0
certifi==2018.11.29
chardet==5.1.0
datadog==0.47.0
decorator==5.1.1
idna==3.4
simplejson==3.19.2
urllib3==2.0.7
pytz==2023.3