アイコンテーマ用のArchLinuxパッケージを作成しようとしているので、次のPKGBUILDファイルを使用しました。
pkgname=masalla
pkgver=1.1
pkgrel=1
pkgdesc="A flat design icon theme by Hayder Majid"
Arch=('any')
url="https://github.com/masalla-art/masalla-icon-theme"
license=('GPL3')
makedepends=('git')
conflicts=('masalla-icon-theme-git' 'masalla-icon-theme' 'masalla')
source=("${url}/releases/download/${pkgver}/${pkgname}_${pkgver}.tar.xz")
md5sums=('8c11f0fd04abc6c7f9086f7275d939be')
package() {
cd $srcdir
install -d -m 755 ${pkgdir}/usr/share/icons
cp -r ${srcdir}/${pkgname}_${pkgver}/masalla ${pkgdir}/usr/share/icons
cp -r ${srcdir}/${pkgname}_${pkgver}/masalla-dark ${pkgdir}/usr/share/icons
}
コンパイルプロセスは正常に機能しますが、インストールすると、次のメッセージが表示されます。
(1/2) Updating icon theme caches...
gtk-update-icon-cache: The generated cache was invalid.
error: command failed to execute correctly
(2/2) Arming ConditionNeedsUpdate...
だから、PKGBUILD
ファイルで見逃したこと、そしてこのエラーを修正するために何を変更する必要があるか
これはエラーメッセージではなく、 パックマンのフック のいずれかです。
これはsystemdのアップデートで導入され、基本的に ここではLennart :によって説明されています。
新しい条件ConditionNeedsUpdate =が追加されました。このメカニズムを使用すると、/ usrが/ etcまたは/ varよりも新しいかどうかに応じて、サービスの実行を条件付きにすることができます。アップグレード時にブートプロセスに追加する必要のあるさまざまなサービスは、これを利用して通常のブートでのブートアップを遅らせませんが、最後のブート以降に/ usrが更新されている場合は必要に応じて実行します。これは、/ usrのmtimeタイムスタンプに基づいて実装されます。OSが更新されている場合、パッケージングソフトウェアはディレクトリにアクセスする必要があるため、すべてのインスタンスに/ etcと/ varのアップグレードが必要になる可能性があることを通知します。
本質的に、フックは、/usr
が更新された場合に起動時に実行する必要があるサービスが実行されることを保証します。詳細については、man 5 systemd.unit
をご覧ください。