[pacman-dev] [PATCH 3/3] Add example hook scripts to etc/pacman.d/hooks
Daniel Mendler
mail at daniel-mendler.de
Sun Jan 30 18:16:11 EST 2011
* example-hook is a template
* checksums computes file checksums after package installation
Signed-off-by: Daniel Mendler <mail at daniel-mendler.de>
---
etc/pacman.d/hooks/checksums | 51 +++++++++++++++++++++++++++++++++++++++
etc/pacman.d/hooks/example-hook | 41 +++++++++++++++++++++++++++++++
2 files changed, 92 insertions(+), 0 deletions(-)
create mode 100644 etc/pacman.d/hooks/checksums
create mode 100644 etc/pacman.d/hooks/example-hook
diff --git a/etc/pacman.d/hooks/checksums b/etc/pacman.d/hooks/checksums
new file mode 100644
index 0000000..7ad19a1
--- /dev/null
+++ b/etc/pacman.d/hooks/checksums
@@ -0,0 +1,51 @@
+#
+# /etc/pacman.d/hooks/checksums
+#
+# Example script which computes checksums for each file after package installation.
+# It can be used to check system integrity.
+#
+
+post_install() {
+ name=$1
+ ver=$2
+ pkg=$name-$ver
+ pkg_path="/var/lib/pacman/local/$pkg"
+ echo "computing checksums for $pkg"
+ files=`sed -e '/^%FILES%$/d;/^$/d;s/.*/\/&/' "$pkg_path/files"`
+ # Write checksum entries
+ # filename type mode owner group (link target/sha256 checksum)
+ for file in $files; do
+ mode=`stat -c '%a' $file`
+ owner=`stat -c '%u' $file`
+ group=`stat -c '%g' $file`
+ if [ -L "$file" ]; then
+ link=`readlink $file`
+ echo "$file s $mode $owner $group $link"
+ elif [ -f "$file" ]; then
+ checksum=`sha256sum $file`
+ echo "$file f $mode $owner $group ${checksum:0:64}"
+ elif [ -d "$file" ]; then
+ echo "$file d $mode $owner $group"
+ fi
+ done > "$pkg_path/checksums"
+}
+
+pre_remove() {
+ name=$1
+ ver=$2
+ rm -f "/var/lib/pacman/local/$name-$ver/checksums"
+}
+
+pre_upgrade() {
+ name=$1
+ ver=$2
+ oldver=$3
+ pre_remove $name $oldver
+}
+
+post_upgrade() {
+ name=$1
+ ver=$2
+ oldver=$3
+ post_install $name $ver
+}
diff --git a/etc/pacman.d/hooks/example-hook b/etc/pacman.d/hooks/example-hook
new file mode 100644
index 0000000..e91f935
--- /dev/null
+++ b/etc/pacman.d/hooks/example-hook
@@ -0,0 +1,41 @@
+#
+# /etc/pacman.d/hooks/example-hook
+#
+
+pre_install() {
+ name=$1
+ ver=$2
+ echo "example-hook: pre_install $name $ver"
+}
+
+post_install() {
+ name=$1
+ ver=$2
+ echo "example-hook: post_install $name $ver"
+}
+
+pre_upgrade() {
+ name=$1
+ ver=$2
+ oldver=$3
+ echo "example-hook: pre_upgrade $name $ver $oldver"
+}
+
+post_upgrade() {
+ name=$1
+ ver=$2
+ oldver=$3
+ echo "example-hook: post_upgrade $name $ver $oldver"
+}
+
+pre_remove() {
+ name=$1
+ ver=$2
+ echo "example-hook: pre_remove $name $ver"
+}
+
+post_remove() {
+ name=$1
+ ver=$2
+ echo "example-hook: post_remove $name $ver"
+}
--
1.7.3.5
More information about the pacman-dev
mailing list