您尚未登录。

#1 2014-11-11 14:36:05

renyuneyun
会员
所在地: 地球
注册时间: 2011-09-30
帖子: 132
个人网站

[已解決]PKGBUILD 中 build 和 package 函數之疑惑

看 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)


知識很重要,而相當的運用能力更重要。

离线

#2 2014-11-11 16:36:19

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,964
个人网站

Re: [已解決]PKGBUILD 中 build 和 package 函數之疑惑

不要在 build 里执行安装步骤,否则权限会不对。package 执行时会在 fakeroot 环境的。
你自己 cd 过去就好了。没有看到自动 cd 到 $pkgdir 的说明,应该是在 $srcdir,然后你要 cd 到你的源码解压出来的地方。

离线

#3 2014-11-11 17:13:42

renyuneyun
会员
所在地: 地球
注册时间: 2011-09-30
帖子: 132
个人网站

Re: [已解決]PKGBUILD 中 build 和 package 函數之疑惑

百合仙子 说:

不要在 build 里执行安装步骤,否则权限会不对。package 执行时会在 fakeroot 环境的。
你自己 cd 过去就好了。没有看到自动 cd 到 $pkgdir 的说明,应该是在 $srcdir,然后你要 cd 到你的源码解压出来的地方。

打印了一下路徑,發現確實沒有 cd 到 $pkgdir,而是到了 $srcdir……

剛剛又看了下 wiki,看來上次理解錯了……

現在解決了。


知識很重要,而相當的運用能力更重要。

离线

#4 2014-11-11 22:36:28

danielhugo
偶爸刚弄死他
注册时间: 2012-07-31
帖子: 269
个人网站

Re: [已解決]PKGBUILD 中 build 和 package 函數之疑惑

这个是我用来测试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

离线

页脚