Я работаю над чем-то в Makefile, которое будет выглядеть примерно так:
tarball:
mkdir -p tmp/tarball/etc/service
mkdir -p tmp/tarball/usr/local
mkdir -p tmp/tarball/opt/myproject
cd sensordatad; make
cd sensortunneld; make device_name
cp -r sensorservices tmp/tarball/etc/service
# Make a tarball here, something like:
# chroot tmp/tarball; tar -czvf myproject.tar.gz .
Идея заключается в том, что я смогу перейти в каталог ./tmp/tarball и создать тарбол , который при распаковке в системе будет сам распаковываться в /etc/service , /usr/local и в /opt/myproject .
Классический подход, похоже, заключается в использовании tar -czvf -C tmp/tarball . но это приводит к списку записей tar, которые начинаются с ./ .
Я вдохновлен пакетом от языка Go, который указывает, что он должен быть установлен с:
tar -C /usr/local -xzf go1.0.3.linux-amd64.tar.gz
Что было бы идеально для моего варианта использования, я хотел бы иметь возможность сделать:
tar -C / -xzf myproject.tar.gx
Что, в свою очередь, извлечет файлы изначально из ~/some-working-directory/tmp/tarball/_____ в /_____ , что означает, что я могу просто подделать структуру установки.
Конечно, это может быть лучше достигнуто с помощью чего-то вроде fpm , что я не исключаю, но я не заинтересован в решениях с большим весом, и я предполагал, что смогу сделать это, не прибегая к Ruby.
Я наткнулся на fakechroot , который кажется многообещающим, но неудивительно, что в chroot нет смолы, и когда я начал спускаться по этой кроличьей норе, я просто предположил, что делал что-то не так, и должен обратиться за помощью.
