如何在 NetBSD 上使用 pkgsrc 安装和加载 libspatialite 和 spatiality-tools



我正在尝试使用库libspatialite在NetBSD平台上扩展sqlite。我已经迈出了第一步,在 pkgsrc (libspatialite-4.1.1) 中为 libspatialite 创建一个包。该软件包似乎可以正常工作;pkg_info说它已安装,我已经验证了 PLIST(在下面的代码块中)中的文件已安装在/usr/pkg/中。但是,当我尝试安装我为空间工具构建的软件包时,配置显示未安装 libspatialite。我也不知道如何使用 load_extenstion(X,Y) 在 sqlite3 中加载库;文档中提到的库文件是什么?

pkgsrc/databases/libsqlite/PLIST:

@comment $NetBSD$
include/spatialite.h
include/spatialite/debug.h
include/spatialite/gaiaaux.h
include/spatialite/gaiaexif.h
include/spatialite/gaiageo.h
include/spatialite/geopackage.h
include/spatialite/gg_advanced.h
include/spatialite/gg_const.h
include/spatialite/gg_core.h
include/spatialite/gg_dxf.h
include/spatialite/gg_dynamic.h
include/spatialite/gg_formats.h
include/spatialite/gg_mbr.h
include/spatialite/gg_structs.h
include/spatialite/gg_wfs.h
include/spatialite/gg_xml.h
include/spatialite/spatialite.h
include/spatialite/sqlite.h
lib/libspatialite.la
lib/pkgconfig/spatialite.pc

libspatialite 包中有 buildlink3.mk 文件吗?

如果没有:

为了避免针对隐式依赖项构建软件包,pkgsrc 仅使已显式列出的库对构建软件包可见。

这停止了软件包选取恰好安装的可选依赖项的问题,然后构建使用该库但未在包元数据中列出的二进制包。生成的二进制包将在该系统上运行良好...直到删除可选依赖项,并且在没有该隐藏依赖项的任何其他系统上都将失败。

无论如何。。。buildlink3.mk 文件在 pkgsrc 中使用,以使必要的文件在构建期间可见。libspatialite buildlink3.mk 可能如下所示(将 1.0 调整为当前 lib 版本)

# $NetBSD$
BUILDLINK_TREE+=        libspatialite
.if !defined(LIBSPATIALITE_BUILDLINK3_MK)
LIBSPATIALITE_BUILDLINK3_MK:=
BUILDLINK_API_DEPENDS.libspatialite+=libspatialite>=1.0
BUILDLINK_PKGSRCDIR.libspatialite?=     ../../devel/libspatialite
BUILDLINK_LIBDIRS.libspatialite+=       lib/spatialite
BUILDLINK_RPATHDIRS.libspatialite+=     lib/spatialite
BUILDLINK_INCDIRS.libspatialite+=       include/spatialite
.endif # LIBSPATIALITE_BUILDLINK3_MK
BUILDLINK_TREE+=        -libspatialite

然后在依赖包中添加类似以下内容:

.include "../../devel/libspatialite/buildlink3.mk"

最新更新