[wiki:docs Vine Linux ドキュメント] / [wiki:../ RPM パッケージの作成方法] / %setupマクロの詳細 = %setupマクロの詳細 = hoge-1.1.tar.gzを展開したときに、hoge-1.1/というディレクトリができるなら、 オプションをつけなくても以上の作業が行われますが、例えば、 hoge/というディレクトリができるなら、このディレクトリの下にcdできるように、 {{{ #!sh %setup -n hoge }}} または、 {{{ #!sh %setup -n ${RPM_PACKAGE_NAME} }}} と指定します。 複数のソースがあるときには以下に述べるオプション -a や -b を使います。 例えば Source、Source1、Source2 の 3 つがあるときには、 {{{ #!sh %setup -a 1 -a 2 -n hoge }}} などとします。(以下のオプションの指定参照。) この%setupにはさまざまなオプションがありますが、 代表的なものを以下に示します。 -n <ディレクトリ名>:: %setupを実行した後(もしくは前)にcdするディレクトリ名(name)を指定する。 このオプションを省略したときの、デフォルトのディレクトリ名は、 ${RPM_PACKAGE_NAME}-${RPM_PACKAGE_VERSION}。 -c:: 指定ディレクトリ(上の-nオプションで指定したディレクトリ) を作成し(create)、そこにcdした後にソースの展開をします。 -a <#>:: Source0を展開した後、 指定ディレクトリ(上と同じ)にcdした(after)、 #番目のソース(Source#)の展開をします。 %setup -a 2 -a 3 と複数-aオプションが指定された時には、 Source0 が展開された後、指定ディレクトリに cd し、 Source2、Source3を展開します。 (Source0の展開は最初の一回だけです。) -b <#>:: Source0を展開した後、 指定ディレクトリ(上と同じ)にcdする前に(before)、 #番目に指定されてるソース(Source#)の展開をします。 -D:: 先に述べたように、%setupは、まず、指定ディレクトリ(上と同じ)が、 ディレクトリBUILDの下にあるかどうかをチェックして、もし存在していたら、 それを削除してから、ソースの展開などの作業を行います。 %setupを複数回呼びたい場合、 2回目に%setupを呼んだ時に最初の%setupで展開したディレクトリを削除されては困ります。 この-Dオプションは、このような削除を行わないようにします。(あまり使いません) -T:: ソースの展開を行いません。先に述べたように、 オプション指定を -a 2 や -b 2 とすると、 Source0とSource2で指定したものが展開されます。 Source2だけを展開したいときには、このオプションを使って、 {{{ #!sh %setup -T -a 2 }}} とします。また、 {{{ #!sh %setup -T -c hoge }}} とすると、パッケージの展開は行わず、ディレクトリhogeを作って、 そこにcdします。 -q:: ソースの展開のとき、展開中の情報を表示しません。 たとえば tar での展開の時に、-q 無しだと tar xvvf、-q 有りだと tar xf のように変わります。 次のように tar.gz ではないファイルが Source0 となる場合があります。 {{{ #!sh Source0: hoge-%{version}.lzh }}} tar.gz ではないので、%setup では展開できません。 このような場合には、まず %setup の -Tオプション を利用して作業ディレクトリに移動します。 %setup のあとには、bash スクリプトを書いて作業を行うことができるので、 通常のコマンドで Source0 のファイルを展開します。 {{{ #!sh %setup -T hoge-%{version} lha x %{SOURCE0} }}} 次のように tar.gz などでは無いファイルが Source2 としてあるということがあります。 {{{ #!sh Source0: hoge-%{version}.tar.gz Source1: hoge-additional-%{version}.tar.gz Source2: how-to-use-hoge.txt }}} こういった場合には、Source0 と Source1 を %setup で展開したあとで、installコマンドなどで、Source2 に対応するマクロ %{SOURCE2} を処理します。 %setup で展開するのと同じ処理をしたければ、 {{{ #!sh %setup -q -a 1 %{__install} -m 644 %{SOURCE2} . }}} のようにします。 %setup で Source0 を展開してできたディレクトリ BUILD/hoge-%version/ に移動しているので、installコマンド で . (カレントディレクトリ1) を指定すると . は BUILD/hoge-%version/ となっているので、BUILD/hoge-%version/に Source2 が install されます。 他のファイルと同じように BUILD/hoge-%version/ にあるので %doc として指定するのもそのままできます。 {{{ #!sh %files %doc how-to-use-hoge.txt }}} %{SOURCE2} といったマクロは %doc のところでは使えないので、%doc %{SOURCE2} とすることはできません。 lha や unzip など、特別なコマンドが必要になる場合は、 !BuildRequires(prep): で指定します。