1

いくつかのサブアプリケーションで構成される github プロジェクト用に、現在 AUR 用の PKGBUILD を作成しようとしています。
したがって、基本的にこのプロジェクトの CMake ファイルは make を実行して make && make install サブアプリケーションを作成するだけです。
これらは私のビルドとパッケージの手順です:

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 install を個別に実行しようとすると、相互に依存しているというエラーがたくさん表示されます。

4

2 に答える 2

0

パッケージ機能はルート階層にインストールできません。代わりに、makepkg は、fakeroot の下の pkgdir にインストールすることを目的としています。ここで、pkgdir は実際のルート ディレクトリ構造を複製します。ArchWiki/パッケージの作成を参照してください。

DESTDIR="$pkgdir/"これは、パッケージ関数の make オプションに追加することで実行できます。

作成されたパッケージで pacman が呼び出されると、ファイルが実際のルート階層にコピーされます。

于 2016-02-19T02:47:14.770 に答える