Я работаю над чем-то в 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 нет смолы, и когда я начал спускаться по этой кроличьей норе, я просто предположил, что делал что-то не так, и должен обратиться за помощью.