Hello, I'm currently following a tutorial for ClamAV with a lambda function.
The tutorial has a shell script with the following:
#!/usr/bin/env bash
set -e
LAMBDA_FILE="lambda.zip"
rm -f ${LAMBDA_FILE}
mkdir -p clamav
echo "-- Downloading AmazonLinux container --"
docker pull amazonlinux
docker create -i -t -v ${PWD}/clamav:/home/docker --name s3-antivirus-builder amazonlinux
docker start s3-antivirus-builder
echo "-- Updating, downloading and unpacking clamAV and ClamAV update --"
docker exec -it -w /home/docker s3-antivirus-builder yum install -y cpio yum-utils
docker exec -it -w /home/docker s3-antivirus-builder yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
docker exec -it -w /home/docker s3-antivirus-builder yum-config-manager --enable epel
docker exec -it -w /home/docker s3-antivirus-builder yumdownloader -x \*i686 --archlist=x86_64 clamav clamav-lib clamav-update
docker exec -it -w /home/docker s3-antivirus-builder /bin/sh -c "echo 'folder content' && ls -la"
docker exec -it -w /home/docker s3-antivirus-builder /bin/sh -c "rpm2cpio clamav-0*.rpm | cpio -idmv"
docker exec -it -w /home/docker s3-antivirus-builder /bin/sh -c "rpm2cpio clamav-lib*.rpm | cpio -idmv"
docker exec -it -w /home/docker s3-antivirus-builder /bin/sh -c "rpm2cpio clamav-update*.rpm | cpio -idmv"
docker stop s3-antivirus-builder
docker rm s3-antivirus-builder
mkdir ./bin
echo "-- Copying the executables and required libraries --"
cp clamav/usr/bin/clamscan clamav/usr/bin/freshclam clamav/usr/lib64/* bin/.
echo "-- Cleaning up ClamAV folder --"
rm -rf clamav
cp -R ./s3-antivirus/* bin/.
pushd ./bin
zip -r9 ${LAMBDA_FILE} *
popd
cp bin/${LAMBDA_FILE} .
echo "-- Cleaning up bin folder --"
rm -rf bin
Here is the terminal output:
-- Downloading AmazonLinux container --
Using default tag: latest
latest: Pulling from library/amazonlinux
638b75f800bf: Pull complete
Digest: sha256:802212e258f7b67b5754c795f17395937918b29629dd72af615b768f0fcb6cf3
Status: Downloaded newer image for amazonlinux:latest
e23d0d70f8bca60404a2093982c18cf3b516c27101d9729fd2baf485525dc41f
s3-antivirus-builder
-- Updating, downloading and unpacking clamAV and ClamAV update --
Loaded plugins: ovl, priorities
amzn2-core | 2.4 kB 00:00
(1/3): amzn2-core/2/x86_64/group_gz | 2.4 kB 00:00
(2/3): amzn2-core/2/x86_64/updateinfo | 39 kB 00:00
(3/3): amzn2-core/2/x86_64/primary_db | 14 MB 00:00
Package cpio-2.11-25.amzn2.x86_64 already installed and latest version
Resolving Dependencies
--> Running transaction check
---> Package yum-utils.noarch 0:1.1.31-45.amzn2.0.1 will be installed
--> Processing Dependency: python-kitchen for package: yum-utils-1.1.31-45.amzn2.0.1.noarch
--> Processing Dependency: libxml2-python for package: yum-utils-1.1.31-45.amzn2.0.1.noarch
--> Running transaction check
---> Package libxml2-python.x86_64 0:2.9.1-6.amzn2.3 will be installed
---> Package python-kitchen.noarch 0:1.1.1-5.amzn2 will be installed
--> Processing Dependency: python-chardet for package: python-kitchen-1.1.1-5.amzn2.noarch
--> Running transaction check
---> Package python-chardet.noarch 0:2.2.1-1.amzn2 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
yum-utils noarch 1.1.31-45.amzn2.0.1 amzn2-core 120 k
Installing for dependencies:
libxml2-python x86_64 2.9.1-6.amzn2.3 amzn2-core 246 k
python-chardet noarch 2.2.1-1.amzn2 amzn2-core 227 k
python-kitchen noarch 1.1.1-5.amzn2 amzn2-core 266 k
Transaction Summary
================================================================================
Install 1 Package (+3 Dependent packages)
Total download size: 858 k
Installed size: 4.2 M
Downloading packages:
(1/4): libxml2-python-2.9.1-6.amzn2.3.x86_64.rpm | 246 kB 00:00
(2/4): python-chardet-2.2.1-1.amzn2.noarch.rpm | 227 kB 00:00
(3/4): yum-utils-1.1.31-45.amzn2.0.1.noarch.rpm | 120 kB 00:00
(4/4): python-kitchen-1.1.1-5.amzn2.noarch.rpm | 266 kB 00:00
--------------------------------------------------------------------------------
Total 2.9 MB/s | 858 kB 00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : python-chardet-2.2.1-1.amzn2.noarch 1/4
Installing : python-kitchen-1.1.1-5.amzn2.noarch 2/4
Installing : libxml2-python-2.9.1-6.amzn2.3.x86_64 3/4
Installing : yum-utils-1.1.31-45.amzn2.0.1.noarch 4/4
Verifying : yum-utils-1.1.31-45.amzn2.0.1.noarch 1/4
Verifying : python-kitchen-1.1.1-5.amzn2.noarch 2/4
Verifying : libxml2-python-2.9.1-6.amzn2.3.x86_64 3/4
Verifying : python-chardet-2.2.1-1.amzn2.noarch 4/4
Installed:
yum-utils.noarch 0:1.1.31-45.amzn2.0.1
Dependency Installed:
libxml2-python.x86_64 0:2.9.1-6.amzn2.3 python-chardet.noarch 0:2.2.1-1.amzn2
python-kitchen.noarch 0:1.1.1-5.amzn2
Complete!
Loaded plugins: ovl, priorities
epel-release-latest-7.noarch.rpm | 15 kB 00:00
Examining /var/tmp/yum-root-MpdNoE/epel-release-latest-7.noarch.rpm: epel-release-7-11.noarch
Marking /var/tmp/yum-root-MpdNoE/epel-release-latest-7.noarch.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package epel-release.noarch 0:7-11 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
epel-release noarch 7-11 /epel-release-latest-7.noarch 24 k
Transaction Summary
================================================================================
Install 1 Package
Total size: 24 k
Installed size: 24 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : epel-release-7-11.noarch 1/1
Verifying : epel-release-7-11.noarch 1/1
Installed:
epel-release.noarch 0:7-11
Complete!
Loaded plugins: ovl, priorities
================================== repo: epel ==================================
[epel]
async = True
bandwidth = 0
base_persistdir = /var/lib/yum/repos/x86_64/2
baseurl =
cache = 0
cachedir = /var/cache/yum/x86_64/2/epel
check_config_file_age = True
compare_providers_priority = 80
cost = 1000
deltarpm_metadata_percentage = 100
deltarpm_percentage =
enabled = True
enablegroups = True
exclude =
failovermethod = priority
ftp_disable_epsv = False
gpgcadir = /var/lib/yum/repos/x86_64/2/epel/gpgcadir
gpgcakey =
gpgcheck = True
gpgdir = /var/lib/yum/repos/x86_64/2/epel/gpgdir
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
hdrdir = /var/cache/yum/x86_64/2/epel/headers
http_caching = all
includepkgs =
ip_resolve =
keepalive = True
keepcache = False
mddownloadpolicy = sqlite
mdpolicy = group:small
mediaid =
metadata_expire = 21600
metadata_expire_filter = read-only:present
metalink = https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=x86_64
minrate = 0
mirrorlist =
mirrorlist_expire = 86400
name = Extra Packages for Enterprise Linux 7 - x86_64
old_base_cache_dir =
password =
persistdir = /var/lib/yum/repos/x86_64/2/epel
pkgdir = /var/cache/yum/x86_64/2/epel/packages
priority = 99
proxy = False
proxy_dict =
proxy_password =
proxy_username =
repo_gpgcheck = False
report_instanceid = False
retries = 10
skip_if_unavailable = False
ssl_check_cert_permissions = True
sslcacert =
sslclientcert =
sslclientkey =
sslverify = True
throttle = 0
timeout = 30.0
ui_id = epel/x86_64
ui_repoid_vars = releasever,
basearch
username =
Loaded plugins: ovl, priorities
epel/x86_64/metalink | 19 kB 00:00
epel | 3.2 kB 00:00
(1/3): epel/x86_64/group_gz | 88 kB 00:00
(2/3): epel/x86_64/updateinfo | 928 kB 00:00
(3/3): epel/x86_64/primary | 3.5 MB 00:00
epel 12624/12624
143 packages excluded due to repository priority protections
warning: /home/docker/clamav-0.100.1-1.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY
Public key for clamav-0.100.1-1.el7.x86_64.rpm is not installed
(1/3): clamav-0.100.1-1.el7.x86_64.rpm | 641 kB 00:00
(2/3): clamav-lib-0.100.1-1.el7.x86_64.rpm | 757 kB 00:00
(3/3): clamav-update-0.100.1-1.el7.x86_64.rpm | 100 kB 00:00
folder content
total 1508
drwxr-xr-x 5 root root 160 Jul 28 16:38 .
drwxr-xr-x 1 root root 4096 Jul 28 16:38 ..
-rw-r--r-- 1 root root 656602 Jul 11 12:12 clamav-0.100.1-1.el7.x86_64.rpm
-rw-r--r-- 1 root root 775574 Jul 11 12:12 clamav-lib-0.100.1-1.el7.x86_64.rpm
-rw-r--r-- 1 root root 101978 Jul 11 12:12 clamav-update-0.100.1-1.el7.x86_64.rpm
./usr/bin/clambc
./usr/bin/clamconf
./usr/bin/clamdscan
./usr/bin/clamdtop
./usr/bin/clamscan
./usr/bin/clamsubmit
./usr/bin/sigtool
./usr/share/doc/clamav-0.100.1
./usr/share/doc/clamav-0.100.1/clamdoc.pdf
./usr/share/doc/clamav-0.100.1/phishsigs_howto.pdf
./usr/share/doc/clamav-0.100.1/signatures.pdf
./usr/share/man/man1/clambc.1.gz
./usr/share/man/man1/clamconf.1.gz
./usr/share/man/man1/clamdscan.1.gz
./usr/share/man/man1/clamdtop.1.gz
./usr/share/man/man1/clamscan.1.gz
./usr/share/man/man1/clamsubmit.1.gz
./usr/share/man/man1/sigtool.1.gz
./usr/share/man/man5/clamav-milter.conf.5.gz
3152 blocks
./usr/lib64/libclamav.so.7
./usr/lib64/libclamav.so.7.1.1
./usr/lib64/libclammspack.so.0
./usr/lib64/libclammspack.so.0.1.0
3951 blocks
./etc/cron.d/clamav-update
./etc/freshclam.conf
./etc/logrotate.d/clamav-update
./etc/sysconfig/freshclam
./usr/bin/freshclam
./usr/share/clamav/freshclam-sleep
./usr/share/man/man1/freshclam.1.gz
./usr/share/man/man5/freshclam.conf.5.gz
423 blocks
s3-antivirus-builder
s3-antivirus-builder
-- Copying the executables and required libraries --
-- Cleaning up ClamAV folder --
~/docker_projects/lambda-s3-antivirus/bin ~/docker_projects/lambda-s3-antivirus
adding: antivirus.js (deflated 61%)
adding: clamav.js (deflated 70%)
adding: clamscan (deflated 68%)
adding: constants.js (deflated 68%)
adding: download-definitions.js (deflated 54%)
adding: freshclam (deflated 64%)
adding: freshclam.conf (deflated 13%)
adding: libclamav.so.7 (deflated 58%)
adding: libclamav.so.7.1.1 (deflated 58%)
adding: libclammspack.so.0 (deflated 49%)
adding: libclammspack.so.0.1.0 (deflated 49%)
adding: package-lock.json (deflated 69%)
adding: package.json (deflated 16%)
adding: utils.js (deflated 64%)
~/docker_projects/lambda-s3-antivirus
-- Cleaning up bin folder --
I upload the zip to the AWS lambda function and get missing library error:
./clamscan: error while loading shared libraries: libjson-c.so.2: cannot open shared object file: No such file or directory
To solve this issue I just included the libson-c file in the script file. Now the program is complaining about other missing libraries that were supposed to be included with clamav download.
Would it be possible to download all the ClamAV dependencies or libraries separately with yum?
Also, here are the .so file names that come in the final zip:
libclamav.so.7, libclamav.so.7.1.1, libclammspack.so.0 , and libclammspack.so.0.1.0