【问题标题】:PKGBUILD with make allPKGBUILD 与 make all
【发布时间】:2016-05-30 09:34:37
【问题描述】:

我现在正在尝试为 AUR 编写一个 PKGBUILD,用于一个包含多个子应用程序的 github 项目。
所以基本上这个项目的 CMake 文件只是运行 make && make 安装子应用程序。
这些是我的构建和打包步骤:

build() {
  cd "$srcdir/$_gitname"
  [[ -d build ]] && rm -r build
  mkdir build && cd build
  cmake -DCMAKE_INSTALL_PREFIX=/opt/od ..
}

package() {
  cd "${_gitname}/build"
  sudo make all
}

我的问题是现在一切正常,除了:

  • makepkg -i 在构建期间从不要求 sudo 权限(因此我必须在 make all 前面添加 sudo)
  • 在要求安装时,makepkg 无法识别软件包的大小。因此,在运行 packman -R packagename 时该包也不会卸载

我无法更改 CMake 文件,因为该项目不是我的,并且所有不同的子应用程序属于一起,如果我尝试 make && make 分别安装它们,我会得到一堆错误,它们相互依赖。

【问题讨论】:

    标签: cmake makefile archlinux pkgbuild


    【解决方案1】:

    包功能无法安装到根层次结构中。相反,makepkg 旨在安装到 fakeroot 下的 pkgdir 中,其中 pkgdir 复制了实际的根目录结构。见ArchWiki/Creating Packages

    您可以通过将 DESTDIR="$pkgdir/" 添加到包函数中的 make 选项来完成此操作。

    当对创建的包调用 pacman 时,它会将文件复制到真正的根层次结构中。

    【讨论】:

      【解决方案2】:

      举例

      package()
      {
          cd "$pkgname"
          DESTDIR="$pkgdir" cmake --install out 
      } 
      

      这会将东西安装到$pkgdir,然后打包到zst文件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-08
        • 2016-01-31
        相关资源
        最近更新 更多