看 wiki 上說:build 函數用來構建,執行時自動 cd $srcdir;package 用來打包,執行時自動 cd $pkgdir ;推薦 package 的最後一行寫 make DESTDIR="$pkgdir/" install。
在實際操作時候發現,如果在 build 中執行諸如 make 等操作,把 make DESTDIR="$pkgdir/" install 放在 package 中,那麼在 package 時候會報告沒有 make 規則。
這個原因一目瞭然,因爲已經到了 $pkgdir。
如果把 make DESTDIR="$pkgdir/" install 放在 build 中,那麼會報告“無法創建目錄(pkg),權限不夠”。
這個原因很奇妙:在 build 那步的時候發現 pkg 目錄已經自動創建,並且權限被設置爲 000。
所以現在很好奇,究竟應該把編譯這一步放在哪?……
放在 build 中手動更改權限?還是放在 package 中手動 cd?或是其他什麼?
=== 結 ===
理解錯 wiki,實際應爲:兩個步驟均 cd 到 $srcdir。
最近编辑记录 renyuneyun (2014-11-11 17:16:16)
知識很重要,而相當的運用能力更重要。
离线
不要在 build 里执行安装步骤,否则权限会不对。package 执行时会在 fakeroot 环境的。
你自己 cd 过去就好了。没有看到自动 cd 到 $pkgdir 的说明,应该是在 $srcdir,然后你要 cd 到你的源码解压出来的地方。
离线
不要在 build 里执行安装步骤,否则权限会不对。package 执行时会在 fakeroot 环境的。
你自己 cd 过去就好了。没有看到自动 cd 到 $pkgdir 的说明,应该是在 $srcdir,然后你要 cd 到你的源码解压出来的地方。
打印了一下路徑,發現確實沒有 cd 到 $pkgdir,而是到了 $srcdir……
剛剛又看了下 wiki,看來上次理解錯了……
現在解決了。
知識很重要,而相當的運用能力更重要。
离线
这个是我用来测试OpenSUSE Build Service的自动构建系统的,不过我觉得也可以用来测试本地打包环境:
pkgname=testpkg
pkgver=1
pkgrel=1
pkgdesc=""
arch=('any')
url=""
license=('GPL')
build() {
echo `whoami`
echo `pwd`
}
package() {
echo `whoami`
echo `pwd`
}
# vim:set ts=2 sw=2 et:
本人的 Arch Linux 软件仓库:http://git.io/-1
本人的广告过滤及代·理规则订阅页面:http://git.io/f0x
离线