Write a dpkg manifest to list installed packages
To create an auditable log of packages installed in an image use dpkg-query to create a json data file with the package names, version and install status. Change-Id: I59018221edcb944a876ad47b402538c63c426bc7
This commit is contained in:
parent
b9189a204f
commit
843085a7cd
27
elements/dpkg/cleanup.d/01-copy-dpkg-manifest
Executable file
27
elements/dpkg/cleanup.d/01-copy-dpkg-manifest
Executable file
@ -0,0 +1,27 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Copyright 2014 Hewlett-Packard Development Company, L.P.
|
||||||
|
# All Rights Reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
# a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
#
|
||||||
|
set -eux
|
||||||
|
|
||||||
|
MANIFEST_DIR=/etc/dib-manifests
|
||||||
|
DPKG_MANIFEST_NAME=dib-manifest-dpkg-$(basename ${IMAGE_NAME})
|
||||||
|
|
||||||
|
if [ -f $TMP_MOUNT_PATH/${MANIFEST_DIR}/${DPKG_MANIFEST_NAME} ]; then
|
||||||
|
mkdir -p ${IMAGE_NAME}-manifests
|
||||||
|
cp --no-preserve=ownership -v $TMP_MOUNT_PATH/${MANIFEST_DIR}/${DPKG_MANIFEST_NAME} \
|
||||||
|
${IMAGE_NAME}-manifests/
|
||||||
|
fi
|
33
elements/dpkg/post-install.d/99-write-dpkg-manifest
Executable file
33
elements/dpkg/post-install.d/99-write-dpkg-manifest
Executable file
@ -0,0 +1,33 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Copyright 2014 Hewlett-Packard Development Company, L.P.
|
||||||
|
# All Rights Reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
# a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
#
|
||||||
|
set -eux
|
||||||
|
|
||||||
|
MANIFEST_DIR=/etc/dib-manifests
|
||||||
|
mkdir -p ${MANIFEST_DIR}
|
||||||
|
DPKG_MANIFEST_NAME=dib-manifest-dpkg-$(basename ${IMAGE_NAME})
|
||||||
|
|
||||||
|
# Write the json preamble
|
||||||
|
echo '{"packages": [' > ${MANIFEST_DIR}/${DPKG_MANIFEST_NAME}
|
||||||
|
|
||||||
|
# Write a json-format output for the packages installed
|
||||||
|
format='{"package": "${binary:Package}","arch": "${Architecture}","version": "${Version}","status": "${db:Status-Abbrev}"},'
|
||||||
|
# Use the configurable dpkg --show output as a manifest
|
||||||
|
dpkg-query --show --showformat="${format}" | tee -a ${MANIFEST_DIR}/${DPKG_MANIFEST_NAME}
|
||||||
|
|
||||||
|
# Finish off the json structure and make it easier for human inspection
|
||||||
|
sed -i -e 's/,$/\n]}/g' -e 's/\(},\)/ \1\n/g' ${MANIFEST_DIR}/${DPKG_MANIFEST_NAME}
|
Loading…
Reference in New Issue
Block a user