[devel] rpmpeek
Alexey Tourbin
=?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Вт Сен 13 22:13:24 MSD 2005
Изобрел новую команду для работы со внутренностями rpm'а.
Она распаковывает rpm во временный каталог, затем переходит
в этот каталог и выполняет команду. Многие операции с rpm'ами
у меня теперь заметно упрощаются. Вот пример не очень эффективного
использования этой команды:
$ ./rpmpeek ~/RPM/RPMS/libnetpbm-10.20-alt1.i686.rpm find -type f -print0 |
./rpmpeek ~/RPM/RPMS/libnetpbm-10.20-alt1.i686.rpm xargs -r0 file --
./usr/lib/libnetpbm.so.10.20: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), stripped
./usr/share/doc/netpbm-10.20/README: ASCII English text
./usr/share/doc/netpbm-10.20/COPYRIGHT.PATENT: ASCII English text
./usr/share/doc/netpbm-10.20/HISTORY: ISO-8859 English text
./usr/share/doc/netpbm-10.20/copyright_summary: ASCII English text
./.fakedata: ASCII text
$
Использование не очень эффективно, потому что rpm распаковывается
дважды -- один раз для выполнения find, другой раз для выполнения
xargs file. Однако же понятие эффективности очень ситуативно.
----------- следующая часть -----------
#!/bin/sh -ef
export LC_ALL=C
while getopts h opt; do
case "$opt" in
h) pod2usage --exit=0 "$0"; exit 0 ;;
*) pod2usage --exit=2 "$0"; exit 2 ;;
esac
done
shift "$((OPTIND-1))"
if [ $# -lt 2 ]; then
echo "${0##*/}: not enough arguments" >&2
pod2usage --exit=2 "$0"; exit 2
fi
atexit()
{
local rc=$?
trap - EXIT
chmod -Rf u+rwX "$tmpdir"
rm -rf "$tmpdir"
exit $rc
}
tmpdir="$(mktemp -d -t "${0##*/}.XXXXXXXX")"
trap atexit EXIT HUP INT QUIT PIPE TERM
rpm2cpio "$1" |(cd "$tmpdir"; fakeroot -s .fakedata -- \
cpio -idmu --quiet --no-absolute-filenames) || exit 2
shift
cd "$tmpdir"
fakeroot -i .fakedata -- "$@" || exit 1
: <<'__EOF__'
=head1 NAME
rpmpeek - execute command within RPM contents
=head1 SYNOPSIS
B<rpmpeek> [B<-h>] I<command> [I<args>...]
=head1 AUTHOR
Written by Alexey Tourbin <at на altlinux.org>.
=head1 COPYING
Copyright (c) 2005 Alexey Tourbin, ALT Linux Team.
This is free software; you can redistribute it and/or modify it under the terms
of the GNU General Public License as published by the Free Software Foundation;
either version 2 of the License, or (at your option) any later version.
=head1 SEE ALSO
rpm(8),
rpm2cpio(8),
fakeroot(1)
=cut
__EOF__
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20050913/315055ca/attachment-0001.bin>
Подробная информация о списке рассылки Devel