RAD (Remote Administration Daemon) を REST API 経由で使ってみた ([2015-11-09-1]) ので
次はスクリプトから REST API を叩くということで、Ruby でざっと書いてみた
[ Read More... ]
2015-11 / 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
https://fedoraproject.org/wiki/Upgrading_Fedora_using_package_manager
の 'Fedora 22 -> Fedora 23'
# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-23-$(uname -i) # dnf upgrade # dnf clean all # dnf --releasever=23 --setopt=deltarpm=false distro-sync
に従ってアップグレード。
pkgbuild はパッケージに含まれるファイルを調べて、
依存するものを見つけてくれるが問題がある。
パッケージに含まれるファイルに '#!/usr/bin/env perl' などとあると、
perl を含むパッケージを
dependency discovered: depend fmri=pkg://solaris/runtime/[email protected],5.11-0.175.3.0.0.30.0 fmri=pkg://solaris/runtime/[email protected],5.11-0.175.3.0.0.30.0 type=require-any
のように見つけて 依存関係を追加する。
この時生成される'~/packages/PKGMAPS/manifests/${IPS_PACKAGE_NAME}.manifest' で、
上記の依存関係部分の書き方がおかしく、publish に失敗する(1.3.105固有の問題?)。
ふと、RPM は依存関係を調べることをやめさせられるし、
pkgbuild でもできるんじゃないかと思って grep かけてたら以下が見つかった。
$ ag %_use_internal_dependency_generator /usr/lib/pkgbuild-1.3.105 /usr/lib/pkgbuild-1.3.105/macros 125:%_use_internal_dependency_generator 1 /usr/lib/pkgbuild-1.3.105/pkgbuild.pl 2057: if ($package->eval ('%_use_internal_dependency_generator') eq "1") {
とりあえず、'%_use_internal_dependency_generator' を '1' 以外にすればよさそう。
もう少し grep していたら
$ ag _read_macros /usr/lib/pkgbuild-1.3.105 /usr/lib/pkgbuild-1.3.105/rpm_spec.pm 132: _read_macros ('/usr/lib/pkgbuild-1.3.105/macros'); 134: _read_macros ("${_homedir}/.pkgbuildmacros"); 215: # fill with values read from the macros file in _read_macros() 251:sub _read_macros ($) {
というのが見つかったので、"${_homedir}/.pkgbuildmacros" に書けばよさそう。
man pkgbuild を見ると
~/.pkgbuildmacros user defined macros. The format of this file is on definition per line in the following format: %macro_name value
とあったので間違いなさそう。
~/.pkgbuildmacros に
%_use_internal_dependency_generator 0
と書いてビルドしたところ、internal_dependency_generator が動作せず、
問題なくビルドが終了した。
ちなみに、依存関係の生成は以下のように ips-dependency-generator というコマンドを使っている。
my @autodeps = `/usr/lib/pkgbuild-1.3.105/ips-dependency-generator -R '$buildroot' -f $tmpfile`;