Как собрать все файлы deb-пакета в tar-архив?

BASH
Если у вас есть устанволенный deb-пакет и хочется аккуратно собрать все его файлы в архив TAR, то сделать это можно вот так:


PACKAGE='libmysqlclient-dev'
tar -cjf /tmp/$PACKAGE.tbz2 -T <(while read f; do [[ -d $f ]] || echo "$f"; done < <(dpkg -L $PACKAGE))


Бывает, что права root'а недоступны, пакеты deb вы нормальным образом установить не сможете (в том числе и любые инструменты сборки из исходников) и тогда подобный «перенос в tar-архивах» становится единственной возможностью для работы в сильно стеснённых условиях. При этом если вы оставите все пересённые tar-архивы на целевой системе, то сможете с помощью опции -t получить список файлов архива и, соответственно, при необходимости вычистить ненужное.

Этакая эмуляция «пакетной системы» Slackware получается :)

P.S.
Думаю, несложно догадаться, что приведённый ниже скрипт соберёт в архив все файлы, установленные из rpm-пакета, в котором был /usr/sbin/zabbix_proxy:


FILE=/usr/sbin/zabbix_proxy
PACKAGE=$(rpm -qf $(readlink -e $FILE))
[[ $? == 0 && $PACKAGE ]] && \
    sudo bash -c 'tar -cjf /tmp/'$PACKAGE'.tbz2 -T <(while read f; do [[ -d $f ]] || echo "$f"; done < <(rpm -ql '$PACKAGE')); echo "/tmp/'$PACKAGE'.tbz2 created"'

0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.