21 附录B、安装PMDK
持久内存开发工具包(PMDK)以包和源代码格式在受支持的操作系统上可用。PMDK的一些特性需要额外的包。我们描述Linux和Windows的用法说明。
21.1 PMDK先决条件
在本附录中,我们将描述如何使用操作系统包存储库中提供的包安装PMDK库。要启用所有PMDK功能,如高级可靠性、可访问性和可服务性(RAS),PMDK需要libndctl和libdaxctl。包依赖项自动安装这些要求。如果您是使用源代码构建和安装的,那么应该首先使用附录C中提供的说明安装NDCTL。
21.2 使用Linux分发包存储库安装PMDK
PMDK是不同库的集合;每个库提供不同的功能。这为开发人员提供了更大的灵活性,因为只需要安装所需的运行时或头文件,而不需要安装不必要的库。
21.2.1 包命名约定
库在运行时、开发头文件(∗-devel)和调试(∗-debug)版本中可用。表B-1显示了Fedora的运行时(libpmem)、调试(libpmem debug)以及开发和头文件(libpmem devel)。Linux发行版之间的包名可能不同。我们将在本节后面提供一些常见Linux发行版的说明。
21.2.2 在包存储库中搜索包
表B-2显示了截至PMDK v1.6的可用库列表。有关最新列表,请参见https://pmem.io/pmdk。
操作系统的默认包管理器实用程序将允许您使用正则表达式查询包存储库以标识要安装的包。表B-3显示了如何使用命令行实用程序搜索多个发行版的包存储库。如果您喜欢使用GUI,可以使用您喜爱的桌面实用程序来执行此处描述的相同搜索和安装操作。
此外,您还可以使用在线包搜索工具,如网址:https://pkgs.org允许您跨多个发行版搜索包。图B-1显示了搜索“libpmem”时许多发行版的结果。
21.2.3 从包存储库安装PMDK库
下面是一些流行的Linux发行版的说明。跳到操作系统部分。如果您的操作系统未在此列出,则它可能与此处列出的软件包系列共享,因此您可以使用相同的说明。如果您的操作系统不符合这两个条件,请参阅https://docs.pmem.io用于安装说明和PMDK项目主页(https://github.com/pmem/pmdk)查看最新的说明。
注意:操作系统中可用的PMDK库版本可能与最新的PMDK版本不匹配。如果需要比操作系统提供的版本更新的版本,请考虑从源代码编译PMDK。我们在这本书中没有描述从源代码编译和安装PMDK。有关说明,请参见https://docs.pmem.io/getting-startedguide/installing-pmdk/compiling-pmdk-from-source和https://github.com/pmem/pmdk.
21.2.4 Fedora 22及以后版本安装PMDK
要安装各个单独的库,可以执行:
$ sudo dnf install <library>
例如,只安装libpmem 运行时库,使用:
$ sudo dnf install libpmem
安装所有包,使用:
运行时:
$ sudo dnf install libpmem librpmem libpmemblk libpmemlog/
libpmemobj libpmempool pmempool
开发库:
$ sudo dnf install libpmem-devel librpmem-devel \
libpmemblk-devel libpmemlog-devel libpmemobj-devel \
libpmemobj++-devel libpmempool-devel
调试库:
$ sudo dnf install libpmem-debug librpmem-debug \
libpmemblk-debug libpmemlog-debug libpmemobj-debug \
libpmempool-debug
21.2.5 在RHEL/CentOS 7.5及以上安装PMDK
要安装各个单独的库,可以执行:
$ sudo yum install <library>
例如,只安装libpmem 运行时库,使用:
$ sudo yum install libpmem
安装所有包,使用:
运行时:
$ sudo yum install libpmem librpmem libpmemblk libpmemlog \
libpmemobj libpmempool pmempool
开发库:
$ sudo yum install libpmem-devel librpmem-devel \
libpmemblk-devel libpmemlog-devel libpmemobj-devel \
libpmemobj++-devel libpmempool-devel
调试库:
$ sudo yum install libpmem-debug librpmem-debug \
libpmemblk-debug libpmemlog-debug libpmemobj-debug \
libpmempool-debug
21.2.6 在SLES 12/OpenSUSE及以上安装PMDK
要安装各个单独的库,可以执行:
$ sudo zypper install <library>
例如,只安装libpmem 运行时库,使用:
$ sudo zypper install libpmem
安装所有包,使用:
运行时:
$ sudo zypper install libpmem librpmem libpmemblk libpmemlog \
libpmemobj libpmempool pmempool
开发库:
$ sudo zypper install libpmem-devel librpmem-devel \
libpmemblk-devel libpmemlog-devel libpmemobj-devel \
libpmemobj++-devel libpmempool-devel
调试库:
$ sudo zypper install libpmem-debug librpmem-debug \
libpmemblk-debug libpmemlog-debug libpmemobj-debug \
libpmempool-debug
21.2.7 在Ubuntu 18.04及以上安装PMDK
要安装各个单独的库,可以执行:
$ sudo zypper install <library>
例如,只安装libpmem 运行时库,使用:
$ sudo zypper install libpmem
安装所有库,使用:
运行时:
$ sudo apt-get install libpmem1 librpmem1 libpmemblk1 \
libpmemlog1 libpmemobj1 libpmempool1
开发库:
$ sudo apt-get install libpmem-dev librpmem-dev \
libpmemblk-dev libpmemlog-dev libpmemobj-dev \
libpmempool-dev libpmempool-dev
调试库:
$ sudo apt-get install libpmem1-debug \
librpmem1-debug libpmemblk1-debug \
libpmemlog1-debug libpmemobj1-debug libpmempool1-debug
21.3 在微软Windows上安装PMDK
在Windows上安装PMDK的推荐和最简单的方法是使用Microsoft vcpkg。Vcpkg是一个为库管理创建的开源工具和生态系统。要从可用于不同打包或开发解决方案的源代码构建PMDK,请参阅https://github.com/pmem/pmdk或者https://docs.pmem.io。
要安装最新的PMDK版本并将其链接到您的Visual Studio解决方案,首先需要按照vcpkg GitHub页上的说明在计算机上克隆并设置vcpkg(https://github.com/Microsoft/vcpkg). 简而言之:
> git clone https://github.com/Microsoft/vcpkg
> cd vcpkg > .\bootstrap-vcpkg.bat
> .\vcpkg integrate install
> .\vcpkg install pmdk:x64-windows
注意,随着PMDK的构建和安装,最后一个命令可能需要一段时间。
在成功完成上述所有步骤之后,这些库就可以在Visual Studio中使用,而不需要额外的配置。只需使用现有项目打开Visual Studio或创建一个新项目(请记住使用x64平台),然后像往常一样将头文件包含到项目中。