Skip to the content.

上一页      主目录      下一页

13. Programming


基本LFS系统可以用作开发平台,但是基本系统只包括对C、C++、Perl和Python的语言支持。本章提供了构建许多流行编程环境的说明,以极大地扩展系统的开发能力。

13.1 Autoconf2.13


简介Autoconf2.13

Autoconf2.13是Autoconf的旧版本。这个旧版本接受在最新版本中无效的开关。现在firefox已经开始使用python2进行配置,即使配置文件没有更改,也需要这个旧版本。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

额外下载

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/autoconf213

安装Autoconf2.13

运行以下命令安装Autoconf:

patch -Np1 -i ../autoconf-2.13-consolidated_fixes-1.patch &&
mv -v autoconf.texi autoconf213.texi                      &&
rm -v autoconf.info                                       &&
./configure --prefix=/usr --program-suffix=2.13           &&
make

以测试安装问题,执行 make check (所有253个测试都应该通过).

现在,作为root用户:

make install                                      &&
install -v -m644 autoconf213.info /usr/share/info &&
install-info --info-dir=/usr/share/info autoconf213.info

命令解释

mv -v autoconf.texi autoconf213.texi: 确保此包添加的info文件不会覆盖最新版本。

rm -v autoconf.info: 确保info文件将由当前版本的texinfo创建。

–program-suffix=2.13: 确保安装的程序在其名称中添加了版本,这样只有专门查找这些旧版本的脚本才能找到它们。

install -v -m644 …: 这个补丁从Makefile中删除了install-info,因为这会安装(如果有必要的话会重新创建)一个旧版本的standards.info,所以现在autoconf213.info必须手动安装。

内容

安装程序: autoconf2.13, autoheader2.13, autoreconf2.13, autoscan2.13, autoupdate2.13, 和 ifnames2.13

安装库: None

安装目录: /usr/share/autoconf-2.13

简要描述

autoconf2.13 生成shell脚本,自动配置软件源代码包以适应多种类unix系统。

autoheader2.13 是一个创建C #define语句模板文件的工具,以供configure使用。

autoreconf2.13 当对autoconfautomake模板文件进行更改时,它会自动以正确的顺序运行autoconf2.13, autoheader2.13, aclocal, automake, gettextizelibtoolize

autoscan2.13 可以用作创建configure.in文件的初步步骤。

autoupdate2.13 修改一个configure.in文件,该文件仍然以旧名调用autoconf宏,以使用当前的宏名。

ifnames2.13 打印包在C预处理器条件中使用的标识符(如果一个包已经被设置为具有一定的可移植性,这个程序可以帮助确定配置需要检查什么。它还可以填补由autoscan生成的configure.in文件中的空白。

13.2 Cbindgen-0.24.3


简介Cbindgen

Cbindgen可以用来为Rust代码生成C绑定。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

cbindgen依赖

必要

rustc-1.67.1

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/cbindgen

安装cbindgen

注意

与大多数Rust包一样,这需要一个网络连接来检查所需的货物箱的当前版本,并在它们尚未存在时下载它们。

运行以下命令安装cbindgen:

cargo build --release

要测试结果,执行: cargo test. 已知最终套件中的三个测试会失败。

现在,作为root用户:

install -Dm755 target/release/cbindgen /usr/bin/

内容

安装程序: cbindgen

安装库: none

安装目录: none

简要描述

cbindgen 为Rust代码生成C绑定。

13.3 Clisp-2.49


简介Clisp

GNU Clisp是一个通用的Lisp实现,它包括一个解释器、编译器、调试器和许多扩展。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

额外下载

Clisp依赖

推荐

libsigsegv-2.14

可选

libnsl-2.0.0libffcall

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/clisp

安装Clisp

注意

这个包不支持并行构建。

如果您在32位系统上构建,请解决GCC中由最新版本的binutils引起的错误:

case $(uname -m) in
    i?86) export CFLAGS="${CFLAGS:--O2 -g} -falign-functions=4" ;;
esac

删除两个由于未知原因而失败的测试:

sed -i -e '/socket/d' -e '/"streams"/d' tests/tests.lisp

运行以下命令安装Clisp:

如果你正在针对libffcall构建clisp,应用补丁来修复当前readline的构建失败:

patch -Np1 -i ../clisp-2.49-readline7_fixes-1.patch

运行以下命令安装Clisp:

mkdir build &&
cd    build &&

../configure --srcdir=../                       \
             --prefix=/usr                      \
             --docdir=/usr/share/doc/clisp-2.49 \
             --with-libsigsegv-prefix=/usr &&

ulimit -s 16384 &&
make -j1

要测试结果,执行: make check.

现在,作为root用户:

make install

命令解释

ulimit -s 16384: 这增加了最大堆栈大小,如configure所建议的那样。

–docdir=/usr/share/doc/clisp-2.49: 这确保HTML文档将进入一个版本控制的目录,而不是直接进入/usr/share/html/

–with-libsigsegv-prefix=/usr: 使用此命令告诉configure您已经在/usr中安装了libsigsegv,否则将找不到它。

--with-libffcall-prefix=/usr: 使用此命令告诉configure您已经在/usr中安装了可选的libffcall,否则将像libsigsegv一样找不到它。

内容

安装程序: clisp, clisp-link

安装库: /usr/lib/clisp-2.49/base/ 中的各种静态库

安装目录: /usr/lib/clisp-2.49 /usr/share/doc/clisp-2.49 /usr/share/emacs/site-lisp;

简要描述

clisp 是一个ANSI通用Lisp编译器、解释器和调试器。

clisp-link 用于将外部模块链接到clisp。

13.4 CMake-3.25.2


简介CMake

CMake包包含一个用于生成makefile的现代工具集。它是自动生成的configure脚本的继承者,旨在独立于平台和编译器。CMake的一个重要用户是KDE,从版本4开始。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

CMake依赖

推荐

cURL-7.88.1, libarchive-3.6.2, libuv-1.44.2, 和 nghttp2-1.52.0

可选

GCC-12.2.0 (用于gfortran), git-2.39.2 (测试期间使用), Mercurial-6.3.2 (测试期间使用), Qt-5.15.8 (对于基于QT的GUI), sphinx-6.1.3 (用于构建文档), Subversion-1.14.2 (用于测试), 和 rhash

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/cmake

安装CMake

运行以下命令安装CMake:

sed -i '/"lib64"/s/64//' Modules/GNUInstallDirs.cmake &&

./bootstrap --prefix=/usr        \
            --system-libs        \
            --mandir=/share/man  \
            --no-system-jsoncpp  \
            --no-system-librhash \
            --docdir=/share/doc/cmake-3.25.2 &&
make

要测试结果,执行: LC_ALL=en_US.UTF-8 bin/ctest -j<N> -O cmake-3.25.2-test.log, 式中<N>为1到系统核数之间的整数。设置LC_ALL是为了防止在一些语言环境变量被设置为非英语语言环境时出现一些测试失败。一个名为BundleUtilities的测试以失败而闻名。

如果你想用给定的”problem1-test”调查问题,使用bin/ctest -R “problem1-test”,省略它,使用bin/ctest -E “problem1-test”。这些选项可以一起使用: bin/ctest -R “problem1-test” -E “problem2-test”. 选项-N可用于显示所有可用的测试,您可以运行bin/ctest,以空格分隔测试集的名称或数字作为选项。选项--help可用于显示所有选项。

现在,作为root用户:

make install

命令解释

sed … Modules/GNUInstallDirs.cmake: 此命令禁止使用cmake的应用程序尝试安装/usr/lib64/中的文件。

--system-libs: 这个开关强制构建系统链接到安装在系统上的Zlib、Bzip2、cURL、nghttp2、Expat和libarchive。

--no-system-jsoncpp: 此开关将从系统库列表中删除JSON-C++库。而是使用该库的捆绑版本。

--no-system-librhash: 该开关从所使用的系统库列表中删除librhash库。而是使用该库的捆绑版本。

--no-system-{curl,libarchive,libuv,nghttp2}: 如果没有安装一个推荐的依赖项,请使用列表中bootstrap的相应选项。将使用该依赖项的捆绑版本。

--qt-gui: 此开关允许为CMake构建基于Qt的GUI。

--parallel=: 此开关允许一次对多个作业执行CMake引导。

内容

安装程序: ccmake, cmake, cmake-gui (可选), cpack, 和 ctest

安装库: None

安装目录: /usr/share/cmake-3.25 和 /usr/share/doc/cmake-3.25.2

简要描述

ccmake 是一个基于curses的交互式前端cmake

cmake 是makefile生成器。

cmake-gui (可选)是cmake的基于Qt的前端。

cpack 是CMake打包程序。

ctest 是用于cmake生成的构建树的测试实用程序。

13.5 Doxygen-1.9.6


简介Doxygen

Doxygen包包含了C++、C、Java、Objective-C、Corba IDL以及一定程度上的PHP、C#和D语言的文档系统。它对于从一组文档源文件生成HTML文档和/或离线参考手册非常有用。它还支持以RTF、PostScript、超链接PDF、压缩HTML和Unix手册页的形式生成输出。文档直接从源代码中提取,这使得文档与源代码保持一致变得更加容易。

您还可以配置Doxygen以从未归档的源文件中提取代码结构。这对于在大型源代码发行版中快速找到方法非常有用。与Graphviz一起使用,您还可以通过包括依赖关系图、继承图和协作图的方式可视化各种元素之间的关系,这些都是自动生成的。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Doxygen依赖

必要

CMake-3.25.2git-2.39.2

可选

Graphviz-7.1.0, ghostscript-10.00.0, libxml2-2.10.3 (测试所需), LLVM-15.0.7 (有clang), Python-2.7.18, Qt-5.15.8 (用于doxywizard), texlive-20220321 (或 install-tl-unx), xapian-1.4.22 (用于doxyindexer), 和 javacc

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/doxygen

安装Doxygen

运行以下命令安装Doxygen:

mkdir -v build &&
cd       build &&

cmake -G "Unix Makefiles"         \
      -DCMAKE_BUILD_TYPE=Release  \
      -DCMAKE_INSTALL_PREFIX=/usr \
      -Wno-dev .. &&

make

要测试结果,执行: make tests.

如果你想生成包文档,你必须安装Python, TeX Live (HTML文档)和Ghostscript (PDF文档),然后发出以下命令:

cmake -DDOC_INSTALL_DIR=share/doc/doxygen-1.9.6 -Dbuild_doc=ON .. &&

make docs

现在,作为root用户:

make install &&
install -vm644 ../doc/*.1 /usr/share/man/man1

如果您已经生成了包文档,那么手册页将自动安装,并且您不需要运行最后的install …命令。

命令解释

-Dbuild_wizard=ON: 如果安装了Qt5并且希望构建GUI前端,请使用此开关。

-Dbuild_search=ON: 如果安装了xapian并且希望构建外部搜索工具,请使用此开关 (doxysearch.cgi and doxyindexer).

-Duse_libclang=ON: 如果安装了带有clang的llvm,请使用此开关来添加对libclang解析的支持。

配置Doxygen

尽管如果希望使用扩展功能,还需要另外三个包,但Doxygen包不需要实际配置。如果您需要使用语言翻译功能,您必须安装Python-2.7.18。如果您需要公式来创建PDF文档,那么您必须安装texlive-20220321。如果您需要公式将PostScript文件转换为位图,那么您必须安装ghostscript-10.00.0

内容

安装程序: doxygen 和 optionally, doxywizard, doxyindexer 和 doxysearch.cgi

安装库: None

安装目录: /usr/share/doc/doxygen-1.9.6

简要描述

doxygen 是一个基于命令行的实用程序,用于生成模板配置文件,然后从这些模板生成文档。使用doxygen –help获取命令行参数的解释。

doxywizard 是一个GUI前端配置和运行doxygen

doxyindexer 生成一个搜索索引称为doxysearch.db从一个或多个搜索数据文件产生的doxygen。参见,例如https://javacc.github.io/javacc/

doxysearch.cgi 是一个CGI程序来搜索由doxyindexer索引的数据。

13.6 GCC-12.2.0


简介GCC

GCC包包含GNU编译器集合。本页面描述了以下语言的编译器:C、C++、Fortran、Objective C、Objective C++和Go。由于C和C++都安装在LFS中,因此本页要么用于升级C和C++,要么用于安装额外的编译器。

注意

该集合中还提供其他语言,其中包括D和ADA。D和ADA在第一次安装时需要二进制引导,因此这里不介绍它们的安装。要安装它们,您可以从二进制包安装相应的编译器后,按照以下相同的行进行操作,在--enable-languages行中添加adad

已知此包可以使用LFS 11.3平台进行构建并正常工作。

当心

如果要从12.2.0之前的任何其他版本升级GCC,则必须小心编译第三方内核模块。您应该确保内核及其所有本机模块也使用用于构建第三方模块的GCC版本进行编译。这个问题不影响本地内核(和内核模块)更新,因为下面的说明是GCC的完整重新安装。如果您安装了现有的第三方模块,请确保使用更新版本的GCC重新编译它们。与往常一样,永远不要更新在LFS期间编译Glibc时使用的内核头文件。

一些系统头文件需要修复才能与GCC一起使用。这是在安装GCC期间完成的,“fixed”头文件安装在/usr/lib/gcc/<machine triplet>/<GCC version>/include-fixed中。如果GCC是在LFS阶段构建的,那么这是无害的。但是如果你在BLFS中重新安装GCC,一些BLFS包可能会被“fixed”。如果其中一个包后来被重新安装,“fixed”头文件不会更新,这可能导致版本不匹配。如果发生这种情况,“fixed”的头文件必须通过运行(作为root)来更新:/usr/libexec/gcc/x86_64-pc-linux-gnu/12.2.0/install-tools/mkheaders。机器三元组在32位系统上可能不同。

包信息

GCC依赖

可选

GDB-13.1, Valgrind-3.20.0 (用于测试), 和 ISL (启用graphite优化)

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/gcc

安装GCC

重要

即使您只指定除C和C++以外的语言到./configure命令,安装过程将覆盖现有的GCC C和C++编译器和库。建议运行完整的测试套件。

在确信构建成功之前,不要继续执行make install命令。您可以将您的测试结果与https://gcc.gnu.org/ml/gcc-testresults/上的结果进行比较。 您可能还需要参考LFS书籍(../../../../lfs/view/11.3-systemd/chapter08/gcc.html)中第8章的GCC部分中的信息。

下面的说明有意执行一个“bootstrap”过程。启动是健壮性所必需的,强烈建议在升级编译器版本时使用。要禁用引导,请在下面的./configure选项中添加--disable-bootstrap

运行以下命令安装GCC:

case $(uname -m) in
  x86_64)
    sed -i.orig '/m64=/s/lib64/lib/' gcc/config/i386/t-linux64
  ;;
esac

mkdir build                                            &&
cd    build                                            &&

../configure                                           \
    --prefix=/usr                                      \
    --disable-multilib                                 \
    --with-system-zlib                                 \
    --enable-default-pie                               \
    --enable-default-ssp                               \
    --enable-languages=c,c++,fortran,go,objc,obj-c++ &&
make

如果您安装了额外的包,如Valgrind和GDB,测试套件的GCC部分将运行比LFS更多的测试。其中一些将报告FAIL,而其他将报告XPASS(在预期失败时通过)。从GCC -12.2.0开始,大约有60个FAIL发生在“guality”套件中,以及其他测试套件中的各种失败,其中15个已经出现在LFS的GCC测试中。如果构建了上述所有编译器,那么在超过482,000个测试中将会有大约80个意外失败。要运行测试,请执行:

ulimit -s 32768 &&
make -k check

测试时间很长,结果可能很难在日志中找到,特别是在使用make并行作业的情况下。您可以通过以下命令获得测试摘要:

../contrib/test_summary

现在,作为root用户:

make install &&

mkdir -pv /usr/share/gdb/auto-load/usr/lib              &&
mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib &&

chown -v -R root:root \
    /usr/lib/gcc/*linux-gnu/12.2.0/include{,-fixed}

一些包期望在/lib中找到C预处理器,或者可能以cc的名称引用C编译器。如果您遵循LFS指令,则不需要下面的符号链接,因为它们已经被创建了。如果你的系统上没有它们,以root用户的身份执行命令:

ln -v -sf ../usr/bin/cpp /lib          &&
ln -v -sf gcc /usr/bin/cc              &&
install -v -dm755 /usr/lib/bfd-plugins &&
ln -sfv ../../libexec/gcc/$(gcc -dumpmachine)/12.2.0/liblto_plugin.so /usr/lib/bfd-plugins/

命令解释

mkdir build; cd build: GCC文档建议在专用的构建目录中构建包。

--disable-multilib: 此参数确保为计算机的特定体系结构创建文件。

--with-system-zlib: 使用系统zlib而不是捆绑的zlib。zlib用于在LTO (Link Time Optimization)目标文件中压缩和解压缩GCC的中间语言。

--enable-default-pie: 使-fpie选项成为编译程序时的默认选项。再加上内核中启用的ASLR特性,这可以挫败一些基于已知内存布局的攻击。

--enable-default-ssp: 使-fstack-protector-strong选项成为编译程序时的默认选项。SSP是一种通过破坏参数堆栈来防止程序流改变的技术。

--enable-languages=c,c++,fortran,go,objc,obj-c++: 该命令标识要构建的语言。您可以修改此命令以删除不需要的语言。可以添加其他语言,包括ADA、D、BRIG(在启用的语言列表中添加brig)、HSAIL(异构系统架构中间语言)的二进制格式,以及JIT(在启用的语言列表中添加jit),JIT是一个库,可以链接到想要在运行时“动态”生成机器代码的解释器。它们还没有经过BLFS开发人员的测试。

ulimit -s 32768: 此命令可防止多个测试耗尽堆栈空间。

make -k check: 如果遇到任何错误,该命令将运行测试套件而不停止。

../contrib/test_summary: 该命令将生成测试套件结果的摘要。您可以将** grep -A7 Summ**附加到命令后,以生成更精简的摘要版本。您可能还希望将输出重定向到一个文件,以便稍后查看和比较。

mv -v /usr/lib/*gdb.py …: 安装阶段将gdb使用的一些文件放在/usr/lib目录下。这将在执行ldconfig时生成虚假的错误消息。该命令将文件移动到另一个位置。

chown -v -R root:root /usr/lib/gcc/*linux-gnu/…: 如果包是由非root用户构建的,那么安装的include目录(及其内容)的所有权将是不正确的。该命令将所有权更改为root用户和组。

内容

一些程序和库的名称和描述没有在这里列出,但可以在LFS section for GCC中找到,因为它们是在构建LFS期间最初安装的。

安装程序: gccgo, gfortran, go, 和 gofmt, 硬链接到架构特定的名称

安装库: libgfortran.{so,a}, libgo.{so,a}, libgobegin.a, libgolibbegin.a, libobjc.{so,a}, 以及许多其他运行时库和可执行文件

安装目录: /usr/lib/go

简要描述

gccgo 是一个基于GCC的Go语言编译器。

go 是一个管理Go源代码的工具。

gofmt 是格式化Go源代码的工具。

gfortran 是Fortran语言的基于GCC的编译器。

13.7 GC-8.2.2


简介GC

GC包包含Boehm-Demers-Weiser保守垃圾收集器,它可以用作C malloc函数或c++ new操作符的垃圾收集替代品。它允许你基本上像平常一样分配内存,而不需要显式地释放不再有用的内存。当收集器确定无法再以其他方式访问内存时,它会自动回收内存。收集器也被许多编程语言实现所使用,这些编程语言要么使用C作为中间代码,要么希望简化与C库的互操作,要么只是喜欢简单的收集器接口。或者,垃圾收集器可以用作C或C++程序的泄漏检测器,尽管这不是它的主要目标。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

可选

libatomic_ops-7.6.14

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/gc

安装GC

运行以下命令安装GC:

./configure --prefix=/usr      \
            --enable-cplusplus \
            --disable-static   \
            --docdir=/usr/share/doc/gc-8.2.2 &&
make

要测试结果,执行: make check.

现在,作为root用户:

make install &&
install -v -m644 doc/gc.man /usr/share/man/man3/gc_malloc.3

命令解释

--docdir=/usr/share/doc/gc-8.2.2: 使用此选项后,包将在有版本的目录中安装文档。

--enable-cplusplus: 此参数允许在标准C库的基础上构建和安装C++库。

--disable-static: 此开关防止安装库的静态版本。

内容

安装程序: None

安装库: libcord.so, libgc.so, libgccpp.so, 和 libgctba.so

安装目录: /usr/include/gc 和 /usr/share/doc/gc-8.2.2

简要描述

libcord.so 包含一个基于树的字符串库。

libgc.so 包含一个到保守垃圾收集器的C接口,主要用于替换C的malloc函数。

libgccpp.so 包含一个到保守垃圾收集器的C++接口。

libgctba.so 包含一个抛出错误分配的C++接口。

13.8 GDB-13.1


简介GDB

GDB, GNU项目调试器,允许您查看另一个程序在执行时“inside”发生了什么——或者另一个程序在崩溃时正在做什么。请注意,GDB在跟踪使用调试符号构建且未剥离的程序和库时最有效。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

GDB依赖

推荐运行时依赖

six-1.16.0 (Python 3模块,需要在运行时使用来自各种LFS/BLFS包的GDB脚本,并在LFS中安装Python 3)

可选

Doxygen-1.9.6, GCC-12.2.0 (Ada、gfortran和go用于测试), Guile-3.0.9, Python-2.7.18, rustc-1.67.1 (用于某些测试), Valgrind-3.20.0, 和 SystemTap (运行时,用于测试)

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/gdb

安装GDB

运行以下命令安装GDB:

mkdir build &&
cd    build &&

../configure --prefix=/usr          \
             --with-system-readline \
             --with-python=/usr/bin/python3 &&
make

可选地,使用Doxygen-1.9.6构建API文档,运行:

make -C gdb/doc doxy

要测试结果,执行:

pushd gdb/testsuite &&
make  site.exp      &&
echo  "set gdb_test_timeout 120" >> site.exp &&
runtest
popd

参见gdb/testsuite/README和TestingGDB。测试套件存在许多问题:

现在,作为root用户:

make -C gdb install

如果您已经构建了API文档,那么它现在位于gdb/doc/doxy中。你可以安装它(作为root用户):

install -d /usr/share/doc/gdb-13.1 &&
rm -rf gdb/doc/doxy/xml &&
cp -Rv gdb/doc/doxy /usr/share/doc/gdb-13.1

命令解释

--with-system-readline: 此开关强制GDB使用安装在LFS中的Readline副本。

--with-python=/usr/bin/python3: 此开关强制GDB使用Python 3。如果您已经安装了Python-2.7.18并希望使用它而不是Python 3,请删除此开关。

内容

安装程序: gcore, gdb 和 gdbserver

安装库: None

安装目录: /usr/{include,share}/gdb 和 /usr/share/doc/gdb-13.1

简要描述

gcore 生成正在运行的程序的核心转储。

gdb 是GNU调试器。

gdbserver 是GNU调试器的远程服务器(它允许在不同的机器上调试程序)。

13.9 Git-2.39.2


简介Git

Git是一个免费的开源分布式版本控制系统,用于快速高效地处理从小型到超大型项目的所有内容。每个Git克隆都是一个完整的存储库,具有完整的历史记录和完整的版本跟踪功能,不依赖于网络访问或中央服务器。分支和合并既快又容易。Git用于文件的版本控制,类似于Mercurial-6.3.2、Bazaar、Subversion-1.14.2, CVS、Perforce和Team Foundation Server等工具。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

额外下载

Git依赖

推荐

cURL-7.88.1 (需要通过http, https, ftp或ftps使用Git)

可选

GnuPG-2.4.0 (运行时,可用于签名Git提交或标签,或验证它们的签名), OpenSSH-9.2p1 (运行时,需要通过ssh使用Git), pcre2-10.42 (或已弃用的 PCRE-8.45), 在这两种情况下,配置--enable-jitSubversion-1.14.2 与Perl绑定 (运行时, 用于 git svn), Tk-8.6.13 (gitk是一个简单的Git存储库查看器,它在运行时使用Tk), Valgrind-3.20.0, Authen::SASLMIME::Base64 (两个运行时,用于 git send-email), 和 IO-Socket-SSL-2.081 (运行时,为git send-email连接到SMTP服务器与SSL加密)

可选 (创建手册页、HTML文档和其他文档)

xmlto-0.0.28asciidoc-10.2.0 , 还有 dblatex (下载PDF版本的使用手册), 和 docbook2x 以创建信息页面

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/git

安装Git

运行以下命令安装Git:

./configure --prefix=/usr \
            --with-gitconfig=/etc/gitconfig \
            --with-python=python3 &&
make

您可以构建手册页和/或html文档,或者使用下载的文档。如果您选择构建它们,请使用下面两个指令。

如果你已经安装了asciidoc-10.2.0,你可以创建html版本的手册页和其他文档:

make html

如果你已经安装了asciidoc-10.2.0xmlto-0.0.28,你可以创建手册页:

make man

测试套件可以在并行模式下运行。要运行测试套件,执行命令:make test。如果以普通用户身份运行,则在最终摘要中应该报告0个测试失败。

现在,作为root用户:

make perllibdir=/usr/lib/perl5/5.36/site_perl install

如果您创建了手册页和/或html文档

root用户安装手册页:

make install-man

root用户安装html文档:

make htmldir=/usr/share/doc/git-2.39.2 install-html

如果您下载了手册页和/或html文档

如果你下载了手册页,以root用户解压缩它们:

tar -xf ../git-manpages-2.39.2.tar.xz \
    -C /usr/share/man --no-same-owner --no-overwrite-dir

如果你下载了html文档,以root用户解压缩它们:

mkdir -vp   /usr/share/doc/git-2.39.2 &&
tar   -xf   ../git-htmldocs-2.39.2.tar.xz \
      -C    /usr/share/doc/git-2.39.2 --no-same-owner --no-overwrite-dir &&

find        /usr/share/doc/git-2.39.2 -type d -exec chmod 755 {} \; &&
find        /usr/share/doc/git-2.39.2 -type f -exec chmod 644 {} \;

重新组织html-docs中的文本和html(两种方法)

对于这两种方法,html-docs都包含大量纯文本文件。以root用户重新组织文件:

mkdir -vp /usr/share/doc/git-2.39.2/man-pages/{html,text}         &&
mv        /usr/share/doc/git-2.39.2/{git*.txt,man-pages/text}     &&
mv        /usr/share/doc/git-2.39.2/{git*.,index.,man-pages/}html &&

mkdir -vp /usr/share/doc/git-2.39.2/technical/{html,text}         &&
mv        /usr/share/doc/git-2.39.2/technical/{*.txt,text}        &&
mv        /usr/share/doc/git-2.39.2/technical/{*.,}html           &&

mkdir -vp /usr/share/doc/git-2.39.2/howto/{html,text}             &&
mv        /usr/share/doc/git-2.39.2/howto/{*.txt,text}            &&
mv        /usr/share/doc/git-2.39.2/howto/{*.,}html               &&

sed -i '/^<a href=/s|howto/|&html/|' /usr/share/doc/git-2.39.2/howto-index.html &&
sed -i '/^\* link:/s|howto/|&html/|' /usr/share/doc/git-2.39.2/howto-index.txt

命令解释

--with-gitconfig=/etc/gitconfig: 这将/etc/gitconfig设置为存储默认的、系统范围的Git设置的文件。

--with-python=python3: 使用此开关来使用Python 3,而不是EOL’ed Python 2。Python用于连接Perforce存储库的git p4接口,也用于一些测试。

--with-libpcre2: 如果安装了PCRE2,并且在构建时启用了非默认JIT,则使用此开关。

--with-libpcre1: 作为PCRE2的替代方案,如果安装了已弃用的PCRE,并且在构建时启用了非默认JIT,则使用此开关。

tar -xf ../git-manpages-2.39.2.tar.gz -C /usr/share/man –no-same-owner: 这将解压git-manpages-2.39.2.tar.gz-C选项使tar在开始解压缩文档之前将目录更改为/usr/share/man--no-same-owner选项阻止tar保存文件的用户和组详细信息。这很有用,因为该用户或组可能不存在于您的系统中;这可能(潜在地)构成安全风险。

mv /usr/share/doc/git-2.39.2 …: 这些命令将一些文件移动到子文件夹中,以便更容易地对文档进行排序并找到您要查找的文件。

find … chmod …: 这些命令纠正附带文档tar文件中的权限。

配置Git

配置文件

~/.gitconfig/etc/gitconfig

内容

安装程序: git, git-receive-pack, git-upload-archive, and git-upload-pack (彼此硬链接), git-cvsserver, git-shell, gitk, 和 scalar

安装库: None

安装目录: /usr/libexec/git-core, 和 /usr/share/{doc/git-2.39.2,git-core,git-gui,gitk,gitweb}

简要描述

git 是stupid内容追踪器。

git-cvsserver 是Git的CVS服务器模拟器。

gitk 是一个图形化的Git存储库浏览器(需要Tk-8.6.13)。

git-receive-packgit send-pack调用,并使用从远程端提供的信息更新存储库。

git-shell 是SSH帐户的登录shell,用于提供受限制的Git访问。

git-upload-archivegit archive –remote调用,并通过git协议将生成的存档发送到另一端。

git-upload-packgit fetch-pack调用,它发现对方丢失了什么对象,并在打包后发送它们。

scalar 是一个存储库管理工具,它优化了Git,以便在大型存储库中使用。

13.10 Running a Git Server


简介

本节将描述如何设置、管理和保护git服务器。Git有很多可用的选项。有关更详细的文档,请参阅https://git-scm.com/book/en/v2

Server依赖

必要

git-2.39.2OpenSSH-9.2p1

设置Git服务器

下面的说明将安装一个git服务器。它将被设置为使用OpenSSH作为安全远程访问方法。

服务器的配置包括以下步骤:

1. 设置用户、组和权限

在配置的初始部分,您需要使用“root”用户。创建git用户和组,并使用以下命令设置不可用的密码哈希:

groupadd -g 58 git &&
useradd -c "git Owner" -d /home/git -m -g git -s /usr/bin/git-shell -u 58 git &&
sed -i '/^git:/s/^git:[^:]:/git:NP:/' /etc/shadow

输入一个不可用的密码散列(用NP代替!)可以解锁帐户,但不能用于通过密码认证登录。这是sshd正常工作所必需的。接下来,在git用户的主目录中创建一些文件和目录,允许使用ssh密钥访问git存储库。

install -o git -g git -dm0700 /home/git/.ssh &&
install -o git -g git -m0600 /dev/null /home/git/.ssh/authorized_keys

对于任何应该访问存储库的开发人员,将他/她的公共ssh密钥添加到/home/git/.ssh/authorized_keys。首先,添加一些选项以防止用户使用git连接将端口转发到git服务器可能到达的其他机器。

echo -n "no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty " >> /home/git/.ssh/authorized_keys &&
cat <user-ssh-key> >> /home/git/.ssh/authorized_keys

通过修改git配置来设置新存储库的初始分支的默认名称也很有用。作为root用户,运行:

git config --system init.defaultBranch trunk

最后将/usr/bin/git-shell条目添加到/etc/shells配置文件中。这个shell已经在git用户配置文件中设置好了,用来确保只有git相关的操作可以被执行:

echo "/usr/bin/git-shell" >> /etc/shells

2. 创建git存储库

存储库可以位于文件系统上的任何位置。git用户对该位置具有读/写权限是很重要的。我们使用/srv/git作为基目录。用以下命令创建一个新的git存储库(以root用户):

注意

在下面的所有说明中,我们使用project1作为示例存储库名称。您应该将存储库命名为特定项目的简短描述性名称。

install -o git -g git -m755 -d /srv/git/project1.git &&
cd /srv/git/project1.git                             &&
git init --bare                                      &&
chown -R git:git .

3. 从客户机系统填充存储库

注意

本节和下一节中的所有指令都应该在用户系统上执行,而不是在服务器系统上。

既然已经创建了存储库,开发人员就可以使用它将一些文件放入其中。一旦用户的ssh密钥被导入到git的authorized_keys文件中,用户就可以与存储库交互了。

应该在开发人员的系统上提供最小配置,指定其用户名和电子邮件地址。在客户端创建这个最小的配置文件:

cat > ~/.gitconfig <<EOF
[user]
        name = <users-name>
        email = <users-email-address>
EOF

在开发人员的机器上,设置一些要推送到存储库的文件作为初始内容:

注意

下面使用的gitserver术语应该是git服务器的主机名(或ip地址)。

mkdir myproject
cd myproject
git init --initial-branch=trunk
git remote add origin git@gitserver:/srv/git/project1.git
cat >README <<EOF
This is the README file
EOF
git add README
git commit -m 'Initial creation of README'
git push --set-upstream origin trunk

初始内容现在被推送到服务器,可供其他用户使用。在当前机器上,现在不再需要参数--set-upstream origin trunk,因为本地存储库现在连接到远程存储库。后续的推送可以执行为

git push

其他开发人员现在可以克隆存储库并对内容进行修改(只要他们的ssh密钥已经安装):

git clone git@gitserver:/srv/git/project1.git
cd project1
vi README
git commit -am 'Fix for README file'
git push

注意

这是一个基于OpenSSH访问的非常基本的服务器设置。所有开发人员都使用git用户对存储库执行操作,并且用户提交的更改可以通过更改集中记录的本地用户名(参见~/.gitconfig)来区分。

访问权限受到添加到git authorized_keys文件中的公钥的限制,并且没有选项可供公众导出/克隆存储库。要启用此功能,请继续执行步骤4,设置git服务器以进行公共只读访问。

在用于克隆项目的URL中,必须指定绝对路径(这里是/srv/git/project1.git),因为存储库不在git的主目录中,而是在/srv/git中。为了避免暴露服务器安装的结构,可以在git的主目录中为每个项目添加一个符号链接,如下所示:

ln -svf /srv/git/project1.git /home/git/

现在,可以使用以下命令克隆存储库

git clone git@gitserver:project1.git

4. 配置服务器

上面描述的设置使经过身份验证的用户可以使用存储库(通过提供ssh公钥文件)。还有一种简单的方法可以将存储库发布给未经身份验证的用户——当然没有写访问权限。

在大多数情况下,对开发站点来说,通过ssh访问(对于经过身份验证的用户)和通过守护进程向未经过身份验证的用户导出存储库的组合就足够了。

注意

默认情况下,守护进程可以在端口9418上访问。确保您的防火墙设置允许访问该端口。

要在引导时启动服务器,请从blfs-systemd-units-20220720包中安装git-daemon.service单元:

make install-git-daemon

为了允许git导出存储库,在服务器上的每个存储库目录中都需要一个名为git-daemon-export-ok的文件。该文件不需要内容,只有它的存在才启用,它的不存在将禁用该存储库的导出。

touch /srv/git/project1.git/git-daemon-export-ok

git-daemon.service单元一起安装的还有一个名为/etc/default/git-daemon的配置文件。查看此配置文件以满足您的需求。

在配置文件中只有三个选项需要设置:

启动守护进程后,未经身份验证的用户可以使用以下命令克隆导出的存储库:

git clone git://gitserver/project1.git

由于基目录默认为/srv/git(或在配置中设置自定义值),git会解释相对于基目录的传入路径(/project1.git),因此会服务/srv/git/project1.git中的存储库。

13.11 Guile-3.0.9


简介Guile

Guile包包含GNU工程的扩展语言库。Guile还包含一个独立的Scheme解释器。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Guile依赖

必要

GC-8.2.2libunistring-1.1

可选

Emacs-28.2GDB-13.1 (仅运行时依赖).

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/guile

安装Guile

运行以下命令安装Guile:

./configure --prefix=/usr    \
            --disable-static \
            --docdir=/usr/share/doc/guile-3.0.9 &&
make      &&
make html &&

makeinfo --plaintext -o doc/r5rs/r5rs.txt doc/r5rs/r5rs.texi &&
makeinfo --plaintext -o doc/ref/guile.txt doc/ref/guile.texi

要测试结果,执行: ./check-guile. 在i686系统上,由于轻微的浮点舍入错误,在numbers.test测试套件中会有多达10个测试失败。

现在,作为root用户:

make install      &&
make install-html &&

mkdir -p                       /usr/share/gdb/auto-load/usr/lib &&
mv /usr/lib/libguile-*-gdb.scm /usr/share/gdb/auto-load/usr/lib &&
mv /usr/share/doc/guile-3.0.9/{guile.html,ref} &&
mv /usr/share/doc/guile-3.0.9/r5rs{.html,}     &&

find examples -name "Makefile*" -delete         &&
cp -vR examples   /usr/share/doc/guile-3.0.9   &&

for DIRNAME in r5rs ref; do
  install -v -m644  doc/${DIRNAME}/*.txt \
                    /usr/share/doc/guile-3.0.9/${DIRNAME}
done &&
unset DIRNAME

命令解释

--disable-static: 此开关防止安装库的静态版本。

内容

安装程序: guild, guile, guile-config, guile-snarf 和 guile-tools

安装库: libguile-3.0.so 和 guile-readline.so

安装目录: /usr/include/guile, /usr/lib/guile, /usr/share/doc/guile-3.0.9 和 /usr/share/guile

简要描述

guile 是Guile的独立Scheme解释器。

guile-config 是一个Guile脚本,它提供了将您的程序链接到Guile库所需的信息,与PkgConfig的功能非常相似。

guile-snarf 是一个脚本,用于解析C代码中Scheme可见C函数的声明。

guild 是与guile一起安装的包装程序,它知道特定模块的安装位置并调用它,将其参数传递给程序。

guile-toolsguild的符号链接。

13.12 Librep-0.92.7


简介Librep

librep包包含一个Lisp系统。这对于编写脚本或使用Lisp解释器作为扩展语言的应用程序非常有用。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/librep

安装Librep

运行以下命令安装librep:

./configure --prefix=/usr --disable-static &&
make

这个包没有附带测试套件。

现在,作为root用户:

sed -i '5043,5044 d' libtool &&
make install

内容

安装程序: rep, rep-remote, rep-xgettext, 和 repdoc

安装库: librep.so 以及安装在/usr/lib/rep层次结构中的许多模块

安装目录: /usr/lib/rep, /usr/share/emacs/site-lisp, 和 /usr/share/rep

简要描述

rep 是Lisp解释器。

librep.so 包含Lisp解释器所需的函数。

13.13 LLVM-15.0.7


简介LLVM

LLVM包包含一组模块化和可重用的编译器和工具链技术。低级虚拟机(LLVM)核心库提供了一个现代的源代码和目标无关的优化器,以及对许多流行的cpu(以及一些不太常见的cpu)的代码生成支持。这些库是围绕一个被称为LLVM中间表示(“LLVM IR”)的指定良好的代码表示构建的。

Clang为LLVM提供了新的C, C++, Objective C和Objective C++前端,并且是一些桌面包(如firefox)和rust(如果使用系统LLVM构建)所必需的。

编译器RT包为使用Clang和LLVM的开发人员提供了运行时sanitizer和分析库。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

额外下载

LLVM的Cmake模块

推荐下载

Clang

可选下载

Compiler RT

LLVM依赖

必要

CMake-3.25.2

可选

Doxygen-1.9.6, git-2.39.2, Graphviz-7.1.0, libxml2-2.10.3, Pygments-2.14.0, rsync-3.2.7 (用于测试), recommonmark-0.7.1 (用于构建文档), texlive-20220321 (或 install-tl-unx), Valgrind-3.20.0, PyYAML-6.0, Zip-3.0, OCaml, psutil (用于测试), 和 Z3

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/llvm

安装LLVM

从15.0.0版本开始,需要额外的tarball llvm-cmake-15.0.7.src.tar.xz。上游期望在与llvm-15.0.7.src.tar.xz tarball相同的级别上提取它,并将提取的目录重命名为cmake。提取它并修改构建系统,以避免在llvm-15.0.7.src层次结构之外创建目录:

tar -xf ../llvm-cmake-15.0.7.src.tar.xz &&
sed '/LLVM_COMMON_CMAKE_UTILS/s@../cmake@cmake-15.0.7.src@' \
    -i CMakeLists.txt

运行以下命令将clang安装到源代码树中:

tar -xf ../clang-15.0.7.src.tar.xz -C tools &&
mv tools/clang-15.0.7.src tools/clang

如果你已经下载了compiler-rt,运行以下命令将它安装到源代码树中:

tar -xf ../compiler-rt-15.0.7.src.tar.xz -C projects &&
mv projects/compiler-rt-15.0.7.src projects/compiler-rt

此包中有许多Python脚本使用/usr/bin/env python来访问LFS上的系统PythonPython-3.11.2。使用以下命令修复这些脚本:

grep -rl '#!.*python' | xargs sed -i '1s/python$/python3/'

如果您已经下载了clang,请应用以下补丁在编译后的程序中默认启用SSP

patch -Np2 -d tools/clang <../clang-15.0.7-enable_default_ssp-1.patch

运行以下命令安装LLVM:

mkdir -v build &&
cd       build &&

CC=gcc CXX=g++                                  \
cmake -DCMAKE_INSTALL_PREFIX=/usr               \
      -DLLVM_ENABLE_FFI=ON                      \
      -DCMAKE_BUILD_TYPE=Release                \
      -DLLVM_BUILD_LLVM_DYLIB=ON                \
      -DLLVM_LINK_LLVM_DYLIB=ON                 \
      -DLLVM_ENABLE_RTTI=ON                     \
      -DLLVM_TARGETS_TO_BUILD="host;AMDGPU;BPF" \
      -DLLVM_BINUTILS_INCDIR=/usr/include       \
      -DLLVM_INCLUDE_BENCHMARKS=OFF             \
      -DCLANG_DEFAULT_PIE_ON_LINUX=ON           \
      -Wno-dev -G Ninja ..                      &&
ninja

如果你已经安装了recommonmark-0.7.1及其依赖,你可以使用以下命令生成html文档和手册页:

cmake -DLLVM_BUILD_DOCS=ON            \
      -DLLVM_ENABLE_SPHINX=ON         \
      -DSPHINX_WARNINGS_AS_ERRORS=OFF \
      -Wno-dev -G Ninja ..            &&
ninja docs-llvm-html  docs-llvm-man

clang文档也可以构建:

ninja docs-clang-html docs-clang-man

要测试结果,执行: ninja check-all. 测试使用所有可用的内核构建,但运行时使用在线处理器的数量。(不同的是,可用的内核可以使用taskset来限制,但是使它们脱机需要由root用户将0回显到/sys/devices/system/cpu/cpu<N>/online,并且使它们暂时不能被机器上的所有作业使用。)请注意,在64,700多个测试中,已知有四个测试失败: DataFlowSanitizer-x86_64 :: custom.cpp, DataFlowSanitizer-x86_64 :: origin_unaligned_memtrans.c, DataFlowSanitizer-x86_64 :: release_shadow_space.c, LLVM :: tools/llvm-libtool-darwin/L-and-l.test,

现在,作为root用户:

ninja install &&
cp bin/FileCheck /usr/bin

如果您已经构建了llvm文档,那么它已经通过上面的命令安装,但是需要移动它。作为root用户:

install -v -d -m755 /usr/share/doc/llvm-15.0.7            &&
mv -v /usr/share/doc/LLVM/llvm /usr/share/doc/llvm-15.0.7 &&
rmdir -v --ignore-fail-on-non-empty /usr/share/doc/LLVM

如果您已经构建了clang文档,那么它已经安装,但也需要移动。再次以root用户:

install -v -d -m755 /usr/share/doc/llvm-15.0.7             &&
mv -v /usr/share/doc/LLVM/clang /usr/share/doc/llvm-15.0.7 &&
rmdir -v --ignore-fail-on-non-empty /usr/share/doc/LLVM

命令解释

-DLLVM_ENABLE_FFI=ON: 该开关允许LLVM使用libffi。

-DLLVM_BUILD_LLVM_DYLIB=ON: 此开关将库构建为静态库,并将所有库链接到一个唯一的共享库。这是构建共享库的推荐方法。

-DCMAKE_BUILD_TYPE=Release: 这个开关使编译器优化,以加快代码和减少其大小。它还禁用了一些在生产系统中不需要的编译检查。

-DLLVM_TARGETS_TO_BUILD="host;AMDGPU;BPF": 这个开关可以为与主机相同的目标进行构建,也可以为Mesa r600和radeonsi驱动程序使用的r600 AMD GPU进行构建。构建v4l-utils-1.22.1需要BPF目标。默认值是所有目标。可以使用分号分隔的列表。有效的目标是:主机, X86, Sparc, PowerPC, ARM, AArch64, Mips, Hexagon, Xcore, M68K, MSP430, NVPTX, SystemZ, AMDGPU, BPF, CppBackend或所有。

-DLLVM_LINK_LLVM_DYLIB=ON: 与-DLLVM_BUILD_LLVM_DYLIB=ON一起使用,此开关允许将工具链接到共享库而不是静态库。它稍微减少了它们的大小,并确保llvm-config将正确地使用libLLVM-15.so。

-DLLVM_ENABLE_RTTI=ON: 该开关用于构建具有运行时类型信息的LLVM。这是构建Mesa-22.3.5所必需的。

-DLLVM_BINUTILS_INCDIR=/usr/include: 该开关用于告诉构建系统安装在LFS中的binutils头文件的位置。这允许构建LLVMgold.so,这是用clang和链接时间优化(LTO)构建程序所需要的。

-DLLVM_INCLUDE_BENCHMARKS=OFF: 用于禁用为LLVM基准测试生成构建目标。此选项需要当前不可用的附加代码。

-DCLANG_DEFAULT_PIE_ON_LINUX=ON: 使-fpie选项成为编译程序时的默认选项。再加上内核中启用的ASLR特性,这可以挫败一些基于已知内存布局的攻击。

-DBUILD_SHARED_LIBS=ON: 如果用来代替 -DLLVM_BUILD_LLVM_DYLIB=ON-DLLVM_LINK_LLVM_DYLIB=ON, 将所有LLVM库(大约60个)构建为共享库,而不是静态库。

-DLLVM_ENABLE_DOXYGEN: 启用生成可浏览的HTML文档,如果你已经安装了Doxygen-1.9.6。你应该运行make doxygen-html,然后手动安装生成的文档。

内容

安装程序: analyze-build, bugpoint, c-index-test, clang, clang++ (符号链接到clang-15), clang-15, clang-check, clang-cl, clang-cpp (最后两个符号链接到clang), clang-extdef-mapping, clang-format, clang-linker-wrapper, clang-nvlink-wrapper, clang-offload-bundler, clang-offload-packager, clang-offload-wrapper, clang-refactor, clang-rename, clang-repl, clang-scan-deps, diagtool, dsymutil, FileCheck, git-clang-format, hmaptool, intercept-build, llc, lli, llvm-addr2line (符号链接到llvm-symbolizer), llvm-ar, llvm-as, llvm-bcanalyzer, llvm-bitcode-strip (符号链接到llvm-objcopy), llvm-cat, llvm-cfi-verify, llvm-config, llvm-cov, llvm-c-test, llvm-cvtres, llvm-cxxdump, llvm-cxxfilt, llvm-cxxmap, llvm-debuginfod, llvm-debuginfod-find, llvm-diff, llvm-dis, llvm-dlltool (符号链接到llvm-ar), llvm-dwarfdump, llvm-dwarfutil, llvm-dwp, llvm-exegesis, llvm-extract, llvm-gsymutil, llvm-ifs, llvm-install-name-tool (符号链接到llvm-objcopy), llvm-jitlink, llvm-lib (符号链接到llvm-ar), llvm-libtool-darwin, llvm-link, llvm-lipo, llvm-lto, llvm-lto2, llvm-mc, llvm-mca, llvm-ml, llvm-modextract, llvm-mt, llvm-nm, llvm-objcopy, llvm-objdump, llvm-opt-report, llvm-otool (符号链接到llv-objdump), llvm-pdbutil, llvm-profdata, llvm-profgen, llvm-ranlib (符号链接到llvm-ar), llvm-rc, llvm-readelf (符号链接到llvm-readobj), llvm-readobj, llvm-reduce, llvm-remark-size-diff, llvm-rtdyld, llvm-sim, llvm-size, llvm-split, llvm-stress, llvm-strings, llvm-strip (符号链接到llvm-objcopy), llvm-symbolizer, llvm-tapi-diff, llvm-tblgen, llvm-tli-checker, llvm-undname, llvm-windres (符号链接到llvm-rc), llvm-xray, opt, sancov, sanstats, scan-build, scan-build-py, scan-view, split-file, 和 verify-uselistorder

安装库: libLLVM.so, libLLVM.a (95个库), libLTO.so, libRemarks.so, libclang.so, libclang-cpp.so, libclang.a (41个库), 和 LLVMgold.so

安装目录: /usr/include/{clang,clang-c,llvm,llvm-c}, /usr/lib/{clang,cmake/{clang,llvm},libear,libscanbuild}, /usr/share/{clang,opt-viewer,scan-build,scan-view}, 和 /usr/share/doc/llvm-15.0.7

简要描述

analyze-build 是一个静态分析工具。

bugpoint 是自动测试用例减少工具。

c-index-test 用于测试libclang API并演示其用法。

clang 是Clang C、C++和Objective-C编译器。

clang-check 是执行静态代码分析和显示抽象语法树(AST)的工具。

clang-extdef-mapping 是收集源文件中外部定义的USR名称和位置的工具。

clang-format 是格式化C/C++/Java/JavaScript/Objective-C/Protobuf代码的工具。

clang-linker-wrapper 是宿主链接器上的包装器实用程序。

clang-nvlink-wrapper 是nvlink程序上的包装工具。

clang-offload-bundler 是捆绑/解捆绑与公共源文件相关联的OpenMP卸载文件的工具。

clang-offload-packager 是一个工具,可以将多个目标文件捆绑到一个二进制文件中,然后可以使用该二进制文件创建包含卸载代码的fatbinary。

clang-offload-wrapper 是为卸载目标二进制文件创建包装器位码的工具。

clang-refactor 是一个基于Clang的C、C++和Objective-C重构工具。

clang-rename 是在C/C++程序中重命名符号的工具。

clang-scan-deps 是扫描源文件中依赖项的工具。

diagtool 是用于在clang中处理诊断的工具组合。

FileCheck 是一种工具,它读取两个文件(一个来自标准输入,另一个在命令行中指定),并使用一个来验证另一个。

dsymutil 是一个用于操作存档的DWARF调试符号文件的工具,与Darwin命令dsymutil兼容。

git-clang-format 在git生成的补丁上运行clang-format (需要 git-2.39.2).

hmaptool 是一个用于转储和构造头映射的Python工具。

llc 是LLVM静态编译器。

lli 用于直接从LLVM位码执行程序。

llvm-addr2line 是用于将地址转换为文件名和行号的工具。

llvm-ar 是LLVM归档器。

llvm-as 是LLVM汇编器。

llvm-bcanalyzer 是LLVM位码分析器。

llvm-bitcode-strip 从对象中剥离LLVM位码。

llvm-cat 是连接LLVM模块的工具。

llvm-cfi-verify 识别控制流完整性是否保护所提供的目标文件、DSO或二进制文件中的所有间接控制流指令。

llvm-config 打印LLVM编译选项。

llvm-cov 用于发出覆盖信息。

llvm-c-test 是字节码反汇编器。

llvm-cvtres 是将Microsoft资源文件转换为COFF的工具。

llvm-cxxdump 被用作C++ ABI数据转储器。

llvm-cxxfilt 用于在llvm代码中替换C++符号。

llvm-cxxmap 用于重新映射C++中混乱的符号。

llvm-debuginfod 是一种通过HTTP API提供调试信息的服务,用于分析剥离的二进制文件。

llvm-debuginfod-findllvm-debuginfod守护进程的接口,用于查找debuginfod工件。

llvm-diff 为LLVM结构’diff‘。

llvm-dis 是LLVM反汇编器。

llvm-dwarfdump 在对象文件中打印DWARF部分的内容。

llvm-dwarfutil 是复制和操作调试信息的工具。

llvm-dwp 合并分裂的DWARF文件。

llvm-elfabi 用于读取有关ELF二进制文件ABI的信息。

llvm-exegesis 是一个基准测试工具,它使用LLVM中可用的信息来测量主机指令特征,如延迟或端口分解。

llvm-extract 用于从LLVM模块中提取函数。

llvm-gsymutil 用于处理GSYM符号格式文件,该文件将内存地址转换为函数名和源文件行。这些文件比DWARF或Breakpad文件小。

llvm-ifs 用于将接口存根与目标文件合并。

llvm-install-name-tool 用于将加载命令重写为MachO二进制格式。

llvm-jitlink 用于解析可重定位的目标文件,使其内容在目标进程中可执行。

llvm-libtool-darwin 在基于darwin的系统上提供基本的libtool功能。这在为macOS系统生成二进制文件时非常有用。

llvm-link 是LLVM链接器。

llvm-lipo 用于从MachO文件创建通用二进制文件。

llvm-lto 是LLVM LTO(链接时间优化)链接器。

llvm-lto2 是基于分辨率的LTO接口的测试工具。

llvm-mc 是一个独立的机器码汇编/反汇编程序。

llvm-mca 是一个静态测量机器代码性能的性能分析工具。

llvm-ml 是LLVM提供的机器码的playground。

llvm-modextract 是从多模块位码文件中提取一个模块的工具。

llvm-mt 是从并行程序集清单(用于Microsoft SDK)生成签名文件和目录的工具。

llvm-nm 用于列出LLVM位码和目标文件的符号表。

llvm-objcopy 是LLVM版本的objcopy工具。

llvm-objdump 是LLVM对象文件转储器。

llvm-opt-report 是从YAML优化记录文件生成优化报告的工具。

llvm-pdbutil 是PDB(程序数据库)转储器。PDB是一种微软格式。

llvm-profdata 是一个操作和打印配置文件数据文件的小工具。

llvm-profgen 生成LLVM SPGO分析信息。

llvm-ranlib 用于为LLVM存档生成索引。

llvm-rc 是一个独立于平台的工具,用于将资源脚本编译成二进制资源文件。

llvm-readobj 显示有关对象文件的特定于格式的低级信息。

llvm-reduce 用于在运行测试套件时自动减少测试用例。

llvm-remark-size-diff 报告两个注释文件之间指令计数和堆栈大小注释的差异。

llvm-rtdyld 是LLVM MC-JIT工具。

llvm-size 是LLVM对象大小转储器。

llvm-split 是LLVM模块拆分器。

llvm-stress 用于生成随机的.ll文件。

llvm-strings 打印在二进制文件(目标文件、可执行文件或存档库)中找到的字符串。

llvm-symbolizer 将地址转换为源代码位置。

llvm-tblgen 是LLVM目标描述到C++代码生成器。

llvm-tli-checker 是LLVM TargetLibraryInfo与SDK检查器。

llvm-undname 是索要姓名的工具。

llvm-xray 是Google的XRay函数调用跟踪系统的实现。

intercept-build 为项目生成生成命令的数据库。

opt 是LLVM优化器。

sancov 是sanitizer覆盖处理工具。

sanstats 是sanitizer统计处理工具。

scan-build 是一个调用Clang静态分析器的Perl脚本。

scan-build-py 是一个调用Clang静态分析器的Python脚本。

scan-view 是Clang静态分析器结果的查看器。

split-file 将输入文件分割成由正则表达式分隔的多个部分。

verify-uselistorder 是用于验证使用列表顺序的LLVM工具。

13.14 Lua-5.4.4


简介Lua

Lua是一种功能强大的轻量级编程语言,专为扩展应用程序而设计。它也经常被用作通用的独立语言。Lua是作为一个小型的C函数库实现的,用ANSI C编写,可以在所有已知平台上不加修改地编译。实现目标是简单、高效、可移植性和低嵌入成本。其结果是一个快速的语言引擎,占用空间小,使其在嵌入式系统中也很理想。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

额外下载

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/lua

安装Lua

有些包检查Lua的pkg-config文件,它是用以下命令创建的:

cat > lua.pc << "EOF"
V=5.4
R=5.4.4

prefix=/usr
INSTALL_BIN=${prefix}/bin
INSTALL_INC=${prefix}/include
INSTALL_LIB=${prefix}/lib
INSTALL_MAN=${prefix}/share/man/man1
INSTALL_LMOD=${prefix}/share/lua/${V}
INSTALL_CMOD=${prefix}/lib/lua/${V}
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: Lua
Description: An Extensible Extension Language
Version: ${R}
Requires:
Libs: -L${libdir} -llua -lm -ldl
Cflags: -I${includedir}
EOF

运行以下命令安装Lua:

patch -Np1 -i ../lua-5.4.4-shared_library-2.patch &&
make linux

要测试结果,执行: make test. “这将运行解释器并打印其版本”。如果下载了“测试套件”压缩包,可以执行更全面的测试。这些测试需要在安装包之后执行,因此我们遵循下面的描述。

现在,作为root用户:

make INSTALL_TOP=/usr                \
     INSTALL_DATA="cp -d"            \
     INSTALL_MAN=/usr/share/man/man1 \
     TO_LIB="liblua.so liblua.so.5.4 liblua.so.5.4.4" \
     install &&

mkdir -pv                      /usr/share/doc/lua-5.4.4 &&
cp -v doc/*.{html,css,gif,png} /usr/share/doc/lua-5.4.4 &&

install -v -m644 -D lua.pc /usr/lib/pkgconfig/lua.pc

这里我们只描述“基本测试”。解压缩tarball并切换到lua-5.4.4-tests目录,然后发出lua -e “_U=true” all.lua。如果测试没有出错,您将看到一条包含字符串“final OK”的消息。

内容

安装程序: lua 和 luac

安装库: liblua.so

安装目录: /usr/{lib,share}/lua 和 /usr/share/doc/lua-5.4.4

简要描述

lua 是独立的Lua解释器。

luac 是Lua编译器。

liblua.so 包含Lua API函数。

13.15 Lua-5.2.4


简介Lua 5.2

Lua是一种功能强大的轻量级编程语言,专为扩展应用程序而设计。它也经常被用作通用的独立语言。Lua是作为一个小型的C函数库实现的,用ANSI C编写,可以在所有已知平台上不加修改地编译。实现目标是简单、高效、可移植性和低嵌入成本。其结果是一个快速的语言引擎,占用空间小,使其在嵌入式系统中也很理想。

这是一个较旧的Lua版本,只需要与其他程序兼容,例如 Wireshark-4.0.3.

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

额外下载

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/lua

安装Lua 5.2

有些包检查Lua的pkg-config文件,它是用以下命令创建的:

cat > lua.pc << "EOF"
V=5.2
R=5.2.4

prefix=/usr
INSTALL_BIN=${prefix}/bin
INSTALL_INC=${prefix}/include/lua5.2
INSTALL_LIB=${prefix}/lib
INSTALL_MAN=${prefix}/share/man/man1
INSTALL_LMOD=${prefix}/share/lua/${V}
INSTALL_CMOD=${prefix}/lib/lua/${V}
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include/lua5.2

Name: Lua
Description: An Extensible Extension Language
Version: ${R}
Requires:
Libs: -L${libdir} -llua5.2 -lm -ldl
Cflags: -I${includedir}
EOF

运行以下命令安装Lua:

patch -Np1 -i ../lua-5.2.4-shared_library-1.patch &&

sed -i '/#define LUA_ROOT/s:/usr/local/:/usr/:' src/luaconf.h &&

sed -r -e '/^LUA_(SO|A|T)=/ s/lua/lua5.2/' \
       -e '/^LUAC_T=/ s/luac/luac5.2/'     \
       -i src/Makefile &&

make MYCFLAGS="-fPIC" linux

这个包的安装比较复杂,所以我们将使用DESTDIR的安装方法:

make TO_BIN='lua5.2 luac5.2'                     \
     TO_LIB="liblua5.2.so liblua5.2.so.5.2 liblua5.2.so.5.2.4" \
     INSTALL_DATA="cp -d"                        \
     INSTALL_TOP=$PWD/install/usr                \
     INSTALL_INC=$PWD/install/usr/include/lua5.2 \
     INSTALL_MAN=$PWD/install/usr/share/man/man1 \
     install &&

install -Dm644 lua.pc install/usr/lib/pkgconfig/lua52.pc &&

mkdir -pv install/usr/share/doc/lua-5.2.4 &&
cp -v doc/*.{html,css,gif,png} install/usr/share/doc/lua-5.2.4 &&

ln -s liblua5.2.so install/usr/lib/liblua.so.5.2   &&
ln -s liblua5.2.so install/usr/lib/liblua.so.5.2.4 &&

mv install/usr/share/man/man1/{lua.1,lua5.2.1} &&
mv install/usr/share/man/man1/{luac.1,luac5.2.1}

现在,作为root用户:

chown -R root:root install  &&
cp -a install/* /

命令解释

sed -i … src/luaconf.h: 该命令更改Lua搜索路径以匹配安装路径。

sed -i … src/Makefile: 该命令将此安装与最新版本的lua消除冲突。

内容

安装程序: lua5.2 和 luac5.2

安装库: liblua5.2.so

安装目录: /usr/include/lua5.2, /usr/lib/lua/5.2, /usr/share/doc/lua-5.2.4, 和 /usr/share/lua/5.2

简要描述

lua5.2 是独立的Lua 5.2版解释器。

luac5.2 是Lua 5.2版编译器。

liblua5.2.so 包含Lua 5.2版API函数。

13.16 Mercurial-6.3.2


简介Mercurial

Mercurial是一个分布式源代码控制管理工具,类似于Git和Bazaar。Mercurial是用Python编写的,用于Mozilla for Firefox和Thunderbird等项目。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Mercurial依赖

可选

docutils-0.19 (需要构建文档), git-2.39.2, GPGME-1.18.0 (与Python绑定), OpenSSH-9.2p1 (运行时, 访问 ssh://… 存储库), Pygments-2.14.0, rustc-1.67.1 (查看 rust/README.rstrust/rhg/README.md), Subversion-1.14.2 (与Python绑定), Bazaar, CVS, pyflakes, pyOpenSSL, 和 re2

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/mercurial

安装Mercurial

通过发出以下命令来构建Mercurial:

make build

要构建文档(需要docutils-0.19),执行:

make doc

要运行测试套件,执行:

TESTFLAGS="-j<N> --tmpdir tmp --blacklist blacklists/fsmonitor --blacklist blacklists/linux-vfat" make check

其中<N>是一个介于1和(处理器X线程)之间的整数,包括线程数。有几个测试(大约20个)失败了,因为Python中更改了一些错误消息,或者打印了一些弃用警告,这些警告在设计测试时不存在。为了调查任何明显失败的测试,您可以使用run-tests.py脚本。要查看近40个开关,其中一些非常有用,请执行tests/run-tests.py –help。运行以下命令,将只执行之前失败的测试:

pushd tests  &&
  rm -rf tmp &&
  ./run-tests.py --tmpdir tmp test-gpg.t
popd

通常,之前的失败是可以重复的。但是,如果在--tmpdir之前添加--debug开关,并再次运行测试,一些失败可能会消失,这是测试套件的一个问题。如果发生这种情况,即使您没有再次通过–debug开关,也不会再出现这些故障。

一个有趣的开关是--time,它将在测试完成后生成一个表,其中包含所有已执行的测试以及它们各自的开始、结束、用户、系统和实时时间。注意,这些开关可以通过将它们包含在TESTFLAGS环境变量中来与make check一起使用。

运行以下命令(以root身份)安装Mercurial:

make PREFIX=/usr install-bin

如果你构建了文档,运行下面的命令(作为root)来安装它:

make PREFIX=/usr install-doc

安装后,两个非常快速和简单的测试应该可以正确运行。第一个需要一些配置:

cat >> ~/.hgrc << "EOF"
[ui]
username = <user_name> <user@mail>
EOF

其中必须替换 和 <your@mail>(邮件是可选的,可以省略)。定义了用户身份后,运行**hg debuginstall**,将显示几行,最后一行显示"no problems detected"。另一个快速而简单的测试是**hg**,它应该输出可以与**hg**一起使用的基本命令。

配置Mercurial

配置文件

/etc/mercurial/hgrc~/.hgrc

绝大多数扩展在默认情况下是禁用的。运行hg help extensions,如果你需要启用任何扩展,例如在调查测试失败时。这将输出一个启用和禁用扩展的列表,以及更多信息,例如如何使用配置文件启用或禁用扩展。

如果你已经安装了make-ca-1.12,并希望Mercurial使用这些证书,作为root用户,执行:

install -v -d -m755 /etc/mercurial &&
cat > /etc/mercurial/hgrc << "EOF"
[web]
cacerts = /etc/pki/tls/certs/ca-bundle.crt
EOF

内容

安装程序: hg

安装库: /usr/lib/python3.11/site-packages/mercurial 下的几个内部模块

安装目录: /etc/mercurial, /usr/lib/python3.11/site-packages/hgdemandimport, /usr/lib/python3.11/site-packages/hgext, /usr/lib/python3.11/site-packages/hgext3rd, /usr/lib/python3.11/site-packages/mercurial, 和 /usr/lib/python3.11/site-packages/mercurial-6.3.2-py3.11.egg-info

简要描述

hg 是mercurial版本控制系统。

13.17 NASM-2.16.01


简介NASM

NASM(Netwide Assembler)是为可移植性和模块化而设计的80x86汇编器。它还包括一个反汇编程序。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

额外下载

NASM依赖

可选 (用于生成文档):

asciidoc-10.2.0xmlto-0.0.28

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/nasm

安装NASM

如果你下载了可选的文档,把它放到源代码树中:

tar -xf ../nasm-2.16.01-xdoc.tar.xz --strip-components=1

运行以下命令安装NASM:

./configure --prefix=/usr &&
make

这个包没有附带测试套件。

现在,作为root用户:

make install

如果你下载了可选的文档,以root用户使用以下说明安装它:

install -m755 -d         /usr/share/doc/nasm-2.16.01/html  &&
cp -v doc/html/*.html    /usr/share/doc/nasm-2.16.01/html  &&
cp -v doc/*.{txt,ps,pdf} /usr/share/doc/nasm-2.16.01

内容

安装程序: nasm 和 ndisasm

安装库: None

安装目录: /usr/share/doc/nasm-2.16.01

简要描述

nasm 是一个便携式80x86汇编程序。

ndisasm 是一个80x86二进制文件反汇编器。

13.18 Patchelf-0.17.2


简介Patchelf

patchelf包包含一个小实用程序,用于修改ELF可执行文件的动态链接器和RPATH。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/patchelf

安装Patchelf

运行以下命令安装patchelf:

./configure --prefix=/usr \
            --docdir=/usr/share/doc/patchelf-0.17.2 &&
make

要测试结果,执行: make check.

现在,作为root用户:

make install

内容

安装程序: patchelf

简要描述

patchelf 是一个用于修改现有ELF可执行文件和库的简单实用程序;它可以改变可执行文件的动态加载器(“ELF解释器”),也可以改变可执行文件和库的RPATH。

13.19 Perl Modules


简介Perl Modules

Perl模块包(也称为发行版,因为每个模块可以包含多个模块)向Perl语言添加有用的对象。本页上列出的包是本书中其他包所必需的或推荐的。如果它们有依赖的模块,这些模块要么在本页,要么在下一页(Perl Module Dependencies)。

在许多情况下,只列出了需要的或推荐的依赖项——可能还有其他模块允许运行更多的测试,但忽略它们仍然允许测试PASS

对于一些模块,BLFS编辑器已经确定仍然作为先决条件列出的其他模块不是必需的,并省略了它们。

如果同一模块的字母顺序较早的依赖项拉入了另一个依赖项,则不会提及同一模块的较晚依赖项。您应该按顺序构建依赖项。

一般来说,为perl模块运行测试是值得的,它们经常会显示诸如缺少使用模块所需的依赖项之类的问题。在这里,编辑们试图分离那些只在运行测试套件时才需要的依赖项,但是对于其中一个依赖项将该模块用于其自己的测试套件的模块,它们将不会被提及。也就是说,如果您打算运行测试套件,请为模块的每个依赖项运行它们。

可以使用CPAN自动安装模块的当前版本以及上游推荐的所有缺失或太旧的依赖项。参见本页末尾的CPAN automated install of perl modules

大多数这些模块只安装/usr/lib/perl5/site_perl/5.xx.y下面的文件,这些将不会被记录。一两个安装程序(主要是perl脚本)或库到/usr/bin//usr/lib/中,这些都是文档化的。

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/perl-modules

Archive::Zip-1.68

简介Archive::Zip

Archive::Zip模块允许Perl程序创建、操作、读取和写入Zip归档文件。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Archive::Zip依赖

推荐 (用于测试套件)

UnZip-6.0 (有its补丁)

可选

Test-MockModule-v0.176.0

安装Archive::Zip

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

内容

安装程序: crc32

简要描述

crc32 计算并输出给定文件的CRC-32值。

autovivification-0.18

autovivification模块介绍

该模块允许您禁用autovivification(在解引用未定义的变量时自动创建和填充新数组和散列),并在可能发生时抛出警告或错误。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装autovivification

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Business::ISBN-3.007

简介Business::ISBN

Business::ISBN模块用于处理国际标准书号。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Business::ISBN依赖

必要

Business-ISBN-Data-20210112.006

安装Business::ISBN

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Business::ISMN-1.202

简介Business::ISMN

Business::ISMN模块用于处理国际标准音乐编号。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Business::ISMN依赖

必要

Tie-Cycle-1.227

安装Business::ISMN

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Business::ISSN-1.005

简介Business::ISSN

Business::ISSN模块用于使用国际标准序列号。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Business::ISSN

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Class::Accessor-0.51

简介Class::Accessor

Class::Accessor为你的类生成访问器/变量。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Class::Accessor

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Data::Compare-1.27

简介Data::Compare

Data::Compare模块比较两个perl数据结构。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Data::Compare依赖

必要

Clone-0.46, File-Find-Rule-0.34

安装Data::Compare

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Data::Dump-1.25

简介Data::Dump

Data::Dump提供了漂亮的数据结构打印。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Data::Dump

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Data::Uniqid-0.12

简介Data::Uniqid

Data::Uniqid提供了三个简单的例程来生成唯一id。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Data::Uniqid

尽管最终测试失败并报告错误,但测试套件返回0的状态。可以安全地忽略该错误。

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

DateTime::Calendar::Julian-0.107

简介DateTime::Calendar::Julian

DateTime::Calendar::Julian实现Julian日历。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

DateTime::Calendar::Julian依赖

必要

DateTime-1.59

安装DateTime::Calendar::Julian

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

DateTime::Format::Builder-0.83

简介DateTime::Format::Builder

DateTime::Format::Builder创建了DateTime解析器类和对象。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

DateTime::Format::Builder依赖

必要

DateTime-Format-Strptime-1.79Params-Validate-1.31

安装DateTime::Format::Builder

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Encode::EUCJPASCII-0.03

简介Encode::EUCJPASCII

Encode::EUCJPASCII提供了一个eucJP-open(扩展Unix代码,日语)映射。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Encode::EUCJPASCII

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Encode::HanExtra-0.23

简介Encode::HanExtra

Encode::HanExtra模块提供了额外的中文编码集,由于大小问题,这些编码没有包含在核心Encode模块中。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Encode::HanExtra

该模块使用’不安全’构建和安装指令(在perl-5.26.0中,出于安全原因,删除了@INC中当前目录的使用,此模块尚未更新):

PERL_USE_UNSAFE_INC=1 perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Encode::JIS2K-0.03

简介Encode::JIS2K

Encode::JIS2K模块提供JIS X 0212(又名JIS 2000)编码。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Encode::JIS2K

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

File::Slurper-0.014

简介File::Slurper

File::Slurper是一个简单、合理和高效的模块,用于发出文件的声音。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

File::Slurper依赖

推荐 (测试套件所必需的)

Test-Warnings-0.031

安装File::Slurper

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

File::Which-1.27

简介File::Which

File::Which提供了’which’实用程序的可移植实现。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装File::Which

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

HTML::Parser-3.81

简介HTML::Parser

HTML::Parser发行版是一个模块集合,用于解析和提取HTML文档中的信息。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

HTML::Parser依赖

必要

HTML-Tagset-3.20

必要 (运行时)

HTTP-Message-6.44 (它的模块HTTP::Headers是该发行版中HTML::HeadParser的运行时需求).

安装HTML::Parser

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

HTTP::Daemon-6.15

简介HTTP::Daemon

HTTP::Daemon类的实例是在套接字上监听传入请求的HTTP/1.1服务器。HTTP::Daemon是IO::Socket::INET的子类,因此您也可以直接对它执行套接字操作。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

HTTP::Daemon依赖

必要

HTTP-Message-6.44

注意

Makefile.PL和运行测试会报错Module::Build::Tiny缺失,但这只需要在系统缺少C编译器时使用Build.PL

安装HTTP::Daemon

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

IO::Socket::SSL-2.081

简介IO::Socket::SSL

IO::Socket::SSL通过将必要的功能包装到熟悉的IO::Socket接口中并尽可能提供安全默认值,使使用SSL/TLS变得更加容易。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

IO::Socket::SSL依赖

必要

make-ca-1.12Net-SSLeay-1.92

推荐

URI-5.17 (访问国际域名s)

安装IO::Socket::SSL

这个模块使用标准构建和安装指令的一个变体:

yes | perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

命令解释

yes: Perl将询问您是否希望运行外部测试,如果存在网络问题,它将“fail soft”。默认值是’y’,这允许您编写构建脚本。

IO::String-1.08

简介IO::String

IO::String - 模拟核心字符串的文件接口。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装IO::String

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

IPC::Run3-0.048

简介IPC::Run3

IPC::Run3用于运行带有输入/输出重定向的子进程。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装IPC::Run3

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

JSON-4.10

简介JSON

JSON为JSON::XS-compatible模块提供了一个简单的包装器和一些附加功能。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装JSON

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Lingua::Translit-0.29

简介Lingua::Translit

Lingua::Translit和它的Translit程序在书写系统之间转写文本。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Lingua::Translit

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

内容

安装程序: translit

简要描述

translit 在使用不同标准的书写系统之间音译文本。

LWP (libwww-perl-6.67)

简介LWP - Perl的遍及全球Web库

libwww-perl集合是一组Perl模块,它为万维网提供了一个简单而一致的应用程序编程接口(API)。该库的主要焦点是提供允许编写WWW客户机的类和函数。该库还包含更通用的模块,甚至还包含帮助您实现简单HTTP服务器的类。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

libwww-perl依赖

必要

File-Listing-6.15, HTTP-Cookies-6.10, HTTP-Daemon-6.15, HTTP-Negotiate-6.01, HTML-Parser-3.81, Net-HTTP-6.22, Try-Tiny-0.31WWW-RobotRules-6.02

推荐 (测试套件所必需的)

Test-Fatal-0.017, Test-Needs-0.002010Test-RequiresInternet-0.05

安装libwww-perl

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

安装此包后,如果您想要HTTPS协议支持,请安装 LWP-Protocol-https-6.10.

内容

安装程序: lwp-download, lwp-dump, lwp-mirror, lwp-request

简要描述

lwp-download 是从web获取大文件的脚本。

lwp-dump 用于查看URL返回的标头和内容。

lwp-mirror 是一个简单的镜像实用程序。

lwp-request 是一个简单的命令行用户代理。

List::AllUtils-0.19

简介List::AllUtils

List::Allutils模块将List::Util和List::MoreUtils组合在一个很小的包中。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

List::AllUtils依赖

必要

List-SomeUtils-0.59, List-UtilsBy-0.12

安装List::AllUtils

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

List::MoreUtils-0.430

简介List::MoreUtils

List::MoreUtils提供了List::Util中缺少的东西。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

List::MoreUtils依赖

必要

Exporter-Tiny-1.006000List-MoreUtils-XS-0.430

安装List::MoreUtils

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Log::Log4perl-1.57

简介Log::Log4perl

Log::Log4perl为perl提供了Log4j实现。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Log::Log4perl

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

内容

安装程序: l4p-templ

简要描述

l4p-templ 输出用于启动新的Log4perl配置文件的模板Log4perl配置的文本。

LWP::Protocol::https-6.10

简介LWP::Protocol::https

LWP::Protocol::https为LWP::UserAgent提供了https支持(即libwww-perl-6.67)。一旦安装了该模块,LWP就可以通过SSL/TLS使用HTTP访问站点。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

额外下载

LWP::Protocol::https依赖

必要

IO-Socket-SSL-2.081, libwww-perl-6.67make-ca-1.12/etc/pki/tls/certs/ca-bundle.crt.

安装LWP::Protocol::https

首先,应用一个补丁来使用系统证书(使用CPAN自动安装将使用Mozilla::CA,它通常不是最新的,也不使用本地证书)。

patch -Np1 -i ../LWP-Protocol-https-6.10-system_certs-2.patch

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Module::Build-0.4232

简介Module::Build

Module::Build允许在没有make命令的情况下构建perl模块。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Module::Build

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

注意,这个模块也可以使用Build.PL来构建。

内容

安装程序: config_data

简要描述

config_data 用于查询或修改perl模块的配置。

Net::DNS-1.36

简介Net::DNS

Net::DNS是一个用Perl实现的DNS解析器。它可以用于从Perl脚本执行几乎任何类型的DNS查询。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Net::DNS

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Parse::RecDescent-1.967015

简介Parse::RecDescent

Parse::RecDescent从简单的类似yacc的语法规范逐步生成自顶向下递归下降文本解析器。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Parse::RecDescent

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Parse::Yapp-1.21

简介Parse::Yapp

Parse::Yapp是一个Perl扩展,用于生成和使用LALR解析器。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Parse::Yapp

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

内容

安装程序: yapp

简要描述

yapp 是Parse::Yapp模块的前端,该模块允许您从输入语法文件创建Perl OO解析器。

PerlIO::utf8_strict-0.010

简介PerlIO::utf8_strict

PerlIO::utf8_strict提供了一个快速且正确的UTF-8 PerlIO层。与perl的默认:utf8层不同,它检查输入的正确性。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

PerlIO::utf8_strict依赖

推荐 (测试套件所必需的)

Test-Exception-0.43

安装PerlIO::utf8_strict

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Regexp::Common-2017060201

简介Regexp::Common

Regexp::Common提供常用的正则表达式。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Regexp::Common

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

SGMLSpm-1.1

简介SGMLSpm

SGMLSpm模块是一个Perl库,用于解析James Clark的SGMLS和NSGMLS解析器的输出。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装SGMLSpm

在开始构建之前,发出以下命令以防止出现错误:

chmod -v 644 MYMETA.yml

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

安装完成后,以root用户执行如下命令:

ln -sv sgmlspl.pl /usr/bin/sgmlspl

内容

安装程序: sgmlspl.pl, sgmlspl

简要描述

sgmlspl.pl 是一个SGML处理器。

sgmlspl 是安装DocBook-utils-0.6.14期间使用的符号链接。

Sort::Key-1.33

简介Sort::Key

Sort::Key提供了一组函数,用于按计算出的键值对值列表进行排序。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Sort::Key

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Test::Command-0.11

简介Test::Command

Test::Command测试外部命令的退出状态(STDOUT或STDERR)。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Test::Command

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Test::Differences-0.69

简介Test::Differences

Test::Differences测试字符串和数据结构,如果它们不匹配,则显示差异。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Test::Differences依赖

必要

Text-Diff-1.45,

推荐 (测试套件所必需的)

Capture-Tiny-0.48

安装Test::Differences

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Text::BibTeX-0.89

简介Text::BibTeX

Text::BibTeX提供了读取和解析BibTeX文件的接口。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Text::BibTeX依赖

必要

Config-AutoConf-0.320, ExtUtils-LibBuilder-0.08

安装Text::BibTeX

这个模块是使用Build.PL构建的:

perl Build.PL &&
./Build       &&
./Build test

现在,作为root用户:

./Build install

内容

安装程序: biblex, libparse, dumpnames

安装库: libtparse.so

简要描述

biblex 对BibTeX文件执行词法分析。

bibparse 用命令行选项解析一系列BibTeX文件,以控制字符串的后处理行为。

dumpnames 解析BibTeX文件,将’author’和’editor’字段拆分为名称列表,然后将所有内容转储到stdout。

libbtparse.so 是解析和处理BibTeX数据文件的库。

Text::CSV-2.02

简介Text::CSV

Text::CSV是一个逗号分隔值操纵符,使用XS(外部子例程—用于用C或C++编写的子例程)或纯perl。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Text::CSV依赖

推荐

Text-CSV_XS-1.49 (biber-2.18需求)

安装Text::CSV

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Text::Roman-3.5

简介Text::Roman

Text::Roman允许在罗马和阿拉伯算法(数字系统,例如MCMXLV和1945)之间进行转换。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Text::Roman

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Unicode::Collate-1.31

简介Unicode::Collate

Unicode::Collate提供了一个Unicode排序算法。

注意

这是一个核心模块。如果您使用的是perl-5.28.0或更高版本,它的版本足以用于biber-2.18,您不需要重新安装该模块。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Unicode::Collate

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Unicode::LineBreak-2019.001

简介Unicode::LineBreak

Unicode::LineBreak提供了一个UAX #14 Unicode Breaking算法。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Unicode::LineBreak依赖

必要

MIME-Charset-1.013.1, 并且 Wget-1.21.3 (从unicode.org下载测试套件中的两个文件)

可选

libthai (把泰语单词分成几段)

安装Unicode::LineBreak

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

URI-5.17

简介URI

这个模块实现了URI类。该类的对象表示RFC 2396中指定的“统一资源标识符引用”(并由RFC 2732更新)。统一资源标识符是一个紧凑的字符串,用于标识抽象资源或物理资源。统一资源标识符可以进一步分类为统一资源定位符(URL)或统一资源名称(URN)。URL和URN之间的区别对URI类接口无关紧要。“URI引用”是一个URI,它可以以片段标识符的形式附加额外的信息。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

URI依赖

推荐 (测试套件所必需的)

Test-Fatal-0.017, Test-Needs-0.002010, 和 Test-Warnings-0.031

可选

Business-ISBN-3.007

安装URI

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

XML::LibXML::Simple-1.01

简介XML::LibXML::Simple

XML::LibXML::Simple模块是对XML::Simple的重写,以便对XML结构使用XML::LibXML解析器,而不是普通的Perl或SAX解析器。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

XML::LibXML::Simple依赖

必要

XML-LibXML-2.0208

安装XML::LibXML::Simple

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

XML::LibXSLT-2.002001

简介XML::LibXSLT

XML-LibXSLT提供了一个接口到libxslt-1.1.37

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

XML::LibXSLT依赖

必要

libxslt-1.1.37, XML-LibXML-2.0208

安装XML::LibXSLT

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

XML::Simple-2.25

简介XML::Simple

XML::Simple提供了一个简单的API来读写XML(尤其是配置文件)。它被弃用并且不鼓励使用。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

XML::Simple依赖

可选

XML-SAX-1.02 (如果可用,将使用另一个解析器,否则将使用安装在LFS中的XML::Parser),

安装XML::Simple

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

XML::Writer-0.900

简介XML::Writer

XML::Writer提供了用于编写XML文档的Perl扩展。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装XML::Writer

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

CPAN自动安装perl模块

Perl模块的自动安装

还有一种安装模块的替代方法,使用cpan shell install命令。该命令自动从CPAN存档中下载模块的最新源代码,以及上游列出的任何缺少的先决条件模块。然后对每个模块进行提取、编译、测试和安装。

在运行自动安装方法之前,您仍然需要安装任何非perl依赖项。您可能希望在安装后清理build/目录,以释放空间。如果提到了任何安装后操作,例如创建符号链接,您也应该执行这些操作。

第一次运行cpan时,系统会提示您输入一些有关下载位置和方法的信息。这些信息保存在位于~/.cpan目录下的文件中。

特别是,您可能希望配置它,以便将Sudo-1.9.13p1用于安装,从而允许您作为普通用户进行构建和测试。下面的例子没有使用这种方法。

启动cpan shell,以root用户发出’cpan‘。现在,任何模块都可以从cpan>提示符中安装,使用以下命令:

install <Module::Name>

对于其他命令和帮助,从cpan>提示符中发出’help‘。

另外,对于脚本或非交互式安装,使用以下语法作为root用户安装一个或多个模块:

cpan -i <Module1::Name> <Module2::Name>

查看cpan.1手册页,了解可以在命令行上传递给cpan的其他参数。

13.20 Perl Module依赖


只有其他模块需要的Perl模块

上一页的模块是从BLFS中的其他页面引用的,但是这些模块在书中只是作为那些模块的依赖项。如果您使用CPAN安装方式,则不需要阅读此页。

BLFS编辑对这些模块的关注要少得多,而且版本也不会被定期审查。在所有情况下,只列出所需或推荐的依赖项——可能有其他模块允许运行更多的测试,但忽略它们仍然允许测试PASS

注意

本页上的链接(到metacpan.org)应该指向“已知的好”版本,它们的依赖关系是正确的。如果您希望使用更高的版本,请检查https://metacpan.org上的改变文件-有时会列出添加的依赖项,有时则不会。其中一些模块有非常频繁的更新,经常带来不同的依赖。下面链接的metacpan.org版本在上次审查时已知与BLFS中的模块版本一起工作。

但是,如果您注意到更新版本的Changes文件报告了对安全问题的修复,请将此报告到blfs-dev或blfs-support列表。

类似地,如果你发现上一页的更新模块需要额外的依赖项,请报告。

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/perl-modules

Algorithm::Diff-1.201

简介Algorithm::Diff

Algorithm::Diff计算两个文件或列表之间的“智能”差异。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Algorithm::Diff

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Alien::Build-2.77

简介Alien::Build

Alien::Build提供了为CPAN构建外部(非CPAN)依赖的工具。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Alien::Build依赖

必要

Capture-Tiny-0.48, File-Which-1.27, FFI-CheckLib-0.31File-chdir-0.1011

安装Alien::Build

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Alien::Build::Plugin::Download::GitLab-0.01

简介Alien::Build::Plugin::Download::GitLab

Alien::Build::Plugin::Download::GitLab允许Alien::Build从GitLab下载(实际上,如果系统上已经安装了所需的库,则不会下载)。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Alien::Build::Plugin::Download::GitLab依赖

必要

Alien-Build-2.77URI-5.17

安装Alien::Build::Plugin::Download::GitLab

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Alien::Libxml2-0.19

简介Alien::Libxml2

Alien::Libxml2被设计成允许模块在系统上安装C libxml2库。在BLFS中,它使用pkg-config来查找如何链接到已安装的libxml2-2.10.3

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Alien::Libxml2依赖

必要

Alien-Build-Plugin-Download-GitLab-0.01, libxml2-2.10.3, Path-Tiny-0.144

推荐 (测试套件所必需的)

Test2-Suite-0.000145

安装Alien::Libxml2

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

B::COW-0.007

简介B::COW

B::COW为B核心模块提供了额外的帮助来检查Copy On Write。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装B::COW

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

B::Hooks::EndOfScope-0.26

简介B::Hooks::EndOfScope

B::Hooks::EndOfScope允许您在perl完成编译周围作用域时执行代码。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

B::Hooks::EndOfScope依赖

必要

Module-Implementation-0.09, Sub-Exporter-Progressive-0.001013Variable-Magic-0.63

推荐 (测试套件所必需的)

Try-Tiny-0.31

安装B::Hooks::EndOfScope

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Business::ISBN::Data-20210112.006

简介Business-ISBN-Data

Business-ISBN-Data是Business::ISBN的数据包。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Business-ISBN-Data

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Capture::Tiny-0.48

简介Capture::Tiny

Capture::Tiny模块从Perl、XS(外部子程序,即用C或C++编写)或外部程序捕获STDOUT和STDERR。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Capture::Tiny

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Class::Data::Inheritable-0.09

简介Class::Data::Inheritable

Class::Data::Inheritable用于创建类数据的accessor/mutators。也就是说,如果您希望将类作为一个整体存储(而不是单个对象)。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Class::Data::Inheritable

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Class::Inspector-1.36

简介Class::Inspector

Class::Inspector允许你获取关于已加载类的信息。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Class::Inspector

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Class::Singleton-1.6

简介Class::Singleton

Singleton描述了在任何系统中只能有一个实例的对象类,例如打印假脱机程序。这个模块实现了一个Singleton类,其他类可以从这个类派生出来。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Class::Singleton

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Class:Tiny-1.008

简介Class:Tiny

Class:Tiny提供了一个极简主义的class建设工具包。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Class:Tiny

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Clone-0.46

简介Clone

克隆递归地复制perl数据类型。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Clone依赖

推荐 (测试套件所必需的)

B-COW-0.007

安装Clone

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Config::AutoConf-0.320

简介Config::AutoConf

Config::AutoConf模块用纯perl实现了一些AutoConf宏(检测命令,检测库等)。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Config::AutoConf依赖

必要

Capture-Tiny-0.48, File-Slurper-0.014

安装Config::AutoConf

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

CPAN::Meta::Check-0.017

简介CPAN::Meta::Check

CPAN::Meta::Check验证是否存在CPAN::Meta对象中描述的需求。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装CPAN::Meta::Check

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

DateTime-1.59

简介DateTime

DateTime是perl的日期和时间对象。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

DateTime依赖

必要

DateTime-Locale-1.37, DateTime-TimeZone-2.57

推荐 (测试套件所必需的)

CPAN-Meta-Check-0.017, Test-Fatal-0.017, Test-Warnings-0.031Test-Without-Module-0.21

安装DateTime

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

DateTime::Format::Strptime-1.79

简介DateTime::Format::Strptime

DateTime::Format::Strptime实现了strptime(3)的大部分,即它接受一个字符串和一个模式并返回一个DateTime对象。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

DateTime::Format::Strptime依赖

必要

DateTime-1.59

安装DateTime::Format::Strptime

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

DateTime::Locale-1.37

简介DateTime::Locale

DateTime::Locale为DateTime-1.59提供本地化支持。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

DateTime::Locale依赖

必要

Dist-CheckConflicts-0.11, File-ShareDir-1.118, namespace-autoclean-0.29Params-ValidationCompiler-0.31

推荐 (测试套件所必需的)

CPAN-Meta-Check-0.017, IPC-System-Simple-1.30Test-File-ShareDir-1.001002

安装DateTime::Locale

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

DateTime::TimeZone-2.57

简介DateTime::TimeZone

这个类是所有时区对象的基类。时区在内部表示为一组惯例,每个惯例描述给定时间段内与GMT的偏移量。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

DateTime::TimeZone依赖

必要

Class-Singleton-1.6, Module-Runtime-0.016, 和 Params-ValidationCompiler-0.31, 也

推荐 (测试套件所必需的)

Both Test-Fatal-0.017Test-Requires-0.11, 但前提是已经安装了DateTime-1.59的副本(这是一个依赖项)。

安装DateTime::TimeZone

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Devel::StackTrace-2.04

简介Devel::StackTrace

Devel::StackTrace提供了一个表示堆栈跟踪的对象。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Devel::StackTrace

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Dist::CheckConflicts-0.11

简介Dist::CheckConflicts

Dist::CheckConflicts声明发行版的版本冲突,以支持依赖发行版的安装后更新。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Dist::CheckConflicts依赖

必要

Module-Runtime-0.016

推荐 (测试套件所必需的)

Test-Fatal-0.017

安装Dist::CheckConflicts

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Encode::Locale-1.05

简介Encode::Locale

Encode::Locale确定区域编码。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Encode::Locale

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Eval::Closure-0.14

简介Eval::Closure

Eval::Closure通过字符串eval安全干净地创建闭包。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Eval::Closure依赖

推荐 (测试套件所必需的)

Test-Fatal-0.017, Test-Requires-0.11

安装Eval::Closure

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Exception::Class-1.45

简介Exception::Class

Exception::Class允许您在Perl中声明真正的异常类。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Exception::Class依赖

必要

Class-Data-Inheritable-0.09, Devel-StackTrace-2.04

安装Exception::Class

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Exporter::Tiny-1.006000

简介Exporter::Tiny

Exporter::Tiny是一个导出器,具有Sub::Exporter的特性,但只有核心依赖项。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Exporter::Tiny

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

ExtUtils::LibBuilder-0.08

简介ExtUtils::LibBuilder

ExtUtils::LibBuilder是一个构建C库的工具。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

ExtUtils::LibBuilder依赖

必要

Module-Build-0.4232

安装ExtUtils::LibBuilder

这个模块是使用Build.PL构建的:

perl Build.PL &&
./Build       &&
./Build test

现在,作为root用户:

./Build install

FFI::CheckLib-0.31

简介FFI::CheckLib

FFI::CheckLib检查一个特定的动态库是否可供FFI(外部函数接口)使用。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

FFI::CheckLib依赖

推荐 (测试套件所必需的)

Capture-Tiny-0.48, Path-Tiny-0.144, Test2-Suite-0.000145

安装FFI::CheckLib

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

File::chdir-0.1011

简介File::chdir

File::chdir提供了一种更合理的方式来更改目录。

Perl的chdir()具有非常、非常、非常全局的不幸问题。如果您的程序的任何部分调用chdir(),或者如果您使用的任何库调用chdir(),它将更改整个程序的当前工作目录。File::chdir为您提供了另一个选择,$CWD和@CWD。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装File::chdir

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

File::Copy::Recursive-0.45

简介File::Copy::Recursive

该模块将目录(或单个文件)递归地复制和移动到可选的深度,并尝试保留每个文件或目录的模式。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

File::Copy::Recursive依赖

推荐 (测试套件所必需的)

Path-Tiny-0.144, Test-Deep-1.204, Test-Fatal-0.017, Test-File-1.993Test-Warnings-0.031

安装File::Copy::Recursive

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

File::Find::Rule-0.34

简介File::Find::Rule

File::Find::Rule是File::Find的更友好的接口。它允许您构建指定所需文件和目录的规则。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

File::Find::Rule依赖

必要

Number-Compare-0.03, Text-Glob-0.11

安装File::Find::Rule

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

内容

安装程序: findrule

简要描述

findrule 是File::Find::Rule的命令行包装器。

File::Listing-6.15

简介File::Listing

File::Listing解析目录列表。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

File::Listing依赖

必要

HTTP-Date-6.05,

安装File::Listing

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

File::ShareDir-1.118

简介File::ShareDir

通过File::ShareDir访问已通过File::ShareDir::Install安装的数据文件。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

File::ShareDir依赖

必要

Class-Inspector-1.36, File-ShareDir-Install-0.14

安装File::ShareDir

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

File::ShareDir::Install-0.14

简介File::ShareDir::Install

File::ShareDir::Install允许您从发行版中安装只读数据文件。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装File::ShareDir::Install

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

HTML::Tagset-3.20

简介HTML::Tagset

HTML::Tagset提供了几个对解析HTML有用的数据表。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装HTML::Tagset

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

HTTP::Cookies-6.10

简介HTTP::Cookies

HTTP::Cookies为代表“cookie jar”的对象提供了一个类——也就是说,一个给定LWP::UserAgent (来自libwww-perl-6.67)对象所知道的所有HTTP Cookies的数据库。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

HTTP::Cookies依赖

必要

HTTP-Message-6.44

安装HTTP::Cookies

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

HTTP::Date-6.05

简介HTTP::Date

HTTP::Date提供了处理HTTP协议使用的日期格式和其他一些日期格式的函数。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

HTTP::Date依赖

推荐

TimeDate-2.33 (允许它识别GMT和数字以外的区域)

安装HTTP::Date

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

HTTP::Message-6.44

简介HTTP::Message

HTTP::Message为HTTP样式消息对象提供了基类。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

HTTP::Message依赖

必要

Clone-0.46, Encode-Locale-1.05, HTTP-Date-6.05, IO-HTML-1.004, LWP-MediaTypes-6.04URI-5.17

推荐 (测试套件所必需的)

Test-Needs-0.002010, Try-Tiny-0.31

安装HTTP::Message

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

HTTP::Negotiate-6.01

简介HTTP::Negotiate

HTTP::Negotiate提供了HTTP内容协商算法的完整实现。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

HTTP::Negotiate依赖

推荐 (测试套件所必需的)

HTTP-Message-6.44

安装HTTP::Negotiate

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Importer-0.026

简介Importer

Importer为导出符号的模块提供了一个可选但兼容的接口。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Importer

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

IO::HTML-1.004

简介IO::HTML

IO::HTML打开具有自动字符集检测的HTML文件。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装IO::HTML

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

IPC::System::Simple-1.30

简介IPC::System::Simple

IPC::System::Simple免去了调用外部命令和生成详细诊断的繁重工作。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装IPC::System::Simple

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

List::MoreUtils::XS-0.430

简介List::MoreUtils::XS

List::MoreUtils::XS是List::MoreUtils的编译后端。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装List::MoreUtils::XS

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

List::SomeUtils-0.59

简介List::SomeUtils

List::SomeUtils提供了List::Util中缺少的东西。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

List::SomeUtils依赖

必要

Module-Implementation-0.09, List-SomeUtils-XS-0.58

安装List::SomeUtils

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

List::SomeUtils::XS-0.58

简介List::SomeUtils::XS

List::SomeUtils::XS是List::SomeUtils的(更快的)XS(外部子程序)实现。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

List::SomeUtils::XS依赖

推荐 (测试套件所必需的)

Test-LeakTrace-0.17, Test-Warnings-0.031

安装List::SomeUtils::XS

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

List::UtilsBy-0.12

简介List::UtilsBy

List::UtilsBy提供了许多高阶列表实用函数。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装List::UtilsBy

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

LWP::MediaTypes-6.04

简介LWP::MediaTypes

LWP::MediaTypes猜测文件或URL的媒体类型(即MIME类型)。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

LWP::MediaTypes依赖

推荐 (测试套件所必需的)

Test-Fatal-0.017

安装LWP::MediaTypes

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

MIME::Charset-1.013.1

简介MIME::Charset

MIME::Charset提供了关于因特网上MIME消息使用的字符集的信息,比如它们的编码。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

MIME::Charset依赖

推荐

Encode-EUCJPASCII-0.03, Encode-HanExtra-0.23Encode-JIS2K-0.03 (因为所有这些都是 biber-2.18 所要求的)

安装MIME::Charset

这个模块使用标准构建和安装指令的一个变体:

yes '' | perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

命令解释

**yes **: Perl将询问您是否希望安装另一个模块来处理遗留的日语编码,以及另一个用于将文档翻译成日语的模块。默认选项是’n’,使用’yes’允许您编写构建脚本。

Module::Implementation-0.09

简介Module::Implementation

Module::Implementation加载模块的几个备选底层实现之一(例如外部子例程或纯Perl,或给定操作系统的实现)。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Module::Implementation依赖

必要

Module-Runtime-0.016, Try-Tiny-0.31

推荐 (测试套件所必需的)

Test-Fatal-0.017, Test-Requires-0.11

安装Module::Implementation

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Module::Pluggable-5.2

简介Module::Pluggable

Module::Pluggable提供了一种为你的模块拥有“插件”的方式。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Module::Pluggable

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Module::Runtime-0.016

简介Module::Runtime

Module::Runtime提供了处理Perl模块运行时处理的函数。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Module::Runtime

虽然Module::Build仍然被列为先决条件,但它在具有工作make的系统上不再是必需的。

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

MRO::Compat-0.15

简介MRO::Compat

在Perl 5.9.5及更高版本中,“mro”名称空间提供了几个实用程序,用于处理方法解析顺序和方法缓存。这个模块为早期版本的Perl提供了这些接口。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装MRO::Compat

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

namespace::autoclean-0.29

简介namespace::autoclean

这个模块与namespace::clean非常相似,不同之处在于它将清除所有导入的函数,无论您是在使用pragma之前还是之后导入它们。它也不会接触任何看起来像方法的东西。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

namespace::autoclean依赖

必要

namespace-clean-0.27, Sub-Identify-0.14

推荐 (测试套件所必需的)

Test-Needs-0.002010

安装namespace::autoclean

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

namespace::clean-0.27

简介namespace::clean

这个包允许您将导入和函数保留在名称空间之外。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

namespace::clean依赖

必要

B-Hooks-EndOfScope-0.26, Package-Stash-0.40

安装namespace::clean

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Net::HTTP-6.22

简介Net::HTTP

Net::HTTP类是一个低级HTTP客户端。类的实例表示到HTTP服务器的连接。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Net::HTTP依赖

必要

URI-5.17

安装Net::HTTP

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Net::SSLeay-1.92

简介Net::SSLeay

Net::SSLeay是使用OpenSSL的PERL扩展。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Net::SSLeay

注意

如果启用外部测试,则t/external/15_altnames.t中的一个测试可能会失败。

这个模块使用标准构建和安装指令的一个变体:

yes '' | perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

命令解释

yes ‘‘: Perl将询问您是否希望运行外部测试,如果没有网络连接,测试将失败。默认值是’n’,指定此值允许您编写构建脚本。

Number::Compare-0.03

简介Number::Compare

Number::Compare将一个简单的比较编译到一个匿名子例程,您可以使用要测试的值调用该子例程。它可以理解IEC标准的大小(k, ki, m, mi, g, gi)。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Number::Compare

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Package::Stash-0.40

简介Package::Stash

操作存储库(Perl的符号表)偶尔是必要的,但是非常混乱,而且很容易出错。这个模块将所有这些隐藏在一个简单的API后面。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Package::Stash依赖

必要

Dist-CheckConflicts-0.11, Module-Implementation-0.09

推荐 (测试套件所必需的)

CPAN-Meta-Check-0.017, Test-Fatal-0.017, Test-Needs-0.002010

安装Package::Stash

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Params::Validate-1.31

简介Params::Validate

Params::Validate允许您将方法或函数调用参数验证到任意级别的特异性。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Params::Validate依赖

必要

Module-Build-0.4232, Module-Implementation-0.09

推荐 (测试套件所必需的)

Test-Fatal-0.017, Test-Requires-0.11

安装Params::Validate

这个模块是使用Build.PL构建的:

perl Build.PL &&
./Build       &&
./Build test

现在,作为root用户:

./Build install

Params::ValidationCompiler-0.31

简介Params::ValidationCompiler

Params::ValidationCompiler构建一个优化的子例程参数验证器。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Params::ValidationCompiler依赖

必要

Exception-Class-1.45, Specio-0.48

推荐 (测试套件所必需的)

Test-Without-Module-0.21, Test2-Plugin-NoWarnings-0.09

安装Params::ValidationCompiler

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Path::Tiny-0.144

简介Path::Tiny

Path::Tiny提供了一个用于处理文件路径的小型快速实用程序。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Path::Tiny

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Role::Tiny-2.002004

简介Role::Tiny

Role::Tiny是一个极简主义的角色合成工具。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Role::Tiny

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Scope::Guard-0.21

简介Scope::Guard

Scope::Guard提供了一种在作用域结束时执行清理或其他形式的资源管理的方便方法。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Scope::Guard

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Specio-0.48

简介Specio

Specio提供了表示类型约束和强制转换的类,以及声明它们的语法sugar。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Specio依赖

必要

Devel-StackTrace-2.04, Eval-Closure-0.14, Module-Runtime-0.016, Role-Tiny-2.002004, Sub-Quote-2.006008Try-Tiny-0.31

推荐 (测试套件所必需的)

MRO-Compat-0.15, Test-Fatal-0.017Test-Needs-0.002010

可选

namespace-autoclean-0.29 (用于测试套件)

安装Specio

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Sub::Exporter::Progressive-0.001013

简介Sub::Exporter::Progressive

Sub::Exporter::Progressive是Sub::Exporter的包装器。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Sub::Exporter::Progressive

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Sub::Identify-0.14

简介Sub::Identify

Sub::Identify允许您检索代码引用的真实名称。如果可能的话,建议迁移到Sub::Util(一个核心模块)。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Sub::Identify

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Sub::Info-0.002

简介Sub::Info

Sub::Info是检查子例程的工具。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Sub::Info依赖

必要

Importer-0.026

安装Sub::Info

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Sub::Quote-2.006008

简介Sub::Quote

Sub::Quote提供了从字符串生成子例程的方法。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Sub::Quote

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Sub::Uplevel-0.2800

简介Sub::Uplevel

Sub::Uplevel允许您欺骗调用者,使其在更高的堆栈帧中运行。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Sub::Uplevel

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

SUPER-1.20190531

简介SUPER

SUPER提供了更简单的方法来将控制分派给超类(当子类化一个类时)。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

SUPER依赖

推荐 (测试套件所必需的)

Sub-Identify-0.14

安装SUPER

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Term::Table-0.016

简介Term::Table

Term::Table将标题和行格式化为表。一些失败的测试使用它来提供关于错误的诊断。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Term::Table依赖

必要

Importer-0.026

安装Term::Table

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Test::Deep-1.204

简介Test::Deep

Test::Deep为您提供了非常灵活的方法来检查您得到的结果是否是您所期望的结果。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Test::Deep

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Test::Exception-0.43

简介Test::Exception

Test::Exception为测试基于异常的代码提供了方便的方法。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Test::Exception依赖

必要

Sub-Uplevel-0.2800

安装Test::Exception

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Test::Fatal-0.017

简介Test::Fatal

Test::Fatal模块为测试抛出异常的代码提供了简单的帮助。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Test::Fatal依赖

必要

Try-Tiny-0.31

安装Test::Fatal

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Test::File-1.993

简介Test::File

Test::File为文件属性提供了一组测试实用程序。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Test::File依赖

推荐 (测试套件所必需的)

Test-utf8-1.02

安装Test::File

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Test::File::ShareDir-1.001002

简介Test::File::ShareDir

Test::File::ShareDir是一些低级管道,它使发行版能够在使用自己的共享目录时执行测试,其方式与安装后的方式类似。这允许File-ShareDir-1.118查看最新版本的内容,而不是您正在测试的目标系统上安装的内容。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Test::File::ShareDir依赖

必要

Class-Tiny-1.008, File-Copy-Recursive-0.45, File-ShareDir-1.118, Path-Tiny-0.144Scope-Guard-0.21

推荐 (测试套件所必需的)

Test-Fatal-0.017

安装Test::File::ShareDir

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Test::LeakTrace-0.17

简介Test::LeakTrace

Test::LeakTrace跟踪内存泄漏。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Test::LeakTrace

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Test::MockModule-v0.176.0

简介Test::MockModule

Test::MockModule允许您临时重新定义其他包中的子例程,以便进行单元测试。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Test::MockModule依赖

必要

Module-Build-0.4232, SUPER-1.20190531

推荐 (测试套件所必需的)

Test-Warnings-0.031

安装Test::MockModule

这个模块是使用Build.PL构建的:

perl Build.PL &&
./Build       &&
./Build test

现在,作为root用户:

./Build install

Test::Needs-0.002010

简介Test::Needs

如果请求的模块不存在,Test::Needs将跳过测试。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Test::Needs

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Test::Requires-0.11

简介Test::Requires

Test::Requires模块检查是否可以加载另一个(可选的)模块,如果不能,它会跳过所有当前的测试。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Test::Requires

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Test::RequiresInternet-0.05

简介Test::RequiresInternet

Test::RequiresInternet旨在在对非本地Internet资源进行功能测试之前,方便地测试网络连通性。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Test::RequiresInternet

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Test::utf8-1.02

简介Test::utf8

Test::utf8是一个用于在Perl中处理utf8字符串的测试集合。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Test::utf8

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Test::Warnings-0.031

简介Test::Warnings

Test::Warnings测试是否有警告和是否有警告。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Test::Warnings

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Test::Without::Module-0.21

简介Test::Without::Module

这个模块允许你故意对程序隐藏模块,即使它们已经安装。这对于测试在没有安装某个依赖模块时有回退的模块非常有用。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Test::Without::Module

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Test2::Plugin::NoWarnings-0.09

简介Test2::Plugin::NoWarnings

Test2::Plugin::NoWarnings会导致测试在运行时出现任何警告而失败。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Test2::Plugin::NoWarnings依赖

必要

Test2-Suite-0.000145

推荐 (测试套件所必需的)

IPC-Run3-0.048

安装Test2::Plugin::NoWarnings

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Test2::Suite-0.000145

简介Test2::Suite

Test2::Suite是一个基于Test2框架构建的具有丰富工具集的发行版。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Test2::Suite依赖

必要

Module-Pluggable-5.2, Scope-Guard-0.21, Sub-Info-0.002Term-Table-0.016

安装Test2::Suite

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Text::CSV_XS-1.49

简介Text::CSV_XS

Text::CSV_XS提供了组合和分解逗号分隔值的功能。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Text::CSV_XS

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Text::Diff-1.45

简介Text::Diff

Text::Diff对文件和记录集执行diffs。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Text::Diff依赖

必要

Algorithm-Diff-1.201

安装Text::Diff

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Text::Glob-0.11

简介Text::Glob

Text::Glob实现了Glob(3)风格匹配,可用于对文本进行匹配,而不是从文件系统中获取名称。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Text::Glob

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Tie::Cycle-1.227

简介Tie::Cycle

您可以使用Tie::Cycle一遍又一遍地浏览列表。一旦你到达列表的末尾,你就会回到开头。你不必担心这些,因为tie的魔力会帮你做到这一点。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Tie::Cycle

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

TimeDate-2.33

简介TimeDate

TimeDate提供了各种时区操作例程。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装TimeDate

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Try::Tiny-0.31

简介Try::Tiny

Try::Tiny提供了Trycatch来预测和处理异常条件,避免Perl中的怪癖和常见错误。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Try::Tiny依赖

可选 (可以被测试套件使用)

Capture-Tiny-0.48

安装Try::Tiny

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

Variable::Magic-0.63

简介Variable::Magic

Magic是Perl增强变量的一种方式。使用这个模块,您可以将自己的magic添加到任何变量中。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Variable::Magic

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

WWW::RobotRules-6.02

简介WWW::RobotRules

WWW::RobotRules解析robots.txt文件,创建一个WWW::RobotRules对象,其中包含检查是否禁止访问给定URL的方法。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

WWW::RobotRules依赖

必要 (运行时)

libwww-perl-6.67 (先安装这个模块,然后再安装那个模块)

安装WWW::RobotRules

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

XML::LibXML-2.0208

简介XML::LibXML

XML::LibXML是一个perl绑定 libxml2-2.10.3.

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

XML::LibXML依赖

必要

Alien-Libxml2-0.19, XML-SAX-1.02

安装XML::LibXML

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

XML::NamespaceSupport-1.12

简介XML::NamespaceSupport

XML::NamespaceSupport提供了一种简单的方法,可以在任何可能需要名称空间的应用程序中处理它们。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装XML::NamespaceSupport

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

XML::SAX-1.02

简介XML::SAX

XML::SAX是用于Perl的SAX解析器访问API。它包括实现SAX驱动程序所需的类和api,以及用于返回用户系统上安装的任何SAX解析器的工厂类。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

XML::SAX依赖

必要

libxml2-2.10.3, XML-NamespaceSupport-1.12XML-SAX-Base-1.09

安装XML::SAX

这个模块使用标准构建和安装指令的一个变体:

yes | perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

命令解释

yes: Perl将询问您是否需要修改ParserDetails.ini,然后等待响应。默认值是y。使用yes允许你编写脚本。

XML::SAX::Base-1.09

简介XML::SAX::Base

这个模块有一个非常简单的任务——成为PerlSAX驱动程序和过滤器的基类。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装XML::SAX-Base

该模块使用标准的构建和安装说明:

perl Makefile.PL &&
make             &&
make test

现在,作为root用户:

make install

13.21 PHP-8.2.3


简介PHP

PHP是PHP超文本预处理器。它主要用于动态web站点,允许将编程代码直接嵌入到HTML标记中。作为一种通用脚本语言,它也很有用。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

额外下载

PHP依赖

推荐

Apache-2.4.55libxml2-2.10.3

可选的系统实用程序和库

Aspell-0.60.8, enchant-2.3.3, libxslt-1.1.37, MTA (它提供了一个sendmail命令), pcre2-10.42, Pth-2.0.7, AppArmor, Dmalloc, Net-SNMP, oniguruma, OSSP mm, re2c, 和 XMLRPC-EPI

可选的图形工具和库

FreeType-2.13.0, libexif-0.6.24, libjpeg-turbo-2.1.5.1, libpng-1.6.39, libtiff-4.5.0, libwebp-1.3.0, a graphical environment, FDF Toolkit, GD, 和 t1lib

可选Web工具

cURL-7.88.1, tidy-html5-5.8.0, Caudium, Hyperwave, Roxen WebServer, 和 WDDX

可选的数据管理工具和库

Berkeley DB-5.3.28 (请注意,PHP官方不支持5.3以上版本), libiodbc-3.52.15, lmdb-0.9.29, MariaDB-10.6.12MySQL, OpenLDAP-2.6.4, PostgreSQL-15.2, SQLite-3.40.1, unixODBC-2.3.11, Adabas, Birdstep, cdb, DBMaker, Empress, FrontBase, IBM DB2, Mini SQL, Monetra, 和 QDBM

PHP还支持许多商业数据库工具,如Oracle, SAP和ODBC路由器。

可选的安全/加密工具和库

Cyrus SASL-2.1.28, MIT Kerberos V5-1.20.1, libmcrypt, 和 mhash

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/php

安装PHP

可以将PHP用于服务器端脚本、命令行脚本或客户端GUI应用程序。本书提供了为服务器端脚本设置PHP的说明,因为它是最常见的形式。

注意

PHP有更多的configure选项来支持各种功能。你可以使用./configure –help查看可用选项的完整列表。另外,强烈推荐使用PHP网站,因为他们的在线文档非常好。一个利用许多最常见依赖项的configure命令的例子可以在https://anduin.linuxfromscratch.org/BLFS/files/php_configure.txt找到。

如果出于某种原因,你没有安装libxml2-2.10.3,你需要在下面的说明中的configure命令中添加--disable-libxml。注意,这将阻止编译pear命令。

运行以下命令安装PHP:

./configure --prefix=/usr                \
            --sysconfdir=/etc            \
            --localstatedir=/var         \
            --datadir=/usr/share/php     \
            --mandir=/usr/share/man      \
            --enable-fpm                 \
            --without-pear               \
            --with-fpm-user=apache       \
            --with-fpm-group=apache      \
            --with-fpm-systemd           \
            --with-config-file-path=/etc \
            --with-zlib                  \
            --enable-bcmath              \
            --with-bz2                   \
            --enable-calendar            \
            --enable-dba=shared          \
            --with-gdbm                  \
            --with-gmp                   \
            --enable-ftp                 \
            --with-gettext               \
            --enable-mbstring            \
            --disable-mbregex            \
            --with-readline              &&
make
要测试结果,执行: make test. 有几个测试(超过16000个测试)可能会失败,在这种情况下,您将被询问是否要将报告发送给PHP开发人员。如果你想自动化测试,可以在命令前加上**yes “n” **。

现在,作为root用户:

make install                                     &&
install -v -m644 php.ini-production /etc/php.ini &&

install -v -m755 -d /usr/share/doc/php-8.2.3 &&
install -v -m644    CODING_STANDARDS* EXTENSIONS NEWS README* UPGRADING* \
                    /usr/share/doc/php-8.2.3

fastCGI进程管理器的默认配置文件只有在系统中不存在时才会被安装。如果这是第一次安装,它们应该被重命名为root用户:

if [ -f /etc/php-fpm.conf.default ]; then
  mv -v /etc/php-fpm.conf{.default,} &&
  mv -v /etc/php-fpm.d/www.conf{.default,}
fi

预构建的HTML文档以两种形式打包:一个包含许多独立文件的压缩包,用于快速加载到浏览器中,以及一个大型独立文件,用于使用浏览器的搜索功能。如果你下载了其中一个或两个文档文件,以root用户身份发出以下命令来安装它们(注意,这些说明假设是英文文档,如果需要,请修改下面的tarball名称)。

对于“单个HTML”文件:

install -v -m644 ../php_manual_en.html.gz \
    /usr/share/doc/php-8.2.3 &&
gunzip -v /usr/share/doc/php-8.2.3/php_manual_en.html.gz

对于“许多HTML文件”的压缩包:

tar -xvf ../php_manual_en.tar.gz \
    -C /usr/share/doc/php-8.2.3 --no-same-owner

没有安装打包的pear是因为有一个bug,可能会有几个隐藏的文件和目录污染文件系统。如果需要pear,执行以下命令来安装它:

wget https://pear.php.net/go-pear.phar
php ./go-pear.phar

命令解释

--datadir=/usr/share/php: 这可以解决构建机制中的一个bug,该bug会将一些数据安装到错误的位置。

--enable-fpm: 此参数允许构建fastCGI进程管理器。

--with-fpm-systemd: 这个参数允许FastCGI进程管理器与systemd集成。

--without-pear: 这个开关禁止安装捆绑的pear软件。

--with-config-file-path=/etc: 此参数使PHP在/etc中查找php.ini配置文件。

--with-zlib: 这个参数增加了对Zlib压缩的支持。

--enable-bcmath: 启用bc风格的精确数学函数。

--with-bz2: 增加对Bzip2压缩函数的支持。

--enable-calendar: 此参数支持日历转换。

--enable-dba=shared: 此参数启用对数据库(dbm风格)抽象层功能的支持。

--enable-ftp: 启用FTP功能。

--with-gettext: 启用使用Gettext文本翻译的函数。

--enable-mbstring: 此参数启用多字节字符串支持。

--with-readline: 该参数使能命令行Readline支持。

--disable-libxml: 此选项允许在不安装libxml2的情况下构建PHP。

--with-apxs2: 我们可以构建一个apache模块,而不是构建fastCGI进程管理器。这对于重负载的服务器会有一些性能损失,但可能更容易设置。这个开关不兼容--enable-fpm--with-fpm-...的开关。

--with-mysqli=shared: 这个选项包括MySQLi支持。

--with-mysql-sock=/run/mysqld/mysqld.sock: MySQL unix套接字指针的位置。

--with-pdo-mysql=shared: 这个选项包括PDO: MySQL支持。

--with-tidy=shared: 这个选项包括简洁的库支持。

配置PHP

配置文件

/etc/php.ini, /etc/pear.conf, /etc/php-fpm.conf, 和 /etc/php-fpm.d/www.conf

配置信息

PHP开发团队推荐使用默认的/etc/php.ini配置文件。这个文件修改PHP的默认行为。如果没有使用/etc/php.ini,则所有配置都将使用默认设置。您应该检查此文件中的注释,并确保更改在您的特定环境中是可接受的。

fastCGI进程管理器使用配置文件/etc/php-fpm.conf。PHP附带的默认文件依次包含所有的/etc/php-fpm.d/*.conf文件。有一个附带的/etc/php-fpm.d/www.conf文件,其中包含与Apache Web服务器交互相关的参数。

你可能已经注意到make install命令的输出如下:

You may want to add: /usr/lib/php to your php.ini include_path

如果需要,以root用户的身份使用以下命令添加条目:

sed -i 's@php/includes"@&\ninclude_path = ".:/usr/lib/php"@' \
    /etc/php.ini

要在Apache web服务器中启用fastCGI支持,必须在httpd.conf文件中添加两个LoadModule指令。它们被注释掉了,所以以root用户的身份执行以下命令:

sed -i -e '/proxy_module/s/^#//'      \
       -e '/proxy_fcgi_module/s/^#//' \
       /etc/httpd/httpd.conf

这些模块接受各种ProxyPass指令。一种可能是(作为root用户):

echo \
'ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/srv/www/$1' >> \
/etc/httpd/httpd.conf

此外,在httpd.conf文件的DirectoryIndex指令中添加一个index.php条目可能会很有用。最后,添加一行代码来设置.phps的扩展以显示突出显示的PHP源代码可能是可取的:

AddType application/x-httpd-php-source .phps

在对httpd.conf文件进行任何修改后,你需要重启Apache web服务器。

Systemd Unit

要在启动时启动php-fpm守护进程,请以root用户运行以下命令,从blfs-systemd-units-20220720包中安装systemd单元:

make install-php-fpm

内容

安装程序: phar (符号链接), phar.phar, php, php-cgi, php-config, php-fpm, phpdbg, 和 phpize

安装库: dba.so 和 opcache.so 在 /usr/lib/php/extensions/no-debug-non-zts-20220829

安装目录: /etc/php-fpm.d, /usr/{include,lib,share}/php, 和 /usr/share/doc/php-8.2.3

简要描述

php 是一个命令行接口,使您能够解析和执行PHP代码。

pear 是PHP扩展和应用程序存储库(PEAR)包管理器。默认情况下没有安装。

php-fpm 是PHP的fastCGI进程管理器。

phpdbg 是交互式PHP调试器。

13.22 Python-2.7.18


简介Python 2

Python 2包包含Python开发环境。它对于面向对象编程、编写脚本、原型设计大型程序或开发整个应用程序都很有用。这个版本是为了与其他依赖包向后兼容。

注意

Python2已被上游开发人员弃用。对Python2的支持于2020年1月1日停止。

BLFS试图尽可能地使用Python3,但有些包还没有更新以支持Python3。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

额外下载

Python 2依赖

推荐

SQLite-3.40.1 (对于额外的模块)

可选

BlueZ-5.66Valgrind-3.20.0

可选 (查看更多附加模块)

libnsl-2.0.0Tk-8.6.13

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/Python

安装Python 2

首先,禁止安装覆盖最新脚本的脚本:

sed -i '/2to3/d' ./setup.py

运行以下命令安装Python 2:

patch -Np1 -i ../Python-2.7.18-security_fixes-1.patch &&
./configure --prefix=/usr                              \
            --enable-shared                            \
            --with-system-expat                        \
            --with-system-ffi                          \
            --enable-unicode=ucs4                     &&
make

如果调用测试,它们将运行两次。要测试结果,执行: make -k test. 已知有几个测试会失败,包括test_ftplib, test_ssl, test_urllib2_localnet, test_xml_etree, test_xml_etree_c, 和 test_minidom。这些失败是OpenSSL-3和Expat-2.4.6导致的。

现在,作为root用户:

make altinstall                                &&
ln -s python2.7        /usr/bin/python2        &&
ln -s python2.7-config /usr/bin/python2-config &&
chmod -v 755 /usr/lib/libpython2.7.so.1.0

由于Python 2处于维护模式,而upstream推荐Python 3用于开发,因此您可能不需要安装文档。但是,如果你仍然想要安装两个Python版本的文档,请确保为你想使用的版本定义PYTHONDOCS变量,每次需要查看文档时。如果你已经从https://docs.python.org/download.html下载了预格式化文档,请以root用户身份安装:

install -v -dm755 /usr/share/doc/python-2.7.18 &&

tar --strip-components=1                     \
    --no-same-owner                          \
    --directory /usr/share/doc/python-2.7.18 \
    -xvf ../python-2.7.18-docs-html.tar.bz2 &&

find /usr/share/doc/python-2.7.18 -type d -exec chmod 0755 {} \; &&
find /usr/share/doc/python-2.7.18 -type f -exec chmod 0644 {} \;

命令解释

--with-system-expat: 此开关启用针对Expat系统版本的链接。

--with-system-ffi: 该开关用于链接系统版本的libffi。

--enable-unicode=ucs4: 这个开关在Python中启用32位Unicode支持。

--with-ensurepip=yes : 这个开关可以用来构建pipsetuptools打包程序。构建一些Python模块需要setuptools。我们不推荐使用该选项,因为该版本的Python已不再维护。

--with-dbmliborder=bdb:gdbm:ndbm: 如果您想针对Berkeley DB而不是GDBM构建Python DBM模块,请使用此开关。

make altinstall: make target会忽略一些可能与Python 3干扰的默认符号链接。

chmod …: 修复库的权限与其他库的一致。

配置Python 2

为了让python找到安装的文档,你必须在用户或系统的配置文件中添加以下环境变量:

export PYTHONDOCS=/usr/share/doc/python-2.7.18

内容

安装程序: pydoc, python2 (符号链接), python2-config (符号链接), python2.7, python2.7-config, smtpd.py, 和 idle

安装库: libpython2.7.so

安装目录: /usr/{include,lib}/python2.7 和 /usr/share/doc/python-2.7.18

简要描述

idle 是一个包装器脚本,用于打开一个支持Python的GUI编辑器。为了运行这个脚本,您必须在Python之前安装Tk,以便构建Tkinter Python模块。

pydoc 是Python文档工具。

python2 是一种解释的、交互式的、面向对象的编程语言。

python2.7python程序特定于版本的名称。

smtpd.py 是用Python实现的SMTP代理。

13.23 Python-3.11.2


简介Python 3

Python 3包包含Python开发环境。这对于面向对象编程、编写脚本、原型设计大型程序或开发整个应用程序都很有用。

注意

在LFS中安装了Python 3。在这里重新构建它的唯一原因是如果需要可选模块,或升级此软件包。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

重要

如果升级到新的Python-3次要版本(例如,从Python-3.10.x到Python-3.11.0),你需要重新安装已安装的所有Python3模块。你还应该重新安装生成Python3模块的包,包括gobject-introspection-1.74.0, opencv-4.7.0, Graphviz-7.1.0(如果安装了swig)。

在升级之前,你可以使用pip3 list获取已安装模块的完整列表。

wheel模块和来自LFS的meson也必须重新安装: https://www.linuxfromscratch.org/lfs/view/development/chapter08/wheel.htmlhttps://www.linuxfromscratch.org/lfs/view/development/chapter08/meson.html.

在systemd系统上,还需要从LFS重新安装MarkupSafe和Jinja2模块: https://www.linuxfromscratch.org/lfs/view/systemd/chapter08/markupsafe.htmlhttps://www.linuxfromscratch.org/lfs/view/systemd/chapter08/jinja2.html.

包信息

额外可选下载

Python 3依赖

推荐

SQLite-3.40.1 (如果正在构建firefox或thunderbird,则需要)

可选

BlueZ-5.66, GDB-13.1 (一些测试需要), Valgrind-3.20.0, 和 libmpdec

可选 (For Additional Modules)

Berkeley DB-5.3.28, libnsl-2.0.0, 和 Tk-8.6.13

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/Python3

安装Python 3

运行以下命令安装Python 3:

CXX="/usr/bin/g++"               \
./configure --prefix=/usr        \
            --enable-shared      \
            --with-system-expat  \
            --with-system-ffi    \
            --enable-optimizations &&
make

要测试结果,请执行 make test. 有些测试可能需要互联网连接。已知有两个测试test_distutils和test_embed会失败。

现在,作为root用户:

make install

如果正在升级并且文档已经下载,可以选择以root用户安装:

install -v -dm755 /usr/share/doc/python-3.11.2/html

tar --strip-components=1  \
    --no-same-owner       \
    --no-same-permissions \
    -C /usr/share/doc/python-3.11.2/html \
    -xvf ../python-3.11.2-docs-html.tar.bz2

命令解释

CXX=”/usr/bin/g++” ./configure …: 避免配置过程中出现烦人的信息。

--with-system-expat: 此开关启用针对Expat系统版本的链接。

--with-system-ffi: 该开关允许链接到系统版本的libffi。

--with-dbmliborder=bdb:gdbm:ndbm: 如果您想针对Berkeley DB而不是GDBM构建Python DBM模块,请使用此开关。

--enable-optimizations: 这个切换可以实现稳定但昂贵的优化。

--with-lto: 此可选开关启用粗链路时间优化。不寻常的是,它创建了一个大得多的/usr/lib/python3.11/config-3.11-<arch>-linux-gnu/libpython3.11.a,编译Python的时间略有增加。运行时结果似乎没有显示这样做有任何好处。

配置Python 3

为了让python3找到安装的文档,请创建以下与版本无关的符号链接:

ln -svfn python-3.11.2 /usr/share/doc/python-3

并将以下环境变量添加到个人用户或系统的配置文件中:

export PYTHONDOCS=/usr/share/doc/python-3/html

内容

安装程序: 2to3 (符号链接) 和 2to3-3.11, idle3 (符号链接) 和 idle3.11, pip3 (符号链接) 和 pip3.11, pydoc3 和 pydoc3.11, python3 (符号链接); python3.11, 和 python3-config (符号链接) 和 python3.11-config

安装库: libpython3.11.so 和 libpython3.so

安装目录: /usr/include/python3.11, /usr/lib/python3.11, 和 /usr/share/doc/python-3.11.2

简要描述

idle3 是一个包装器脚本,用于打开一个支持Python的GUI编辑器。为了运行这个脚本,您必须在Python之前安装Tk,以便构建Tkinter Python模块。

pydoc3 是Python文档工具。

python3 是一种解释的、交互式的、面向对象的编程语言。

python3.11python程序特定于版本的名称。

13.24 Python Modules


简介Python Modules

Python模块包为Python语言添加了有用的对象。这里列出了整个BLFS中包使用的模块,以及它们的依赖项。

重要

在BLFS中,我们通常使用pip3构建和安装Python 3模块。请注意,本书中的pip3 install命令应该以root身份运行,除非它是用于Python虚拟环境。以non-root用户运行pip3 install可能看起来工作正常,但它会导致其他用户无法访问已安装的模块。

pip3 install默认不会重新安装已经安装的模块。要使用pip3 install命令升级模块(例如,从meson-0.61.3升级到介子-0.62.0),请在命令行中插入--upgrade。如果由于某种原因确实需要降级一个模块或重新安装相同版本,请在命令行中插入--force-reinstall

Asciidoc-10.2.0

简介Asciidoc模块

Asciidoc包是一种文本文档格式,用于编写笔记、文档、文章、书籍、电子书、幻灯片、网页、手册页和博客。AsciiDoc文件可以被转换为多种格式,包括HTML、PDF、EPUB和手册页。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Asciidoc依赖

可选 (运行时)

docbook-xsl-nons-1.79.2, fop-2.8, libxslt-1.1.37, Lynx-2.8.9rel.1, dblatex, 和 W3m

安装Asciidoc

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

这个包没有附带测试套件。

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user asciidoc

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheels。

--no-index: 忽略包索引(只查看——find-links url)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 请勿安装软件包依赖。这个选项可能需要使用–upgrade或–force-reinstall选项。

内容

安装程序: a2x 和 asciidoc

安装库: None

安装目录: /usr/lib/python3.11/site-packages/asciidoc 和 /usr/lib/python3.11/site-packages/asciidoc-10.2.0.dist-info

简要描述

a2x 是AsciiDoc的工具链管理器(将AsciiDoc文本文件转换为其他文件格式)。

asciidoc 将AsciiDoc文本文件转换为HTML或DocBook。

CSSSelect-1.2.0

简介CSSSelect模块

CSSSelect为Python提供CSS选择器。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

CSSSelect依赖

必要

setuptools_scm-7.1.0

可选 (用于测试)

pluggy-1.0.0pytest-7.2.1

安装CSSSelect

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user cssselect

以测试安装问题,执行 pytest.

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheels。

--no-index: 忽略包索引(只查看–find-links url)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: None

安装库: None

安装目录: /usr/lib/python3.11/site-packages/cssselect

CacheControl-0.12.11

简介CacheControl模块

CacheControl是httplib2中缓存算法的端口,用于requests会话对象。编写它的原因是httplib2对缓存的更好支持通常会因为缺乏线程安全而被削弱。缓存方面的请求也是如此。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

CacheControl依赖

必要

msgpack-1.0.4requests-2.28.2

安装CacheControl

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user cachecontrol

此模块没有可用的测试套件。

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links url)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: doesitcache

安装库: None

安装目录: /usr/lib/python3.11/site-packages/CacheControl-0.12.11.dist-info 和 /usr/lib/python3.11/site-packages/cachecontrol

简要描述

doesitcache 是一个没有文档的命令行脚本。

Cython-0.29.33

简介Cython模块

Cython包提供了一个编译器,用于为Python语言编写C扩展。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Cython

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

这个包没有附带测试套件。

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user Cython

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links url)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: cygdb cython cythonize

安装库: None

安装目录: /usr/lib/python3.11/site-packages/Cython, /usr/lib/python3.11/site-packages/Cython-0.29.33.dist-info, 和 /usr/lib/python3.11/site-packages/pyximport

简要描述

cygdb 是Cython调试器。

cython 是一个用Cython语言编写代码的编译器。它输出一个C/C++程序,该程序可以用C/C++编译器编译。

cythonize 是一个用Cython语言编写代码的编译器。它输出一个可直接从Python导入的扩展模块。

dbusmock-0.28.7

简介dbusmock

dbusmock是一个Python库,用于为与D-Bus服务对话的软件编写测试。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

dbusmock依赖

必要

D-Bus Python-1.3.2

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/dbusmock

安装dbusmock

使用以下命令构建包:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

要安装这个包,以root用户运行以下命令:

pip3 install --no-index --find-links dist --no-cache-dir --no-user python-dbusmock

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: None

安装库: None

安装目录: /usr/lib/python3.11/site-packages/dbusmock 和 /usr/lib/python3.11/site-packages/python_dbusmock-0.28.7.dist-info

D-Bus Python-1.3.2

简介D-Bus Python模块

D-Bus Python提供了与D-Bus API接口的Python绑定。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

D-Bus Python依赖

必要

dbus-1.14.6, GLib-2.74.5, meson_python-0.12.0, 和 patchelf-0.17.2

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/dbus-python

安装D-Bus Python

运行以下命令构建D-Bus Python模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

这个包没有附带测试套件。

Now install the module as the root user:

pip3 install --no-index --find-links dist --no-cache-dir --no-user dbus-python

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: None

安装库: None

安装目录: /usr/lib/python3.11/site-packages/dbus 和 /usr/lib/python3.11/site-packages/dbus_python-1.3.2.egg-info

docutils-0.19

简介docutils

docutils是一组Python模块和程序,用于将纯文本文档处理为HTML、XML或LaTeX等格式。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/docutils

安装docutils

要构建Python 3应用程序,请执行以下命令:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

要安装Python应用程序,以root用户运行以下命令:

pip3 install --no-index --find-links dist --no-cache-dir --no-user docutils &&

for f in /usr/bin/rst*.py; do
  ln -svf $(basename $f) /usr/bin/$(basename $f .py)
done

为了减少加载Python脚本所需的时间,pip3 install会将扩展名为.py的脚本编译为字节码,并将结果保存为_pycache_目录下的.pyc文件。但是这个包将.py脚本安装到/usr/bin中。因此它们的字节码文件将被安装到/usr/bin/__pycache_中,这是FHS不允许的。仍然以root用户身份,删除这个目录:

rm -rfv /usr/bin/__pycache__

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: docutils, rst2html4, rst2html5, rst2html, rst2latex, rst2man, rst2odt_prepstyles, rst2odt, rst2pseudoxml, rst2s5, rst2xetex, rst2xml, 和 rstpep2html

安装库: None

安装目录: /usr/lib/python3.11/site-packages/docutils{,-0.19.dist-info}

简要描述

docutils 将文档转换为各种格式。

rst2html 从独立的reStructuredText源生成(X)HTML文档。

rst2html4 从独立的reStructuredText源生成(X)HTML文档。

rst2html5 从独立的reStructuredText源生成HTML5文档。

rst2latex 从独立的reStructuredText源生成LaTeX文档。

rst2man 从独立的reStructuredText源生成普通的unix手动文档。

rst2odt 从独立的reStructuredText源生成OpenDocument/OpenOffice/ODF文档。

rst2odt_prepstyles 修复了一个字处理器生成的styles.odt,供odtwriter使用。

rst2pseudoxml 从独立的reStructuredText源生成伪xml(用于测试)。

rst2s5 从独立的reStructuredText源生成S5 (X)HTML幻灯片。

rst2xetex 从独立的reStructuredText源生成LaTeX文档,用于使用unicode感知的TeX变体XeLaTeX或LuaLaTeX进行编译。

rst2xml 从独立的reStructuredText源生成文档原生XML。

rstpep2html 从reStructuredText格式的PEP文件生成(X)HTML。

Doxypypy-0.8.8.7

简介Doxypypy模块

Doxypypy包是一个用于python的doxygen过滤器。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Doxypypy依赖

必要

chardet-5.1.0Doxygen-1.9.6 (在运行时)

安装Doxypypy

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user doxypypy

这个包没有一个可用的测试套件。

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: doxypypy

安装库: None

安装目录: /usr/lib/python3.11/site-packages/doxypypy 和 /usr/lib/python3.11/site-packages/doxypypy-0.8.8.7.dist-info

简要描述

doxypypy 使用语法感知的方法过滤用于Doxygen的Python代码。

Doxyqml-0.5.2

简介Doxyqml模块

Doxyqml包允许使用Doxygen记录QML类。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Doxyqml依赖

必要 (运行时)

Doxygen-1.9.6

可选 (用于测试)

pytest-7.2.1

安装Doxyqml

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user doxyqml

为了测试安装,运行:

pytest

测试test_qmlclass.py会失败。

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: doxyqml

安装库: None

安装目录: /usr/lib/python3.11/site-packages/doxyqml 和 /usr/lib/python3.11/site-packages/doxyqml-0.5.2.dist-info

简要描述

doxyqml 是QML文件的Doxygen输入过滤器。

Gi-DocGen-2023.1

简介Gi-DocGen模块

Gi-DocGen是一个基于对象库的文档生成器。GObject是GNOME项目的基本类型系统。GI-Docgen重用基于gobject库生成的内省数据来生成这些库的API引用,以及其他辅助文档。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Gi-DocGen依赖

必要

Markdown-3.4.1, Pygments-2.14.0, 和 typogrify-2.0.7

可选 (用于测试)

pytest-7.2.1

安装gi-docgen

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user gi-docgen

要测试安装,执行以下命令 pytest.

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: gi-docgen

安装库: None

安装目录: /usr/lib/python3.11/site-packages/gidocgen 和 /usr/lib/python3.11/site-packages/gi_docgen-2023.1.dist-info

简要描述

gi-docgen 管理基于libgobject的库的文档。

libxml2-2.10.3 (Python2模块)

介绍libxml2 Python2模块

Python3绑定是在libxml2-2.10.3中构建的,本书中的大多数包在旧版本的Python2中都没有使用这些绑定。

通过在安装libxml2-2.10.3之后构建这些绑定,就不需要重新构建该包耗时的主要部分(如果使用了所有依赖)。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

libxml2 (Python2)依赖

必要

libxml2-2.10.3Python-2.7.18

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/libxml2

安装libxml2 Python2模块

要构建Python 2模块,请运行:

./configure PYTHON=python2 &&
cd python                  &&
python2 setup.py build

要安装Python 2模块,使用root用户运行:

python2 setup.py install --optimize=1

内容

安装模块: drv_libxml2.py, libxml2.py

安装库: libxml2mod.so

安装目录: None

简要描述

drv_libxml2.py 是一个用于libxml2的Python2 SAX驱动程序。

libxml2.py 是libxml2的Python2绑定。

libxml2mod.so 是Python2使用libxml2.so的接口。

lxml-4.9.2

简介lxml模块

lxml为libxslt-1.1.37libxml2-2.10.3提供了Python绑定。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

lxml依赖

必要

libxslt-1.1.37

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/lxml

安装lxml

要构建Python 3模块,请运行:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

要安装该模块,以root用户身份执行以下命令:

pip3 install --no-index --find-links dist --no-cache-dir --no-user lxml

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: None

安装库: None

安装目录: /usr/lib/python3.11/site-packages/lxml 和 /usr/lib/python3.11/site-packages/lxml-4.9.2.dist-info

Mako-1.2.4

简介Mako模块

Mako是一个Python模块,它为Python平台实现了hyperfast和轻量级模板。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Mako依赖

可选 (用于测试)

pytest-7.2.1

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/Mako

安装Mako

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

root用户的身份安装模块:

pip3 install --no-index --find-links dist --no-cache-dir --no-user Mako

要测试安装,执行以下命令 pytest.

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: mako-render

安装库: None

安装目录: /usr/lib/python3.11/site-packages/mako 和 /usr/lib/python3.11/site-packages/Mako-1.2.4.dist-info

简要描述

mako-render 渲染模板。

NumPy-1.24.2

简介NumPy模块

NumPy是使用Python进行科学计算的基础包。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

NumPy依赖

必要

cython-0.29.33

可选

fortran从 GCC-12.2.0, lapack and cblas, openblas

可选 (用于测试)

attrs-22.2.0, pytest-7.2.1, hypothesis

安装NumPy

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user numpy

可以使用以下命令测试安装情况:

python3 -m venv --system-site-packages testenv &&
source testenv/bin/activate                    &&
pip3 install hypothesis                        &&
python3 runtests.py
deactivate

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: f2py, f2py3 和 f2py3.11 (一式三份)

安装库: None

安装目录: /usr/lib/python3.11/site-packages/numpy

简要描述

f2py 是Fortran到Python接口生成器实用程序。

Packaging-23.0

简介Packaging模块

打包库提供了实现互操作性规范的实用程序,这些实用程序具有明确的正确行为或从单一共享实现中获得极大好处。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Packaging依赖

必要

flit_core-3.8.0

可选 (用于测试)

pytest-7.2.1pretend

安装Packaging

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user packaging

假设已经安装了pytest-7.2.1,但没有安装其他可选依赖项,可以使用以下命令测试安装情况:

python3 -m venv --system-site-packages testenv &&
source testenv/bin/activate                    &&
pip3 install pretend                           &&
python3 /usr/bin/pytest
deactivate

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: None

安装库: None

安装目录: /usr/lib/python3.11/site-packages/packaging 和 /usr/lib/python3.11/site-packages/packaging-23.0.dist-info

Py3c-1.4

简介Py3c

Py3c可以帮助你将C扩展移植到Python 3。它提供了详细的指南和一组宏,以简化移植并减少样板。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/py3c

安装Py3c

Py3c包是一个只包含头文件的包,因此不需要配置和编译。

要测试这个包,请执行以下命令:

make test-python3 &&
make test-python3-cpp

要安装Python 3模块,请以root用户运行以下命令:

make prefix=/usr install

内容

安装程序: None

安装库: None

安装目录: /usr/include/py3c

PyAtSpi2-2.46.0

简介PyAtSpi2

PyAtSpi2包包含用于GNOME可访问性核心组件的Python绑定。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

PyAtSpi2依赖

必要

PyGObject-3.42.2

推荐

at-spi2-core-2.46.0

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/pyatspi2

安装PyAtSpi2

要将PyAtSpi2构建为Python 3模块,请运行以下命令:

./configure --prefix=/usr --with-python=/usr/bin/python3

这个包没有附带测试套件。

要安装Python 3模块,请以root用户运行以下命令:

make install

内容

安装程序: None

安装库: None

安装目录: /usr/lib/python3.11/site-packages/pyatspi

PyCairo-1.18.2

介绍PyCairo for Python2模块

这个版本的PyCairo提供了将Python2绑定到Cairo的功能。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

PyCairo依赖

必要

Cairo-1.17.6Python-2.7.18

可选

Hypothesis (用于测试)

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/pycairo

安装PyCairo

注意

只有像Gimp-2.10.32这样的包才会保留这个版本的PyCairo,它在Gimp-3发布之前一直停留在Python2上。

通过以下命令安装PyCairo以运行Python2:

python2 setup.py build

这个包没有附带测试套件。

现在,作为root用户:

python2 setup.py install --optimize=1   &&
python2 setup.py install_pycairo_header &&
python2 setup.py install_pkgconfig

内容

安装程序: None

安装库: _cairo.so

安装目录: /usr/include/pycairo, /usr/lib/python2.7/site-packages/cairo, /usr/lib/python2.7/site-packages/pycairo-1.18.2-py2.7.egg,

PyCairo-1.23.0

简介PyCairo模块

PyCairo提供了到Cairo的Python绑定。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

PyCairo依赖

必要

Cairo-1.17.6

可选

Hypothesispytest-7.2.1 (用于测试)

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/pycairo

安装PyCairo

注意

当前版本的pycairo不再构建Python2模块。如果你需要将该模块用于诸如Gimp-2.10.32这样的包,请使用PyCairo-1.18.2

通过以下命令安装PyCairo以安装Python3:

mkdir build &&
cd    build &&

meson --prefix=/usr --buildtype=release .. &&
ninja

要运行测试,这个包需要可选的pytest模块。如果安装了,通过运行ninja test来运行测试。test_surface.py的测试失败了。

现在,作为root用户:

ninja install

内容

安装程序: None

安装库: None

安装目录: /usr/include/pycairo, /usr/lib/python3.11/site-packages/cairo, 和 /usr/lib/python3.11/site-packages/pycairo-1.23.0.egg-info

PyCryptodome-3.17.0

简介PyCryptodome模块

PyCryptodome是安全散列函数(如SHA256和RIPEMD160)和各种加密算法(AES、DES、RSA、ElGamal等)的集合,是PyCrypto的直接替代品。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/pycryptodome

安装PyCryptodome

要将PyCryptodome构建为Python 3模块,请运行以下命令:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

要安装该模块,以root用户运行以下命令:

pip3 install --no-index --find-links dist --no-cache-dir --no-user pycryptodome

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: None

安装库: None

安装目录: /usr/lib/python3.11/site-packages/Crypto /usr/lib/python3.11/site-packages/pycryptodome-3.17.0.dist-info

Pygments-2.14.0

简介Pygments模块

Pygments是一个用Python编写的通用语法高亮器,支持300多种语言。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/pygments

安装Pygments

构建Python 3模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

要安装这个包,以root用户运行以下命令:

pip3 install --no-index --find-links dist --no-cache-dir --no-user Pygments

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: pygmentize

安装库: None

安装目录: /usr/lib/python3.11/site-packages/pygments 和 /usr/lib/python3.11/site-packages/Pygments-2.14.0.dist-info

简要描述

pygmentize 突出显示输入文件并将结果写入输出文件。

PyGObject-2.28.7

简介PyGObject模块

PyGObject-2.28.7提供了从GLib到GObject类的Python 2绑定。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

PyGObject依赖

必要

GLib-2.74.5, PyCairo-1.18.2Python-2.7.18

可选

gobject-introspection-1.74.0libxslt-1.1.37 (构建文档)

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/pygobject2

安装PyGObject

运行以下命令安装PyGObject:

./configure --prefix=/usr --disable-introspection &&
make

此软件包没有可用的测试套件。

现在,作为root用户:

make install

命令解释

--disable-introspection: 如果你已经安装了gobject-introspection-1.74.0,请忽略这个开关。请注意,它与PyGObject-3.42.2冲突。

--disable-docs: 如果安装了libxslt-1.1.37,则此选项将禁用重建html文档。

内容

安装程序: pygobject-codegen-2.0

安装库: libpyglib-2.0-python.so, _gio.so, unix.so, _glib.so 和 _gobject.so.

安装目录: /usr/include/pygtk-2.0, /usr/lib/python2.7/site-packages/gtk-2.0/{gio,glib,gobject}, /usr/share/gtk-doc/html/pygobject 和 /usr/share/pygobject/2.0

PyGObject-3.42.2

简介PyGObject3模块

PyGObject3提供了从GLib到GObject类的Python绑定。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

PyGObject3依赖

必要

gobject-introspection-1.74.0PyCairo-1.23.0 (Python 3模块)

可选 (用于测试)

GTK-4.8.3, pep8, pyflakes, 和 pytest-7.2.1

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/pygobject3

安装PyGObject3

首先,删除一个有错误的测试:

mv -v tests/test_gdbus.py{,.nouse}

运行以下命令安装pygobject3:

mkdir build &&
cd    build &&

meson --prefix=/usr --buildtype=release .. &&
ninja

要测试结果,执行: ninja test. 运行测试需要具有总线地址的已经活动的图形会话。如果没有安装GTK-4.8.3,另一轮测试可能会报告错误。

现在,作为root用户:

ninja install

命令解释

--buildtype=release: 指定一个适合于稳定版本的构建类型,因为默认情况下可能会生成未优化的二进制文件。

内容

安装程序: None

安装库: /usr/lib/python3.11/site-packages/gi/_gi{,_cairo}.cpython-311--linux-gnu.so

安装目录: /usr/include/pygobject-3.0 和 /usr/lib/python3.11/site-packages/{gi,pygtkcompat}

PyGTK-2.24.0

简介PyGTK模块

PyGTK允许您使用Python编程语言轻松地创建具有图形用户界面的程序。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

PyGTK依赖

必要

PyGObject-2.28.7Python-2.7.18

必要 (atk模块)

at-spi2-core-2.46.0

必要 (pango模块)

Pango-1.50.12

必要 (pangocairo模块)

PyCairo-1.18.2Pango-1.50.12

必要 (gtk 和 gtk.unixprint 模块)

PyCairo-1.18.2GTK+-2.24.33.

必要 (gtk.glade 模块)

PyCairo-1.18.2libglade-2.6.4.

可选

NumPy

可选 (构建文档)

libxslt-1.1.37

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/pygtk

安装PyGTK

首先,通过删除未定义的api使PyGTK适应Pango中的变化:

sed -i '1394,1402 d' pango.defs

运行以下命令安装PyGTK:

./configure --prefix=/usr &&
make

测试必须从活动X显示器运行。如果是这样,问题: make check.

现在,作为root用户:

make install

命令解释

--enable-docs: 如果安装了libxslt-1.1.37,则此选项允许重建html文档。

内容

安装程序: pygtk-codegen-2.0 和 pygtk-demo.

安装库: atk.so, _gtk.so, glade.so, gtkunixprint.so, pango.so 和 pangocairo.so.

安装目录: /usr/include/pygtk-2.0, /usr/lib/pygtk, /usr/lib/python2.7/site-packages/gtk-2.0, /usr/share/gtk-doc/html/pygtk 和 /usr/share/pygtk.

简要描述

pygtk-codegen-2.0 是一个包装器脚本,用于运行PyGTK codegen模块。

pygtk-demo 是一个Python包装器,用于运行PyGTK演示程序。

pyparsing-3.0.9

简介pyparsing模块

与传统的lex/yacc方法或使用正则表达式相比,pyparsing模块是创建和执行简单语法的另一种方法。它提供了一个类库,客户端代码使用它直接在Python代码中构建语法。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

pyparsing依赖

必要

flit_core-3.8.0

可选

railroad-diagrams (也需要进行测试)

可选 (用于测试)

pytest-7.2.1

安装pyparsing

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user pyparsing

假设已经安装了pytest-7.2.1,但没有安装其他可选依赖项,可以使用以下命令测试安装情况:

python3 -m venv --system-site-packages testenv &&
source testenv/bin/activate                    &&
pip3 install railroad-diagrams                 &&
python3 /usr/bin/pytest
deactivate

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: None

安装库: None

安装目录: /usr/lib/python3.11/site-packages/pyparsing 和 /usr/lib/python3.11/site-packages/pyparsing-3.0.9.dist-info

pySerial-3.5

简介pySerial模块

pySerial模块封装了对串口的访问。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

pySerial依赖

必要

setuptools_scm-7.1.0

可选 (用于测试)

pluggy-1.0.0pytest-7.2.1

安装pySerial

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user pyserial

以测试安装问题,执行 pytest.

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: pyserial-miniterm 和 pyserial-ports

安装库: None

安装目录: /usr/lib/python3.11/site-packages/pyserial-3.5.dist-info 和 /usr/lib/python3.11/site-packages/serial

简要描述

pyserial-miniterm 是一个控制台应用程序,提供一个小型终端应用程序。它可能从运行它的终端继承终端功能。

pyserial-ports 列出可用的端口。

Pytest-7.2.1

简介Pytest模块

Pytest框架使编写小型、可读的测试变得容易,并且可以扩展为支持应用程序和库的复杂功能测试。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Pytest依赖

必要

attrs-22.2.0, iniconfig-2.0.0, packaging-23.0, pluggy-1.0.0, 和 py-1.11.0

推荐

setuptools_scm-7.1.0

可选 (用于测试)

Pygments-2.14.0, requests-2.28.2, argcomplete, hypothesis, mock, nose, 和 xmlschema

安装Pytest

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user pytest

可以使用以下命令测试安装情况:

python3 -m venv --system-site-packages testenv &&
source testenv/bin/activate                    &&
pip3 install pytest[testing]                   &&
python3 /usr/bin/pytest
deactivate

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: pytest 和 py.test (不同的文件,但内容相同)

安装库: None

安装目录: /usr/lib/python3.11/site-packages/_pytest, /usr/lib/python3.11/site-packages/pytest, 和 /usr/lib/python3.11/site-packages/pytest-7.2.1.dist-info

简要描述

pytest 在python模块源目录中设置、管理和/或运行test。

PyXDG-0.28

简介PyXDG模块

PyXDG是一个用于访问freedesktop.org标准的Python库。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/pyxdg

安装PyXDG

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

root用户的身份安装模块:

pip3 install --no-index --find-links dist --no-cache-dir --no-user pyxdg

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装目录: /usr/lib/python3.11/site-packages/xdg 和 /usr/lib/python3.11/site-packages/pyxdg-0.28.dist-info

PyYAML-6.0

简介PyYAML模块

PyYAML是一个Python模块,实现了下一代的YAML解析器和发射器。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

PyYAML依赖

必要

cython-0.29.33libyaml-0.2.5

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/PyYAML

安装PyYAML

使用以下命令构建PyYAML:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

现在,以root用户的身份安装该模块:

pip3 install --no-index --find-links dist --no-cache-dir --no-user PyYAML

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: None

安装库: None

安装目录: /usr/lib/python2.7/site-packages/yaml 和 /usr/lib/python3.11/site-packages/PyYAML-0.2.5.dist-info

Recommonmark-0.7.1

简介Recommonmark模块

Recommonmark是CommonMark与文档兼容的桥梁。它允许在Docutils和Sphinx项目中编写CommonMark。现在推荐使用MyST-Parser。不幸的是,LLVM-15.0.7仍然依赖于这个模块。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Recommonmark依赖

必要

commonmark-0.9.1sphinx-6.1.3

可选 (用于测试)

pytest-7.2.1

安装Recommonmark

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user recommonmark

现在推荐使用MyST-Parser。因此,必须禁用很多测试,因为最新版本的Sphinx无法通过这些测试。可以使用以下命令对安装进行部分测试:

pytest -k 'not (test_integration or test_code or test_headings or test_image or test_links or test_lists)'

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: cm2html, cm2latex, cm2man, cm2pseudoxml, cm2xetex, 和 cm2xml

安装库: None

安装目录: /usr/lib/python3.11/site-packages/recommonmark 和 /usr/lib/python3.11/site-packages/recommonmark-0.7.1.dist-info

简要描述

cm2html 根据markdown源生成HTML文档。

cm2latex 根据markdown源生成latex文档。

cm2man 从markdown源生成一个管理页面。

cm2pseudoxml 从markdown源生成伪xml文档。

cm2xetex 从markdown源生成xetex文档。

cm2xml 根据markdown源生成XML文档。

Requests-2.28.2

简介Requests模块

Requests包是为人类构建的一个优雅而简单的Python HTTP库。它允许非常轻松地发送HTTP/1.1请求。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

额外下载

Requests依赖

必要

charset-normalizer-3.0.1, idna-3.4, 和 urllib3-1.26.14

推荐

make-ca-1.12, 与 p11-kit-0.24.1 (两者都需要使用系统https: certificates,消除了对Certifi模块不必要的依赖).

可选

PySocks (也需要进行测试)

可选 (用于测试)

pytest-7.2.1, Flask<2, httpbin, MarkupSafe<2.1, pytest-mock, pytest-httpbin, sphinx<5, trustme, 和 Werkzeug<2

安装Requests

首先应用一个补丁,这样这个模块也可以使用在Python3中已经使用过的指向系统证书的环境变量(在安装make-ca之后):

patch -Np1 -i ../requests-2.28.2-use_system_certs-1.patch

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user requests

假设安装了pytest-7.2.1,但没有安装其他可选依赖项,可以使用以下命令测试安装情况:

python3 -m venv --system-site-packages testenv &&
source testenv/bin/activate                    &&
pip3 install --force-reinstall sphinx\<5       &&
pip3 install pytest-mock    \
             werkzeug\<2    \
             flask\<2       \
             pytest-httpbin \
             pysocks        \
             trustme                           &&
pip3 install --force-reinstall Markupsafe\<2.1 &&
python3 /usr/bin/pytest tests                  &&
deactivate

注意

请参阅make-ca-1.12以了解如何设置环境变量,以及如何在虚拟环境中安装Certifi和Requests模块的本地副本来覆盖系统证书。

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: None

安装库: None

安装目录: /usr/lib/python3.11/site-packages/requests 和 /usr/lib/python3.11/site-packages/requests-2.28.2.dist-info

Scour-0.38.2

简介Scour模块

Scour是一个SVG(可伸缩矢量图形)优化器/清理器,它通过优化结构和删除不必要的数据来减少它们的大小。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Scour依赖

必要

six-1.16.0

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/scour

安装scour

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

要安装该模块,以root用户运行以下命令:

pip3 install --no-index --find-links dist --no-cache-dir --no-user scour

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: scour

安装库: None

安装目录: /usr/lib/python3.11/site-packages/scour 和 /usr/lib/python3.11/site-packages/scour-0.38.2.dist-info

简要描述

scour 是一个优化和清理SVG文件的程序。

six-1.16.0

简介Six模块

Six是一个Python 2到3兼容库。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/six

安装Six

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

这个包没有附带测试套件。

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user six

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: None

安装库: None

安装目录: /usr/lib/python3.11/site-packages/six-1.16.0.dist-info

Sphinx-6.1.3

简介Sphinx模块

Sphinx包是一组工具,用于将一些结构化文本格式转换为各种格式的漂亮文档。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Sphinx依赖

必要

alabaster-0.7.13, Babel-2.11.0, docutils-0.19, imagesize-1.4.1, packaging-23.0, Pygments-2.14.0, requests-2.28.2, snowballstemmer-2.2.0, sphinxcontrib-applehelp-1.0.3, sphinxcontrib-devhelp-1.0.2, sphinxcontrib-htmlhelp-2.0.0, sphinxcontrib-jsmath-1.0.1, sphinxcontrib-qthelp-1.0.3, 和 sphinxcontrib-serializinghtml-1.1.5

可选 (用于测试)

cython-0.29.33, pytest-7.2.1, texlive-20220321, 和 html5lib

安装Sphinx

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user sphinx

假设已经安装了cython-0.29.33pytest-7.2.1,但没有安装其他可选依赖项,可以使用以下命令测试安装情况:

python3 -m venv --system-site-packages testenv &&
source testenv/bin/activate                    &&
pip3 install html5lib                          &&
python3 /usr/bin/pytest
deactivate

已知有一个测试tests/test_config.py::test_needs_sphinx失败了。

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: sphinx-apidoc, sphinx-autogen, sphinx-build, 和 sphinx-quickstart

安装库: None

安装目录: /usr/lib/python3.11/site-packages/sphinx 和 /usr/lib/python3.11/site-packages/sphinx-6.1.3.dist-info

简要描述

sphinx-apidoc 使用python模块和包创建reST文件。

sphinx-autogen 根据给定输入文件中包含的特殊指令生成ReStructuredText。

sphinx-build 从ReStructuredText源文件生成各种格式的文档。

sphinx-quickstart 生成sphinx项目所需的文件。

Sphinx_rtd_theme-1.2.0

简介Sphinx_rtd_theme模块

sphinx_rtd_theme模块是一个Sphinx主题,旨在为桌面和移动设备上的文档用户提供良好的阅读体验。这个主题主要用于阅读文档,但可以与任何Sphinx项目一起工作。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Sphinx_rtd_theme依赖

必要

sphinx-6.1.3sphinxcontrib-jquery-2.0.0

可选 (用于测试)

pytest-7.2.1readthedocs-sphinx-ext

安装Sphinx_rtd_theme

修复了依赖列表的错误版本:

sed -e s/0.19/0.20/ \
    -i setup.cfg

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user sphinx_rtd_theme

假设已经安装了pytest-7.2.1,但没有安装其他可选依赖项,可以使用以下命令测试安装情况:

python3 -m venv --system-site-packages testenv &&
source testenv/bin/activate                    &&
pip3 install readthedocs-sphinx-ext            &&
python3 /usr/bin/pytest
deactivate

有几个测试会返回警告,因为它们使用了已弃用的sphinx API。

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: None

安装库: None

安装目录: /usr/lib/python3.11/site-packages/sphinx_rtd_theme 和 /usr/lib/python3.11/site-packages/sphinx_rtd_theme-1.2.0.dist-info.

13.25 Python依赖


简介Python依赖

Python Modules中列出的Python模块具有BLFS中其他包不会引用的依赖项。这里列出了这些依赖关系。除非需要更最新的版本,否则它们不会定期更新。

重要

在BLFS中,我们通常使用pip3构建和安装Python 3模块。请注意,本书中的pip3 install命令应该以root身份运行,除非它是用于Python虚拟环境。以non-root用户运行pip3 install可能看起来工作正常,但它会导致其他用户无法访问已安装的模块。

pip3 install默认不会重新安装已经安装的模块。要使用 pip3 install 命令升级模块(例如,从meson-0.61.3升级到meson-0.62.0),请在命令行中插入--upgrade。如果由于某种原因确实需要降级一个模块或重新安装相同版本,请在命令行中插入--force-reinstall

Alabaster-0.7.13

简介Alabaster模块

Alabaster包是sphinx文档系统的一个主题。虽然是单独开发的,但它是sphinx的默认主题。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Alabaster

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

这个包没有附带测试套件。

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user alabaster

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: None

安装库: None

安装目录: /usr/lib/python3.11/site-packages/alabaster 和 /usr/lib/python3.11/site-packages/alabaster-0.7.13.dist-info

Attrs-22.2.0

简介Attrs模块

Attrs包是sphinx文档系统的一个主题。虽然是单独开发的,但它是sphinx的默认主题。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

可选 (用于测试)

pytest-7.2.1, coverage[toml], hypothesis, Pympler, mypy, pytest-mypy-plugins, zope.interface, 和 cloudpickle

安装Attrs

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user attrs

为了测试安装,运行:

python3 -m venv --system-site-packages testenv &&
source testenv/bin/activate                    &&
pip3 install attrs[tests]                      &&
python3 /usr/bin/pytest                        &&
deactivate

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: None

安装库: None

安装目录: /usr/lib/python3.11/site-packages/attr, /usr/lib/python3.11/site-packages/attrs, 和 /usr/lib/python3.11/site-packages/attrs-22.2.0.dist-info

Babel-2.11.0

简介Babel模块

Babel包是一个集成的实用程序集合,用于帮助Python应用程序的国际化和本地化,重点是基于web的应用程序。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Babel依赖

必要

pytz-2022.7.1

可选 (用于测试)

pytest-7.2.1, Python-3.11.2 (使用sqlite模块), freezegun==0.3.12, 和 pytest-cov

安装Babel

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user Babel

假设安装了pytest-7.2.1,但没有安装其他可选依赖项,可以使用以下命令测试安装情况:

python3 -m venv --system-site-packages testenv &&
source testenv/bin/activate                    &&
pip3 install pytest-cov freezegun==0.3.12      &&
python3 /usr/bin/pytest
deactivate

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: pybabel

安装库: None

安装目录: /usr/lib/python3.11/site-packages/babel 和 /usr/lib/python3.11/site-packages/Babel-2.11.0.dist-info

简要描述

pybabel 是用于处理消息目录的命令行界面。

Chardet-5.1.0

简介chardet模块

Chardet是一个通用的字符编码检测器。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Chardet依赖

可选 (用于测试)

pytest-7.2.1

安装Chardet

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user chardet

以测试安装问题,执行 pytest.

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: chardetect

安装库: None

安装目录: /usr/lib/python3.11/site-packages/chardet 和 /usr/lib/python3.11/site-packages/chardet-5.1.0.dist-info

简要描述

chardetect 是一个通用的字符编码检测器。

Charset-normalizer-3.0.1

简介charset-normalizer模块

charset-normalizer库有助于从未知字符编码中读取文本。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Charset-normalizer依赖

可选 (用于测试)

pytest-7.2.1pytest-cov

安装Charset-normalizer

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user charset-normalizer

假设安装了pytest-7.2.1,但没有安装其他可选依赖项,可以使用以下命令测试安装情况:

python3 -m venv --system-site-packages testenv &&
source testenv/bin/activate                    &&
pip3 install pytest-cov                        &&
python3 /usr/bin/pytest
deactivate

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: normalizer

安装库: None

安装目录: /usr/lib/python3.11/site-packages/charset_normalizer 和 /usr/lib/python3.11/site-packages/charset_normalizer-3.0.1.dist-info

简要描述

normalizer 是一个通用字符集检测器(发现原始编码并将文本规范化为unicode)。

Commonmark-0.9.1

简介Commonmark模块

Commonmark Markdown规范的CommonMark Python解析器。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Commonmark依赖

可选 (用于测试)

pytest-7.2.1, flake8, 和 hypothesis

安装Commonmark

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user commonmark

假设已经安装了pytest-7.2.1,而没有安装其他可选依赖项,可以使用以下命令测试安装情况:

python3 -m venv --system-site-packages testenv &&
source testenv/bin/activate                    &&
pip3 install hypothesis                        &&
python3 /usr/bin/pytest commonmark/tests/unit_tests.py
python3 commonmark/tests/run_spec_tests.py
deactivate

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: cmark

安装库: None

安装目录: /usr/lib/python3.11/site-packages/commonmark 和 /usr/lib/python3.11/site-packages/commonmark-0.9.1.dist-info

简要描述

cmark 根据CommonMark规范处理Markdown。

Editables-0.3

简介Editables模块

Editables是用于创建“editable wheels”的python库。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Editables

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

这个包没有附带测试套件。

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user editables

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: None

安装库: None

安装目录: /usr/lib/python3.11/site-packages/editables 和 /usr/lib/python3.11/site-packages/editables-0.3.dist-info

Flit_core-3.8.0

简介Flit_core模块

Flit_core模块是Flit系统的关键组件,它提供了一种将Python包和模块放在PyPi上的简单方法。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Flit_core依赖

可选 (用于测试)

pytest-7.2.1testpath

安装Flit_core

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user flit_core

假设已经安装了pytest-7.2.1,但没有安装其他可选依赖项,可以使用以下命令测试安装情况:

python3 -m venv --system-site-packages testenv &&
source testenv/bin/activate                    &&
pip3 install testpath                          &&
python3 /usr/bin/pytest
deactivate

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: None

安装库: None

安装目录: /usr/lib/python3.11/site-packages/flit_core 和 /usr/lib/python3.11/site-packages/flit_core-3.8.0.dist-info

Hatchling-1.12.2

简介Hatchling模块

Hatchling是一个可扩展的、符合标准的python模块构建后端。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Hatchling依赖

必要

editables-0.3, packaging-23.0, pathspec-0.10.3, 和 pluggy-1.0.0

安装Hatchling

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

这个包没有一个可用的测试套件。

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user hatchling

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: hatchling

安装库: None

安装目录: /usr/lib/python3.11/site-packages/hatchling 和 /usr/lib/python3.11/site-packages/hatchling-1.12.2.dist-info

简要描述

hatchling 是一个python模块构建器。

Hatch_vcs-0.3.0

简介Hatch-vcs模块

Hatch_vcs是一个用于多个VCS版本控制的Hatch插件。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Hatch_vcs依赖

必要

hatchling-1.12.2setuptools_scm-7.1.0

可选 (用于测试)

pytest-7.2.1

安装Hatch_vcs

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user hatch_vcs

要测试安装,执行以下命令 pytest. One test fails.

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: None

安装库: None

安装目录: /usr/lib/python3.11/site-packages/hatch_vcs 和 /usr/lib/python3.11/site-packages/hatch_vcs-0.3.0.dist-info

Idna-3.4

简介Idna模块

Idna模块提供对IDNA (Internationalized Domain Names in Applications)协议的支持,Idna协议在RFC 5891中有详细说明。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Idna依赖

必要

flit_core-3.8.0

可选 (用于测试)

pytest-7.2.1

安装Idna

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user idna

要测试安装,请运行 pytest.

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: None

安装库: None

安装目录: /usr/lib/python3.11/site-packages/idna 和 /usr/lib/python3.11/site-packages/idna-3.4.dist-info

Imagesize-1.4.1

简介Imagesize模块

imagesize包分析图像文件头并返回图像大小和DPI。它支持JPEG/JPEG 2000/PNG/GIF/TIFF/SVG/Netpbm/WebP格式。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Imagesize依赖

可选 (用于测试)

pytest-7.2.1requests-2.28.2

安装Imagesize

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user imagesize

要测试安装,请运行 pytest.

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: None

安装库: None

安装目录: /usr/lib/python3.11/site-packages/imagesize 和 /usr/lib/python3.11/site-packages/imagesize-1.4.1.dist-info

Iniconfig-2.0.0

简介Iniconfig模块

Iniconfig是一个小而简单的ini文件解析模块。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Iniconfig依赖

必要

hatch_vcs-0.3.0

安装Iniconfig

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

这个包没有附带测试套件。

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user iniconfig

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: None

安装库: None

安装目录: /usr/lib/python3.11/site-packages/iniconfig 和 /usr/lib/python3.11/site-packages/iniconfig-2.0.0.dist-info

Markdown-3.4.1

简介Markdown模块

Markdown是John Gruber的Markdown规范的Python解析器。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Markdown依赖

可选 (用于测试)

pytest-7.2.1, PyYAML-6.0, 和 coverage

安装Markdown

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user Markdown

假设已经安装了pytest-7.2.1PyYAML-6.0,而没有安装其他可选依赖项,可以使用以下代码测试安装情况:

python3 -m venv --system-site-packages testenv &&
source testenv/bin/activate                    &&
pip3 install coverage                          &&
python3 /usr/bin/pytest --ignore=tests/test_syntax/extensions/test_md_in_html.py
deactivate

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: markdown_py

安装库: None

安装目录: /usr/lib/python3.11/site-packages/markdown 和 /usr/lib/python3.11/site-packages/Markdown-3.4.1.dist-info

简要描述

markdown_py 将markdown文件转换为(x)html。

Meson_python-0.12.0

简介Meson_python模块

Meson_python模块包含一个用于Meson项目的Python构建后端(PEP 517)。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Meson_python依赖

必要

pyproject-metadata-0.7.0

推荐 (运行时)

patchelf-0.17.2

安装Meson_python

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

这个包没有附带测试套件。

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user meson_python

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: None

安装库: None

安装目录: /usr/lib/python3.11/site-packages/meson_python 和 /usr/lib/python3.11/site-packages/meson_python-0.12.0.dist-info

MessagePack-1.0.4

简介MessagePack模块

MessagePack是一种高效的二进制序列化格式。它允许你在多种语言(如JSON)之间交换数据。但它更快、更小。这个包提供了用于读写MessagePack数据的CPython绑定。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

MessagePack依赖

必要

cython-0.29.33setuptools_scm-7.1.0

可选 (用于测试)

pluggy-1.0.0pytest-7.2.1

安装MessagePack

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user msgpack

以测试安装问题,执行 pytest.

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: None

安装库: None

安装目录: /usr/lib/python3.11/site-packages/msgpack-1.0.4.dist-info 和 /usr/lib/python3.11/site-packages/msgpack

Pathspec-0.10.3

简介Pathspec模块

Pathspec是一个用于文件路径模式匹配的实用程序库。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Pathspec依赖

可选 (用于测试)

pytest-7.2.1

安装Pathspec

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user pathspec

要测试安装,执行以下命令 pytest.

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: None

安装库: None

安装目录: /usr/lib/python3.11/site-packages/pathspec 和 /usr/lib/python3.11/site-packages/pathspec-0.10.3.dist-info

Pluggy-1.0.0

简介Pluggy模块

Pluggy包通过为宿主程序安装插件,使用户能够扩展或修改宿主程序的行为。插件代码将作为正常程序执行的一部分运行,改变或增强它的某些方面。本质上,pluggy支持函数挂钩,这样用户就可以构建“可插拔”的系统。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Pluggy依赖

推荐

setuptools_scm-7.1.0

可选 (用于测试)

pytest-7.2.1pytest-benchmark

安装Pluggy

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user pluggy

假设安装了pytest-7.2.1,但其他可选的依赖没有安装,可以使用以下命令测试安装:

python3 -m venv --system-site-packages testenv &&
source testenv/bin/activate                    &&
pip3 install pytest-benchmark                  &&
python3 /usr/bin/pytest
deactivate

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: None

安装库: None

安装目录: /usr/lib/python3.11/site-packages/pluggy 和 /usr/lib/python3.11/site-packages/pluggy-1.0.0.dist-info

Py-1.11.0

简介Py模块

Py库是Pytest中使用的Python开发支持库。它已被弃用,应该在某个时候被删除,但它的一部分仍然在Pytest中使用。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Py依赖

推荐

setuptools_scm-7.1.0

安装Py

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

现在,作为root用户:

由于此包的弃用,测试套件没有维护,无法运行。

pip3 install --no-index --find-links dist --no-cache-dir --no-user py

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: None

安装库: None

安装目录: /usr/lib/python3.11/site-packages/py 和 /usr/lib/python3.11/site-packages/py-1.11.0.dist-info

Pyproject-Metadata-0.7.0

简介Pyproject-Metadata模块

Pyproject-Metadata模块包含一个用于PEP 621元数据的数据类,支持“核心元数据”(PEP 643)生成。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Pyproject-Metadata依赖

必要

packaging-23.0

安装Pyproject-Metadata

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

这个包没有附带测试套件。

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user pyproject-metadata

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: None

安装库: None

安装目录: /usr/lib/python3.11/site-packages/pyproject_metadata 和 /usr/lib/python3.11/site-packages/pyproject_metadata-0.7.0.dist-info

Pytz-2022.7.1

简介Pytz模块

Pytz库将IANA tz数据库引入Python。它允许精确和跨平台的时区计算。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Pytz依赖

可选 (用于测试)

pytest-7.2.1

安装Pytz

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user pytz

要测试安装,请运行 pytest. 发布了一些警告。

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: None

安装库: None

安装目录: /usr/lib/python3.11/site-packages/pytz 和 /usr/lib/python3.11/site-packages/pytz-2022.7.1.dist-info

Setuptools_scm-7.1.0

简介Setuptools_scm模块

Setuptools_scm包用于从git或hg元数据中提取Python包版本,而不是声明它们。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Setuptools_scm依赖

必要

packaging-23.0typing_extensions-4.4.0

可选 (用于测试)

git-2.39.2, Mercurial-6.3.2, 和 pytest-7.2.1

安装Setuptools_scm

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user setuptools_scm

可以使用pytest进行安装测试。如果你的git配置与测试套件的预期不一致,一些测试可能会失败。

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: None

安装库: None

安装目录: /usr/lib/python3.11/site-packages/setuptools_scm 和 /usr/lib/python3.11/site-packages/setuptools_scm-7.1.0.dist-info

Smartypants-2.0.1

简介Smartypants模块

Smartypants将普通ASCII标点字符翻译成“智能”印刷标点HTML实体。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Smartypants

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

这个包没有一个可用的测试套件。

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user smartypants

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: smartypants

安装库: None

安装目录: /usr/lib/python3.11/site-packages/smartypants-2.0.1.dist-info

简要描述

smartypants 翻译ASCII标点到HTML标点。

Snowballstemmer-2.2.0

简介Snowballstemmer模块

Snowballstemmer包是一个小型的字符串处理语言,用于创建用于信息检索的词干提取算法,以及使用它实现的一组词干提取算法。词干提取将同一单词的不同形式映射到一个共同的“干”——例如,英语词干提取器将连接、连接、连接、连接和连接映射到连接。因此,搜索connected也会找到只有其他形式的文档。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

安装Snowballstemmer

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

这个包没有附带测试套件。

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user snowballstemmer

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: None

安装库: None

安装目录: /usr/lib/python3.11/site-packages/snowballstemmer 和 /usr/lib/python3.11/site-packages/snowballstemmer-2.2.0.dist-info

Sphinxcontrib-applehelp-1.0.3

简介Sphinxcontrib-applehelp模块

Sphinxcontrib-applehelp包是一个Sphinx扩展,可以输出Apple的帮助书籍。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Sphinxcontrib-applehelp依赖

可选 (用于测试)

pytest-7.2.1sphinx-6.1.3 (环形的依赖)

安装Sphinxcontrib-applehelp

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user sphinxcontrib-applehelp

要测试安装,请运行 pytest. 由于使用了废弃的函数,可能会发出一些警告。

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: None

安装库: None

安装目录: /usr/lib/python3.11/site-packages/sphinxcontrib 和 /usr/lib/python3.11/site-packages/sphinxcontrib_applehelp-1.0.3.dist-info

Sphinxcontrib-devhelp-1.0.2

简介Sphinxcontrib-devhelp模块

Sphinxcontrib-devhelp包是一个Sphinx扩展,它可以输出Devhelp文档。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Sphinxcontrib-devhelp依赖

可选 (用于测试)

pytest-7.2.1sphinx-6.1.3 (环形依赖)

安装Sphinxcontrib-devhelp

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user sphinxcontrib-devhelp

要测试安装,请运行 pytest.

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: None

安装库: None

安装目录: /usr/lib/python3.11/site-packages/sphinxcontrib 和 /usr/lib/python3.11/site-packages/sphinxcontrib_devhelp-1.0.2.dist-info

Sphinxcontrib-htmlhelp-2.0.0

简介Sphinxcontrib-htmlhelp模块

Sphinxcontrib-htmlhelp包是一个Sphinx扩展,用于渲染HTML帮助文件。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Sphinxcontrib-htmlhelp依赖

可选 (用于测试)

pytest-7.2.1, sphinx-6.1.3 (唤醒依赖), 和 html5lib

安装Sphinxcontrib-htmlhelp

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user sphinxcontrib-htmlhelp

假设已经安装了pytest-7.2.1,但没有安装其他可选依赖项,可以使用以下命令测试安装情况:

python3 -m venv --system-site-packages testenv   &&
source testenv/bin/activate                      &&
pip3 install html5lib                            &&
sed -i 's/text()/read_&/' tests/test_htmlhelp.py &&
python3 /usr/bin/pytest
deactivate

sed …因为Sphinx 5.0以上版本的API发生了变化,所以需要使用这个命令。

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: None

安装库: None

安装目录: /usr/lib/python3.11/site-packages/sphinxcontrib 和 /usr/lib/python3.11/site-packages/sphinxcontrib_htmlhelp-2.0.0.dist-info

Sphinxcontrib-jquery-2.0.0

简介Sphinxcontrib-jquery模块

Sphinxcontrib-jquery包是一个Sphinx扩展,在Sphinx新版本中包含jQuery。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Sphinxcontrib-jquery依赖

可选 (用于测试)

pytest-7.2.1

安装Sphinxcontrib-jquery

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

这个包没有附带测试套件。

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user sphinxcontrib-jquery

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: None

安装库: None

安装目录: /usr/lib/python3.11/site-packages/sphinxcontrib 和 /usr/lib/python3.11/site-packages/sphinxcontrib_jquery-2.0.0.dist-info

Sphinxcontrib-jsmath-1.0.1

简介Sphinxcontrib-jsmath模块

Sphinxcontrib-jsmath包是一个Sphinx扩展,它可以通过JavaScript在HTML中显示数学。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Sphinxcontrib-jsmath依赖

可选 (用于测试)

pytest-7.2.1sphinx-6.1.3 (环形依赖)

安装Sphinxcontrib-jsmath

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user sphinxcontrib-jsmath

可以使用以下命令测试安装情况:

sed -i 's/text()/read_&/' tests/test_jsmath.py &&
pytest

sed …因为Sphinx 5.0以上版本的API发生了变化,所以需要使用这个命令。

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: None

安装库: None

安装目录: /usr/lib/python3.11/site-packages/sphinxcontrib 和 /usr/lib/python3.11/site-packages/sphinxcontrib_jsmath-1.0.1.dist-info

Sphinxcontrib-qthelp-1.0.3

简介Sphinxcontrib-qthelp模块

Sphinxcontrib-qthelp包是一个Sphinx扩展,它输出QtHelp文档。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Sphinxcontrib-qthelp依赖

可选 (用于测试)

pytest-7.2.1sphinx-6.1.3 (环形依赖)

安装Sphinxcontrib-qthelp

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user sphinxcontrib-qthelp

可以使用以下命令测试安装情况:

sed -i 's/text()/read_&/' tests/test_qthelp.py &&
pytest

sed …因为Sphinx 5.0以上版本的API发生了变化,所以需要使用这个命令。

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: None

安装库: None

安装目录: /usr/lib/python3.11/site-packages/sphinxcontrib 和 /usr/lib/python3.11/site-packages/sphinxcontrib_qthelp-1.0.3.dist-info

Sphinxcontrib-serializinghtml-1.1.5

简介Sphinxcontrib-serializinghtml模块

Sphinxcontrib-serializinghtml包是一个Sphinx扩展,它输出“序列化”的HTML文件(json和pickle)。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Sphinxcontrib-serializinghtml依赖

可选 (用于测试)

pytest-7.2.1sphinx-6.1.3 (环形依赖)

安装Sphinxcontrib-serializinghtml

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user sphinxcontrib-serializinghtml

要测试安装,请运行 pytest.

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: None

安装库: None

安装目录: /usr/lib/python3.11/site-packages/sphinxcontrib 和 /usr/lib/python3.11/site-packages/sphinxcontrib_serializinghtml-1.1.5.dist-info

Typing_extensions-4.4.0

简介Typing_extensions模块

Typing_extensions模块允许使用系统上使用的Python版本中尚未定义的新类型系统功能。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Typing_extensions依赖

必要

flit_core-3.8.0

安装Typing_extensions

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

这个包没有附带测试套件。

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user typing_extensions

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: None

安装库: None

安装目录: /usr/lib/python3.11/site-packages/typing_extensions-4.4.0.dist-info

Typogrify-2.0.7

简介Typogrify模块

Typogrify提供了增强网页排版的过滤器,包括对Django和Jinja模板的支持。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Typogrify依赖

必要

smartypants-2.0.1

安装Typogrify

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

这个包没有附带测试套件。

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user typogrify

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: None

安装库: None

安装目录: /usr/lib/python3.11/site-packages/typogrify 和 /usr/lib/python3.11/site-packages/typogrify-2.0.7.dist-info

Urllib3-1.26.14

简介Urllib3模块

Urllib3模块是一个功能强大、用户友好的Python HTTP客户端。它带来了许多Python标准库所缺少的关键功能。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Urllib3依赖

可选 (用于测试)

pytest-7.2.1, mock, PySocks, pytest-freezegun, pytest-timeout, python-dateutil, tornado, 和 trustme

安装Urllib3

构建模块:

pip3 wheel -w dist --no-build-isolation --no-deps $PWD

现在,作为root用户:

pip3 install --no-index --find-links dist --no-cache-dir --no-user urllib3

假设安装了pytest-7.2.1,但没有安装其他可选依赖项,可以使用以下命令测试安装情况:

python3 -m venv --system-site-packages testenv &&
source testenv/bin/activate                    &&
pip3 install trustme         \
             tornado         \
             python-dateutil \
             mock            \
             pysocks         \
             pytest-timeout  \
             pytest-freezegun                  &&
python3 /usr/bin/pytest
deactivate

已知会发生一些错误。

命令解释

-w dist: 在目录dist中为这个模块构建合适的“wheel”。

--no-build-isolation: 告诉pip3在系统环境中运行构建,而不是创建临时的构建环境。

--no-deps: 阻止pip3为项目的依赖关系构建wheel。

--no-index: 忽略包索引(只查看–find-links URLs)。

--find-links dist: 查找归档文件的链接,例如dist目录下的wheel (.whl)文件。

--no-cache-dir: 禁用缓存以防止以root用户身份安装时出现警告。

--no-user: 防止非root用户错误地执行install命令。

--upgrade: 将包升级到可用的最新版本。如果已经安装了某个版本的包,则在install命令中使用此选项。

--force-reinstall: 重新安装包,即使它是最新的。如果重新安装包或恢复到包的早期版本,则与install命令一起使用此选项。

--no-deps: 不要安装依赖包。这个选项可能需要使用–upgrade 或 –force-reinstall选项。

内容

安装程序: None

安装库: None

安装目录: /usr/lib/python3.11/site-packages/urllib3 和 /usr/lib/python3.11/site-packages/urllib3-1.26.14.dist-info.

13.26 Ruby-3.2.1


简介Ruby

Ruby包包含Ruby开发环境。这对于面向对象的脚本很有用。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Ruby依赖

必要

libyaml-0.2.5

可选

Berkeley DB-5.3.28, Doxygen-1.9.6, Graphviz-7.1.0, rustc-1.67.1, Tk-8.6.13, Valgrind-3.20.0, 和 DTrace

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/ruby

安装Ruby

运行以下命令安装Ruby:

./configure --prefix=/usr      \
            --enable-shared    \
            --without-valgrind \
            --docdir=/usr/share/doc/ruby-3.2.1 &&
make

可选地,通过运行以下命令来构建CAPI文档:

make capi

要测试结果,执行: make check. 有超过25000个测试。一些与ipv6相关的测试可能会显示错误。如果测试运行在一个包含全局可写组件的目录中(例如/tmp),那么一些额外的测试可能会失败。一些测试可能会由于系统配置预期而失败。

现在,作为root用户:

make install

注意

如果你已经安装了Ruby-On-Rails应用程序,并通过安装此包来升级Ruby,你可能也需要在那里运行更新(以root用户):

cd /path/to/web/app
bundle update rake

并重新启动为应用程序提供服务的web服务器。

命令解释

--enable-shared: 这个开关可以用来构建libruby共享库。

--disable-install-doc: 此开关禁用构建和安装rdoc索引和C API文档。

--disable-install-rdoc: 该开关禁用构建和安装rdoc索引。

--disable-install-capi: 此开关禁用构建和安装C API文档。

--without-baseruby: 如果系统已经安装了ruby,则此开关将阻止使用该系统。构建系统将使用新构建的版本。

内容

安装程序: bundle, bundler, erb, gem, irb, racc, rake, rbs, rdbg, rdoc, ri, ruby, 和 typeprof

安装库: libruby.so

安装目录: /usr/include/ruby-3.2.0, /usr/lib/ruby, /usr/share/doc/ruby-3.2.1 和 /usr/share/ri

简要描述

bundle 创建成束的Ruby Gems。

bundler 管理应用程序生命周期中的依赖关系。

erb 是eRuby的一个命令行前端,它为Ruby提供了一个模板系统。

gem 是RubyGems的命令,这是一个复杂的Ruby包管理器。这类似于Python的’pip’命令。

irb 是Ruby的交互式接口。

rake 是一个类似于Ruby的构建工具。

rdbg 是Ruby的交互式调试器。

rdoc 生成Ruby文档。

ri 显示数据库中关于Ruby类、模块和方法的文档。

ruby 是一种解释脚本语言,用于快速简单的面向对象编程。

libruby.so 包含Ruby所需的API函数。

13.27 Rustc-1.67.1


简介Rust

Rust编程语言被设计为一种安全、并发、实用的语言。

这个包以六周的发布周期更新。因为它是一个庞大而缓慢的包,目前只有本书中的少数包需要它,特别是因为新版本往往会破坏旧的mozilla包,所以BLFS的编辑人员认为,只有在必要时才应该更新它(要么是为了修复问题,要么是为了允许构建新版本的包)。

与许多其他编程语言一样,rustc (rust编译器)需要用于引导的二进制文件。它会在构建开始时下载stage0二进制文件,因此在没有互联网连接的情况下无法编译它。

注意

尽管BLFS通常安装在/usr中,但当您稍后升级到新版本的rust时,/usr/lib/rustlib中的旧库将保留,它们的名称中有各种哈希值,但将无法使用,并会浪费空间。编辑器建议将文件放置在/opt目录中。特别是,如果你有理由使用修改过的配置重新构建(例如,在使用共享的LLVM构建后使用自带的LLVM,也许为BLFS LLVM构建不支持的架构编译crates),则安装可能会留下一个损坏的cargo程序。在这种情况下,要么首先删除现有的安装,要么使用不同的前缀,例如/opt/rustc-1.67.1-build2。

如果你愿意,你当然可以将前缀改为/usr

当前的rustbuild构建系统将使用所有处理器,尽管它的扩展性不好,并且经常在等待库编译时只使用一个核心。然而,它可以通过添加开关--jobs <N>的组合来限制处理器的指定数量。每次调用python3 ./x.py时,使用环境变量CARGO_BUILD_JOBS=<N>,以限制为4个处理器)。在运行一些rustc测试时,这是无效的。

rust的num_cpus的当前版本现在可以使用cgroups来限制允许使用的处理器。因此,如果你的机器缺乏DRAM(通常每个核少于2GB DRAM),这可能是使cpu离线的替代方案。这可以通过使用systemd-run命令来实现,其中-p User=$(whoami)-p AllowedCPUs=0-x (x替换为你想使用的CPU内核数量减一)选项。

目前Rust并不提供稳定ABI的任何保证。

注意

Rustc默认使用附带的LLVM副本为所有支持的体系结构构建。在BLFS中,构建只针对X86架构。如果你打算开发rust crates,这个版本可能不够好。

在同一台机器上重复此版本的构建时间通常是合理一致的,但与使用rustc的所有编译一样,可能会有一些非常慢的异常值。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Rust依赖

必要

CMake-3.25.2

推荐

cURL-7.88.1, libssh2-1.10.0, 和 LLVM-15.0.7 (使用-DLLVM_LINK_LLVM_DYLIB=ON构建,以便rust可以链接到系统LLVM,而不是构建其自带版本)

注意

如果未安装推荐的依赖项,则将构建并使用Rustc源代码tarball中的附带副本。

可选

GDB-13.1 (如果存在,则由测试套件使用) 和 libgit2

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/rust

安装Rust

注意

目前Rust编译器为32位x86生成SSE2指令,导致在没有支持SSE2的处理器的32位系统上生成的代码失效。2004年之后发布的所有x86处理器型号都应该支持SSE2-capable。运行 **lscpu grep sse2** 作为测试。如果它输出任何东西,说明你的CPU支持SSE2-capable,没问题。否则,您可以尝试在支持SSE2-capable的系统上构建此软件包,并应用以下修复程序:
sed 's@pentium4@pentiumpro@' -i \
    compiler/rustc_target/src/spec/i686_unknown_linux_gnu.rs

并将结果/opt/rustc-1.67.1复制到没有SSE2功能的系统。但这一变化仍在上游审查中,并没有经过BLFS编辑的测试。

要安装到/opt目录,请删除任何现有的/opt/rustc符号链接并创建一个新目录(即如果尝试修改相同版本的构建,则使用不同的名称)。作为root用户:

mkdir -pv /opt/rustc-1.67.1      &&
ln -svfn rustc-1.67.1 /opt/rustc

注意

如果在/opt中安装了多个版本的Rust,则只需更改/opt/rustc符号链接,然后运行ldconfig即可切换到另一个版本。

创建一个合适的config.toml文件来配置构建过程。

cat << EOF > config.toml
# see config.toml.example for more possible options
# See the 8.4 book for an old example using shipped LLVM
# e.g. if not installing clang, or using a version before 13.0

# tell x.py to not keep printing an annoying warning
changelog-seen = 2

[llvm]
# by default, rust will build for a myriad of architectures
targets = "X86"

# When using system llvm prefer shared libraries
link-shared = true

[build]
# omit docs to save time and space (default is to build them)
docs = false

# install extended tools: cargo, clippy, etc
extended = true

# Do not query new versions of依赖 online.
locked-deps = true

# Specify which extended tools (those from the default install).
tools = ["cargo", "clippy", "rustfmt"]

# Use the source code shipped in the tarball for the依赖.
# The combination of this and the "locked-deps" entry avoids downloading
# many crates from Internet, and makes the Rustc build more stable.
vendor = true

[install]
prefix = "/opt/rustc-1.67.1"
docdir = "share/doc/rustc-1.67.1"

[rust]
channel = "stable"
description = "for BLFS 11.3"

# BLFS used to not install the FileCheck executable from llvm,
# so disabled codegen tests.  The assembly tests rely on FileCheck
# and cannot easily be disabled, so those will anyway fail if
# FileCheck has not been installed.
#codegen-tests = false

[target.x86_64-unknown-linux-gnu]
# NB the output of llvm-config (i.e. help options) may be
# dumped to the screen when config.toml is parsed.
llvm-config = "/usr/bin/llvm-config"

[target.i686-unknown-linux-gnu]
# NB the output of llvm-config (i.e. help options) may be
# dumped to the screen when config.toml is parsed.
llvm-config = "/usr/bin/llvm-config"


EOF

运行以下命令编译Rust:

{ [ ! -e /usr/include/libssh2.h ] ||
  export LIBSSH2_SYS_USE_PKG_CONFIG=1; } &&
python3 ./x.py build

注意

测试套件将在systemd日志中为无效操作码的陷阱和分段错误生成一些消息。它们本身没什么好担心的,只是一种终止测试的方法。

运行测试(同样使用所有可用的cpu)问题:

python3 ./x.py test --verbose --no-fail-fast | tee rustc-testlog

如果LLVM中的FileCheck没有安装,那么“汇编”套件中的所有47个测试都会失败。

与所有大型测试套件一样,其他测试可能在某些机器上失败——如果额外的失败数量为个位数,请检查日志中的’failures:’,并检查上面的行,特别是’stderr:’行。在失败的测试中,任何提到SIGSEGV或信号11都是值得关注的。

如果你得到任何其他失败的测试报告的问题编号,那么你应该搜索该问题。例如,当使用10.0之前的sysllvm版本构建rustc >= 1.41.1时,针对69225问题的测试失败了https://github.com/rust-lang/rust/issues/69225,这应该被视为一个严重的失败(他们因此发布了1.41.1)。大多数其他的失败不会是严重的。

因此,您应该确定失败的数量。

通过和失败的测试数可以通过运行:

grep '^test result:' rustc-testlog |
 awk '{sum1 += $4; sum2 += $6} END { print sum1 " passed; " sum2 " failed" }'

其他可用字段为被忽略(即跳过)的$8,为“测量”的$10和为“过滤”的$12,但最后两个字段可能都为零。

现在,以root用户的身份安装该包:

注意

如果调用sudosu切换到root用户,请确保正确传递了LIBSSH2_SYS_USE_PKG_CONFIG,否则以下命令可能会完全重建此包。对于sudo,使用--preserve-env=LIBSSH2_SYS_USE_PKG_CONFIG选项。对于su,不要使用---login

python3 ./x.py install

命令解释

ln -svfn rustc-1.67.1 /opt/rustc: 如果这不是/opt/rustc符号链接的第一次使用,请强制重写它,并使用-n参数以避免从ls -l等命令中得到令人困惑的结果。

targets = “X86”: 这避免了构建所有可用的linux交叉编译器(AArch64、MIPS、PowerPC、SystemZ等)。不幸的是,rust坚持安装下面的源文件/opt/rustc/lib/src

extended = true: 这会在rustc旁边安装几个工具(通过tools条目指定)。

tools = [“cargo”, “clippy”, “rustfmt”]: 如果没有指定工具,那么Miri的缺失会导致安装失败。但是Miri并不是建立在稳定的信道上。其他一些工具不太可能有用,除非使用(旧的)代码分析器或编辑标准库。此设置与大多数用户推荐的二进制命令rustup中的’default’配置文件相匹配,只是在’[build]’部分开始时禁用了文档。

channel = “stable”: 这确保了只有稳定的功能可以使用,config.toml默认使用开发功能,这不适用于发布版本。

[target.x86_64-unknown-linux-gnu]: config.toml的语法要求每个使用system-llvm的目标都有一个llvm-config条目。如果你是在32位x86平台上构建,请将目标更改为[target.i686-unknown-linux-gnu]。如果您希望针对附带的llvm进行构建,或者没有clang,则可以省略这一节,但是生成的构建将更大,花费的时间更长。

export LIBSSH2_SYS_USE_PKG_CONFIG=1: 允许cargo链接到系统libssh2。

–verbose: 这个开关有时可以提供失败测试的更多信息。

–no-fail-fast: 这个开关确保测试套件不会在出现第一个错误时停止。

配置Rust

配置信息

如果您在/opt中安装了rustc,则需要更新以下配置文件,以便其他包和系统进程能够正确地找到rustc。

root用户身份,创建/etc/profile.d/rustc.sh文件:

cat > /etc/profile.d/rustc.sh << "EOF"
# Begin /etc/profile.d/rustc.sh

pathprepend /opt/rustc/bin           PATH

# Include /opt/rustc/man in the MANPATH variable to access manual pages
pathappend  /opt/rustc/share/man     MANPATH

# End /etc/profile.d/rustc.sh
EOF

安装完成后,立即以普通用户身份更新当前shell的当前路径:

source /etc/profile.d/rustc.sh

内容

安装程序: cargo-clippy, cargo-fmt, cargo, clippy-driver, rust-gdb, rust-gdbgui, rust-lldb, rustc, rustdoc, 和 rustfmt

安装库: librustc-driver-<16-byte-hash>.so, libstd-<16-byte-hash>.so, 和 libtest-<16-byte-hash>.so

安装目录: ~/.cargo, /opt/rustc, 符号链接到 /opt/rustc-1.67.1

简要描述

cargo-clippy 为cargo包提供lint检查。

cargo-fmt 使用rustfmt格式化当前crate的所有bin和lib文件。

cargo 是Rust的包管理器。

clippy-driver 提供Rust的lint检查。

rust-gdb 是一个gdb的包装器脚本,引入安装在/opt/rustc-1.67.1/lib/rustlib/etc中的Python美化打印模块。

rust-gdbgui 是在浏览器中运行的GDB图形前端的包装脚本。

rust-lldb 是一个用于LLDB (LLVM调试器)的包装器脚本,用于导入Python的美化打印模块。

rustc 是rust编译器。

rustdoc 从rust源代码生成文档。

rustfmt 格式化rust代码。

libstd-<16-byte-hash>.so 是Rust标准库,是可移植Rust软件的基础。

13.28 SCons-4.4.0


简介SCons

SCons是一个用Python实现的构建软件(和其他文件)的工具。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

SCons依赖

可选

docbook-xsl-nons-1.79.2libxslt-1.1.37

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/scons

安装SCons

root用户运行以下命令来安装SCons:

sed -i 's/env python/&3/' SCons/Utilities/*.py &&

python3 setup.py install --prefix=/usr \
                         --optimize=1  &&

mv -v /usr/lib/python3.11/site-packages/SCons-4.4.0-py3.11.egg/*.1 \
      /usr/share/man/man1

内容

安装程序: scons, scons-configure-cache, 和 sconsign

安装库: None

安装目录: /usr/lib/python3.11/site-packages/SCons

简要描述

scons 是一个软件构造工具。

scons-configure-cache 显示或转换SCons缓存目录的配置。

sconsign 打印SCons的.sconsign文件信息。

13.29 slang-2.3.3


简介slang

S-Lang(slang)是一种解释性语言,可以嵌入到应用程序中以使应用程序具有可扩展性。它提供交互应用程序所需的设施,如显示/屏幕管理、键盘输入和键映射。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Slang依赖

可选

libpng-1.6.39, PCRE-8.45, 和 Oniguruma

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/slang

安装Slang

注意

这个包不支持并行构建。

运行以下命令安装slang:

./configure --prefix=/usr \
            --sysconfdir=/etc \
            --with-readline=gnu &&
make -j1

要测试结果,执行: make check.

现在,作为root用户:

make install_doc_dir=/usr/share/doc/slang-2.3.3   \
     SLSH_DOC_DIR=/usr/share/doc/slang-2.3.3/slsh \
     install &&

chmod -v 755 /usr/lib/slang/v2/modules/*.so

命令解释

--with-readline=gnu: 此参数将GNU Readline设置为解析器接口使用,而不是使用slang内部版本。

make install_doc_dir=/usr/share/doc/slang-2.3.3 SLSH_DOC_DIR=/usr/share/doc/slang-2.3.3/slsh install: 这个命令使用版本化的文档安装目录安装这个包。

配置slang

配置文件

~/.slshrc and /etc/slsh.rc

内容

安装程序: slsh

安装库: libslang.so 以及众多的支持模块

安装目录: /usr/lib/slang, /usr/share/doc/slang-2.3.3 和 /usr/share/slsh

简要描述

slsh 是一个解释slang脚本的简单程序。它支持动态加载slang模块,并包括一个可交互使用的Readline接口。

13.30 Subversion-1.14.2


简介Subversion

Subversion是一个版本控制系统,旨在取代开源社区中的CVS。它扩展和增强了CVS的功能集,同时为那些已经熟悉CVS的人维护了类似的界面。这些说明安装用于操作Subversion存储库的客户端和服务器软件。在Running a Subversion Server中介绍了存储库的创建。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Subversion依赖

必要

Apr-Util-1.6.3SQLite-3.40.1

推荐

Serf-1.3.9 (用于处理http:// 和 https:// 链接)

可选

Apache-2.4.55, Boost-1.81.0, Cyrus SASL-2.1.28, dbus-1.14.6, Doxygen-1.9.6 (用于生成HTML文档), gnome-keyring-42.1, libsecret-0.20.5, Py3c-1.4 (用于python绑定和测试) Python-2.7.18 (使用sqlite支持测试), Ruby-3.2.1, SWIG-4.1.1 (用于构建Perl、Python和Ruby绑定), LZ4, 和 UTF8proc

可选 (对于Java绑定)

OpenJDK-19.0.2, DanteJikes, JUnit 4 (测试Java绑定) 和 apache-ant-1.10.13 其中之一.

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/subversion

安装Subversion

首先,修改一些Python脚本来使用python3:

grep -rl '^#!.*python$' | xargs sed -i '1s/python/&3/'

接下来,将Ruby绑定调整为Ruby-3.2:

sed -e 's/File.exists?/File.exist?/'               \
    -i subversion/bindings/swig/ruby/svn/util.rb   \
       subversion/bindings/swig/ruby/test/test_wc.rb

运行以下命令安装Subversion:

PYTHON=python3 ./configure --prefix=/usr             \
            --disable-static          \
            --with-apache-libexecdir  \
            --with-lz4=internal       \
            --with-utf8proc=internal &&
make

如果你已经安装了Doxygen-1.9.6并且希望构建API文档,请执行:

doxygen doc/doxygen.conf

如果你想构建Java绑定,将--enable-javahl参数传递给configure命令。此外,如果你想运行Java测试套件,你必须通过添加--with-junit=<path to junit jar>来指定JUnit文件的位置(例如--with-junit=/usr/local/java/lib/junit-4.13.jar)来configure。JUnit jar文件不再包含在apache-ant-1.10.13中,必须单独下载。要构建Java绑定,请执行以下命令:

make -j1 javahl

如果你想编译Perl、Python或Ruby绑定,执行以下任何一个命令:

make swig-pl # for Perl
make swig-py \
     swig_pydir=/usr/lib/python3.11/site-packages/libsvn \
     swig_pydir_extra=/usr/lib/python3.11/site-packages/svn # for Python
make swig-rb # for Ruby

要测试结果,执行: make check. 已知commit_tests.py, prop_tests.py, 和 update_tests.py套件中的四个测试会失败。

要测试任何SWIG绑定的结果,您可以使用以下任何命令: make check-swig-pl, make check-swig-py, 或 make check-swig-rb.

现在,作为root用户:

make install &&

install -v -m755 -d /usr/share/doc/subversion-1.14.2 &&
cp      -v -R doc/* /usr/share/doc/subversion-1.14.2

如果你构建了Java绑定,以root用户的身份执行以下命令来安装它们:

make install-javahl

如果你构建了Perl、Python或Ruby绑定,以root用户的身份执行以下任何命令来安装它们:

make install-swig-pl
make install-swig-py \
      swig_pydir=/usr/lib/python3.11/site-packages/libsvn \
      swig_pydir_extra=/usr/lib/python3.11/site-packages/svn
make install-swig-rb

运行测试需要安装java绑定,因为测试会在CLASSPATH中查找它们。要测试Java绑定构建的结果,请执行: LANG=C make check-javahl.

命令解释

--disable-static: 此开关防止安装库的静态版本。

--with-apache-libexecdir: 如果安装了Apache-2.4.55,则会构建共享的Apache模块。此开关允许将这些模块安装到Apache配置的模块目录中,而不是/usr/libexec。如果没有安装Apache,则无效。

--with-lz4=internal, --with-utf8proc=internal: 如果您已经安装了可选依赖项,请删除这些开关。

--enable-javahl: 启用Java高级绑定的编译。运行make javahl是进行编译的必要条件。

--with-junit=<location of the junit jar file>: 给出junit jar的位置,否则javahl测试将无法运行。

--disable-gmock: 不要使用Googlemock测试框架。

配置Subversion

配置文件

~/.subversion/config/etc/subversion/config

配置信息

/etc/subversion/config 是Subversion系统范围的配置文件。这个文件用于为不同的svn命令指定默认值。

~/.subversion/config 是用户的个人配置文件。它用于覆盖在/etc/subversion/config中设置的系统默认值。

内容

安装程序: svn, svnadmin, svnbench, svndumpfilter, svnfsfs, svnlook, svnmucc, svnrdump, svnserve, svnsync, 和 svnversion

安装库: libsvn_*-1.so 和 optionally, 一个Java库, mod_dav_svn.so和mod_authz_svn.so Apache HTTP DSO模块和各种Perl, Python和Ruby模块。

安装目录: /usr/include/subversion-1, /usr/lib/perl5/site_perl/5.36/{,auto/}SVN, /usr/lib/python3.11/site-packages/{libsvn,svn}, /usr/lib/ruby/site_ruby//{,-linux/}svn, /usr/lib/svn-javahl, 和 /usr/share/doc/subversion-1.14.2

简要描述

svn 是一个命令行客户端程序,用于访问Subversion存储库。

svnadmin 是用于创建、调整或修复Subversion存储库的工具。

svnbench 是一个基准测试工具。

svndumpfilter 是一个用于过滤Subversion存储库dumpfile格式流的程序。

svnfsfs 是FSFS(文件系统之上的文件系统——Subversion文件系统实现)存储库操作工具。

svnlook 是一个用于检查Subversion存储库的工具。

svnmucc 是Subversion的多URL命令客户端。

svnrdump 是一个用于转储或加载远程Subversion存储库的工具。

svnserve 是一个自定义的独立服务器程序,能够作为守护进程运行或通过SSH调用。

svnsync 是一个Subversion存储库同步工具。

svnversion 用于报告工作Subversion存储库副本的版本号和状态。

libsvn_*-1.so 是Subversion程序使用的支持库。

mod_authz_svn.so 是Apache HTTP服务器的插件模块,用于通过Internet或intranet对Subversion存储库的用户进行身份验证。

mod_dav_svn.so 是Apache HTTP服务器的插件模块,用于使Subversion存储库对Internet或intranet上的其他人可用。

13.31 Running a Subversion Server


运行Subversion服务器

本节将描述如何设置、管理和保护Subversion服务器。

Subversion Server依赖

必要

Subversion-1.14.2OpenSSH-9.2p1

设置Subversion服务器

下面的操作将安装一个Subversion服务器,它将被设置为使用OpenSSH作为安全远程访问方法,并使用svnserve进行匿名访问。

Subversion服务器的配置包括以下步骤:

1. 设置用户、组和权限

你需要是root用户来初始化配置。使用以下命令创建svn用户和组:

groupadd -g 56 svn &&
useradd -c "SVN Owner" -d /home/svn -m -g svn -s /bin/false -u 56 svn

如果您计划拥有多个存储库,则应该为每个存储库设置一个专门的组,以便管理。为test仓库创建svntest组,并使用以下命令将svn用户添加到该组中:

groupadd -g 57 svntest &&
usermod -G svntest -a svn

此外,在使用存储库时,您应该设置umask 002,以便所有新文件都可以由所有者和组写入。通过为svnsvnserve创建包装器脚本,可以强制执行此操作:

mv /usr/bin/svn /usr/bin/svn.orig &&
mv /usr/bin/svnserve /usr/bin/svnserve.orig &&
cat >> /usr/bin/svn << "EOF"
#!/bin/sh
umask 002
/usr/bin/svn.orig "$@"
EOF
cat >> /usr/bin/svnserve << "EOF"
#!/bin/sh
umask 002
/usr/bin/svnserve.orig "$@"
EOF
chmod 0755 /usr/bin/svn{,serve}

注意

如果你使用Apache通过HTTP访问仓库,即使是匿名访问,你也应该将/usr/sbin/httpd包装在类似的脚本中。

2. 创建Subversion存储库

有几种方法可以设置subversion存储库。建议大家看一下SVN Book对应章节。可以按照下面的说明设置一个基本的存储库。

使用以下命令(以root用户)创建一个新的Subversion存储库:

install -v -m 0755 -d /srv/svn &&
install -v -m 0755 -o svn -g svn -d /srv/svn/repositories &&
svnadmin create /srv/svn/repositories/svntest

现在已经创建了存储库,应该用一些有用的东西填充它。您需要有一个预定义的目录布局,设置完全符合您希望存储库的外观。例如,下面是一个示例的BLFS布局设置,根目录为svntest/。你需要建立一个类似于下面这样的目录树:

svntest/                # The name of the repository
    trunk/              # Contains the existing source tree
        BOOK/
        bootscripts/
        edguide/
        patches/
        scripts/
    branches/           # Needed for additional branches
    tags/               # Needed for tagging release points

一旦创建了如上所示的目录布局,就可以进行初始导入了:

svn import -m "Initial import." \
    </path/to/source/tree>      \
    file:///srv/svn/repositories/svntest

现在修改仓库的所有者和组信息,并添加一个非特权用户到svnsvntest组中:

chown -R svn:svntest /srv/svn/repositories/svntest    &&
chmod -R g+w         /srv/svn/repositories/svntest    &&
chmod g+s            /srv/svn/repositories/svntest/db &&
usermod -G svn,svntest -a <username>

svntest是分配给svntest仓库的组。如前所述,在使用OpenSSH进行身份验证时,这简化了对多个存储库的管理。接下来,你需要添加你的非特权用户,以及你希望对仓库有写访问权限的其他用户到svnsvntest组中。

此外,你会注意到新仓库的db目录是set-groupID。如果原因不是很明显,当使用任何外部认证方法(例如ssh)时,粘性位会设置为所有新文件都归用户所有,但属于svntest组。svntest组中的任何人都可以创建文件,但仍然给整个组写权限。这避免了将其他用户锁定在存储库中。

现在,切换到非特权用户账户,使用svnlook查看这个新仓库:

svnlook tree /srv/svn/repositories/svntest/

注意

您可能需要注销并再次登录以刷新您的组成员。su <username>也可以。

3. 配置服务器

如前所述,这些指令将配置服务器仅使用ssh来写访问仓库,并使用svnserve提供匿名访问。还有其他几种方法可以提供对存储库的访问。这些额外的配置最好在https://svnbook.red-bean.com/上解释。

需要对每个存储库进行访问配置。使用下面的命令为svntest仓库创建svnserve.conf文件:

cp /srv/svn/repositories/svntest/conf/svnserve.conf \
   /srv/svn/repositories/svntest/conf/svnserve.conf.default &&

cat > /srv/svn/repositories/svntest/conf/svnserve.conf << "EOF"
[general]
anon-access = read
auth-access = write
EOF

配置文件中没有太多内容。你会注意到只有general部分是必需的。查看svnserve.conf.default文件,了解如何使用svnserve内置的身份验证方法。

4. 启动服务器

要在启动时启动服务器,请从blfs-systemd-units-20220720包中安装svnserve.service:

make install-svnserve

此外,上述说明要求svn服务器使用umask 002,以便所有新文件都可以由所有者和组写入。这可以通过运行以下命令创建systemd单元覆盖文件来实现:

mkdir -p /etc/systemd/system/svnserve.service.d
echo "UMask=0002" > /etc/systemd/system/svnserve.service.d/99-user.conf

传递给svnserve守护进程的选项可以在/etc/default/svnserve中修改。

13.32 SWIG-4.1.1


简介SWIG

SWIG(简化的包装器和接口生成器,Simplified Wrapper and Interface Generator)是一个编译器,它集成了C和C++与Perl、Python、Tcl、Ruby、PHP、Java、C#、D、Go、Lua、Octave、R、Scheme和Ocaml等语言。SWIG还可以将其解析树导出为Lisp s-expressions和XML。

SWIG读取带注释的C/C++头文件并创建包装器代码(胶水代码),以便使所列出的语言可以使用相应的C/C++库,或者用脚本语言扩展C/C++程序。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

SWIG依赖

必要

pcre2-10.42

可选

Boost-1.81.0用于测试,以及介绍中提到的任何语言,作为运行时依赖项

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/swig

安装SWIG

运行以下命令安装SWIG:

./configure --prefix=/usr                      \
            --without-javascript               \
            --without-maximum-compile-warnings &&
make

要测试结果,执行: PY3=1 make -k check TCL_INCLUDE=. 取消变量TCL_INCLUDE的设置是必要的,因为它没有通过配置正确设置。测试只针对安装在您的机器上的语言执行,因此为测试提供的磁盘空间和SBU值可能会有所不同,应该考虑仅仅是数量级。根据SWIG的文档,某些测试的失败不应该被认为是有害的。go测试有很多bug,可能会生成很多无意义的输出。

现在,作为root用户:

make install &&
install -v -m755 -d /usr/share/doc/swig-4.1.1 &&
cp -v -R Doc/* /usr/share/doc/swig-4.1.1

命令解释

--without-maximum-compile-warnings: 禁用编译器ansi一致性强制,这会触发Lua头中的错误(从Lua 5.3开始)。

--without-<language>: 允许禁用对的测试和示例的构建,但所有SWIG的语言功能总是构建的。

内容

安装程序: swig 和 ccache-swig

安装库: None

安装目录: /usr/share/doc/swig-4.1.1 和 /usr/share/swig

简要描述

swig 接收一个包含C/C++声明和SWIG特殊指令的接口文件,并生成构建扩展模块所需的相应包装器代码。

ccache-swig 是一个编译器缓存,它可以加速C/C++/SWIG代码的重新编译。

13.33 Sysprof-3.46.0


简介Sysprof

sysprof包包含一个用于Linux的统计和系统范围的分析器。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Sysprof依赖

必要

desktop-file-utils-0.26, GTK-4.8.3, itstool-2.0.7, JSON-GLib-1.6.6, libadwaita-1.2.2, libdazzle-3.44.0, libunwind-1.6.2, 和 Polkit-122

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/sysprof

安装Sysprof

运行以下命令安装Sysprof:

mkdir build &&
cd    build &&

meson --prefix=/usr .. &&
ninja

要测试结果,执行: ninja test.

现在,作为root用户:

ninja install

内容

安装程序: sysprof, sysprof-agent, 和 sysprof-cli

安装库: libsysprof-4.so, libsysprof-capture-4.a, libsysprof-memory-4.so, libsysprof-speedtrack-4.so, 和 libsysprof-ui-5.so

安装目录: /usr/include/sysprof-4, /usr/include/sysprof-ui-5, 和 /usr/share/help/*/sysprof

简要描述

sysprof 是sysprof的图形界面。

sysprof-agent 用于分析容器中的应用程序。

sysprof-cli 是sysprof的命令行接口。

libsysprof-4.so 提供API函数,用于分析系统上运行的进程。

libsysprof-capture-4.a 提供一个钩子,用于从进程捕获统计信息。

libsysprof-memory-4.so 提供API函数来捕获内存统计信息。

libsysprof-speedtrack-4.so 提供用于跟踪进程运行速度的API函数。

libsysprof-ui-4.so 提供sysprof GUI的API函数。

13.34 Tk-8.6.13


简介Tk

Tk包包含一个TCL GUI工具包。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Tk依赖

必要

Xorg Libraries

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/tk

安装Tk

运行以下命令安装Tk:

cd unix &&
./configure --prefix=/usr \
            --mandir=/usr/share/man \
            $([ $(uname -m) = x86_64 ] && echo --enable-64bit) &&

make &&

sed -e "s@^\(TK_SRC_DIR='\).*@\1/usr/include'@" \
    -e "/TK_B/s@='\(-L\)\?.*unix@='\1/usr/lib@" \
    -i tkConfig.sh

不建议运行测试。测试期间将报告故障,这取决于屏幕分辨率/功能、安装的字体和其他X相关参数,但最终报告可能显示0个故障。有些测试会窃取你的注意力,有些可能会让你的X服务器崩溃。无论如何,要测试结果,请执行:make test。确保你在加载了GLX扩展的X Window显示设备上运行它,但即使这样,测试也可能挂起。

现在,作为root用户:

make install &&
make install-private-headers &&
ln -v -sf wish8.6 /usr/bin/wish &&
chmod -v 755 /usr/lib/libtk8.6.so

命令解释

$([ $(uname -m) = x86_64 ] && echo --enable-64bit): 此开关用于在64位操作系统上启用Tk的64位支持。

make install-private-headers: 这个命令用于安装链接到Tk库的其他包所使用的Tk库接口头。

ln -v -sf wish8.6 /usr/bin/wish: 这个命令用于创建一个到wish8.6文件的兼容性符号链接,因为许多包都希望有一个名为wish的文件。

sed -e … tkConfig.sh: Tk包希望保留它的源树,以便依赖它进行编译的包可以利用它。这个sed删除了对构建目录的引用,并将它们替换为更健全的系统范围内的位置。

内容

安装程序: wish 和 wish8.6

安装库: libtk8.6.so 和 libtkstub8.6.a

安装目录: /usr/lib/tk8.6

简要描述

wish 是指向wish8.6程序的符号链接。

wish8.6 是一个包含Tk工具包的简单shell,它创建一个主窗口,然后处理Tcl命令。

libtk8.6.so 包含Tk所需的API函数。

13.35 Vala-0.56.4


简介Vala

Vala是一种新的编程语言,旨在为GNOME开发人员带来现代编程语言特性,而不强加任何额外的运行时需求,与用C编写的应用程序和库相比,也不使用不同的ABI。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Vala依赖

必要

GLib-2.74.5

推荐

Graphviz-7.1.0 (valadoc所需)

可选

dbus-1.14.6 (测试所需), libxslt-1.1.37 (生成文档所需的), help2man, jing, 和 weasyprint

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/vala

安装Vala

运行以下命令安装Vala:

./configure --prefix=/usr &&
make

要测试结果,执行: make check.

现在,作为root用户:

make install

命令解释

--disable-valadoc: 如果没有安装Graphviz-7.1.0,则需要此选项。

内容

安装程序: vala, vala-0.56, valac, valadoc, vala-gen-introspect, 和 vapigen (符号链接); valac-0.56, valadoc-0.56, vala-gen-introspect-0.56, 和 vapigen-0.56

安装库: libvala-0.56.so 和 libvaladoc-0.56.so

安装目录: /usr/include/vala-0.56, /usr/include/valadoc-0.56, /usr/lib/vala-0.56, /usr/lib/valadoc-0.56, /usr/share/vala, /usr/share/vala-0.56, /usr/share/valadoc-0.56, 和 /usr/share/devhelp/books/vala-0.56

简要描述

valac 是一个编译器,将Vala源代码转换为C源代码和头文件。

valadoc 是一个文档生成器,用于基于libvala从Vala源代码生成API文档。

vala-gen-introspect 为基于GObject和GLib的包生成GI文件。

vapigen 是一个从GI文件生成Vala API (VAPI)文件的实用程序。

libvala-0.56.so 包含了Vala API函数。

13.36 Valgrind-3.20.0


简介Valgrind

Valgrind是一个用于构建动态分析工具的工具框架。有一些Valgrind工具可以自动检测许多内存管理和线程错误,并详细分析程序。Valgrind还可以用于构建新工具。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Valgrind依赖

可选

GDB-13.1 (用于测试), LLVM-15.0.7 (与Clang), 和 Which-2.21 (用于测试)

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/valgrind

安装Valgrind

运行以下命令安装Valgrind:

sed -i 's|/doc/valgrind||' docs/Makefile.in &&

./configure --prefix=/usr \
            --datadir=/usr/share/doc/valgrind-3.20.0 &&
make

要测试结果,执行: make regtest. 如果没有安装GDB-13.1,测试可能会永远挂起。有些测试也会挂起,这取决于glibc的版本。有些测试在不同的套件中可能会失败。有问题的测试可以通过将对应的.vgtest文件中的prereq:行更改为prereq: false来禁用。例如:

sed -e 's@prereq:.*@prereq: false@' \
    -i {helgrind,drd}/tests/pth_cond_destroy_busy.vgtest

注意

如果libgomp已使用--enable-linux-futex(默认值)编译,则跳过OpenMP测试。如果需要,只需从gcc构建树中重新编译libgomp库,传递--disable-linux-futex进行配置,将库存储到某个位置,并更改链接/usr/lib/libgomp.so.1指向新图书馆。

现在,作为root用户:

make install

命令解释

sed -i … docs/Makefile.in : 这个sed用于将文档安装到版本目录中。

--enable-lto=yes: 此选项允许使用LTO(链接时间优化)构建Valgrind。这将产生一个更小/更快的Valgrind(高达10%),但构建时间增加到大约5.5 SBU。

内容

安装程序: callgrind_annotate, callgrind_control, cg_annotate, cg_diff, cg_merge, ms_print, valgrind, valgrind-di-server, valgrind-listener, 和 vgdb

安装库: None

安装目录: /usr/lib/valgrind, /usr/libexec/valgrind, /usr/include/valgrind, 和 /usr/share/doc/valgrind-3.20.0

简要描述

valgrind 是一个用于调试和分析Linux可执行文件的程序。

callgrind_annotate 获取由Valgrind工具Callgrind生成的输出文件,并以易于阅读的形式打印信息。

callgrind_control 控制由Valgrind工具Callgrind运行的程序。

cg_annotate 是Valgrind工具Cachegrind的后处理工具。

cg_diff 比较两个Cachegrind输出文件。

cg_merge 将多个Cachegrind输出文件合并为一个。

ms_print 获取由Valgrind工具Massif生成的输出文件,并以易于阅读的形式打印信息。

valgrind-di-server 是从存储在不同机器上的对象中读取调试信息的服务器。

valgrind-listener 在socket上监听Valgrind的评论。

vgdb 是Valgrind和GDB之间的中介,或者是shell。

13.37 yasm-1.3.0


简介yasm

Yasm是NASM-2.16.01汇编程序的完整重写。它支持x86和AMD64指令集,接受NASM和GAS汇编语法,并输出二进制、ELF32和ELF64对象格式。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

yasm依赖

可选

Python-2.7.18cython-0.29.33

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/yasm

安装yasm

运行以下命令安装yasm:

sed -i 's#) ytasm.*#)#' Makefile.in &&

./configure --prefix=/usr &&
make

要测试结果,执行: make check.

现在,作为root用户:

make install

命令解释

sed -i ‘s#) ytasm.*#)#’ Makefile.in: 这个sed阻止了它编译两个只能在Microsoft Windows上使用的程序(vsyasm和ytasm)。

内容

安装程序: yasm

安装库: libyasm.a

安装目录: /usr/include/libyasm

简要描述

yasm 是一个可移植的、可重定向的汇编器,支持x86和AMD64指令集,接受NASM和GAS汇编器语法,并以ELF32和ELF64对象格式输出二进制文件。

libyasm.a 提供yasm的所有核心功能,用于操作机器指令和目标文件构造。

Java

13.38 Java-19.0.2


关于Java

Java不同于LFS和BLFS中的大多数包。它是一种编程语言,使用字节码文件获取指令,并在Java虚拟机(JVM)中执行。java入门程序如下所示:

public class HelloWorld
{
    public static void main(String[] args)
    {
        System.out.println("Hello, World");
    }
}

这个程序被保存为HelloWorld.java。文件HelloWorld必须与类名匹配。然后使用javac HelloWorld.java将其转换为字节码。输出文件是HelloWorld.class。该程序使用java HelloWorld执行。这将创建一个JVM并运行代码。’class’扩展名不能被指定。

可以使用jar命令将多个类文件合并为一个文件。这类似于标准的tar命令。例如,命令jar cf myjar.jar *.class将把一个目录中的所有类文件合并为一个jar文件。它们充当库文件。

JVM可以自动搜索和使用jar文件中的类。它使用CLASSPATH环境变量来搜索jar文件。这是一个以冒号分隔的目录名称的标准列表,类似于PATH环境变量。

二进制JDK信息

从源代码创建JVM需要一组循环依赖。首先需要一组称为Java开发包(JDK)的程序。这组程序包括javajavacjar和其他一些程序。它还包括几个基本jar文件。

首先,我们安装由BLFS编辑器创建的JDK二进制安装包。它安装在/opt目录中,以允许多次安装,包括基于源代码的版本。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

二进制包信息

Java 二进制运行时依赖

alsa-lib-1.2.8, Cups-2.4.2, giflib-5.2.1, 和 Xorg Libraries

安装Java BinaryJDK

首先提取适合您的体系结构的二进制压缩包,并更改到提取的目录。以root用户的身份使用以下命令安装二进制OpenJDK:

install -vdm755 /opt/OpenJDK-19.0.2-bin &&
mv -v * /opt/OpenJDK-19.0.2-bin         &&
chown -R root:root /opt/OpenJDK-19.0.2-bin

现在安装了二进制版本。你可以以root用户身份通过以下命令创建指向该版本的符号链接:

ln -sfn OpenJDK-19.0.2-bin /opt/jdk

您现在可以继续Configuring the JAVA environment,其中的说明假定上面的链接存在。

13.39 OpenJDK-19.0.2


简介OpenJDK

OpenJDK是Oracle的Java标准版平台的一个开源实现。OpenJDK对于开发Java程序非常有用,它提供了一个完整的运行环境。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

OpenJDK是GPL的代码,只有一个特殊的例外,非免费项目可以在其专有产品中使用这些类。与允许非自由程序链接到自由软件提供的库的LGPL类似的方式,GNU General Public License, version 2, with the Classpath Exception允许第三方程序使用自由软件提供的类,而不要求第三方软件也是自由的。与LGPL一样,对第三方应用程序的免费软件部分所做的任何修改也必须是免费提供的。

注意

OpenJDK源代码包含一个使用JTreg测试套件的非常全面的开源测试套件。下面的测试说明允许测试刚构建的JDK与专有的Oracle JDK的合理兼容性。然而,为了让一个独立的实现声明兼容性,它必须通过一个专有的JCK/TCK测试套件。没有通过批准的测试套件,不能声明兼容性,甚至部分兼容性。

Oracle确实提供免费的社区访问,在每个案例的基础上,封闭的工具包,以确保与其专有的JDK 100%兼容。Java-19.0.2页面上提供的二进制版本和按照下面的指令构建的JVM都没有在TCK上测试过。使用上述说明构建的任何版本都不能声称与专有的JDK兼容,除非用户自行申请并完成兼容性测试。

考虑到这一点,使用此构建方法生成的二进制文件将由上面网站上列出的成员定期针对TCK进行测试。除了上面的社区许可之外,还可以在here获得TCK的教育、非商业许可。

包信息

额外下载

Optional test harness

OpenJDK依赖

必要依赖

现有的二进制文件(Java-19.0.2或此包的早期构建版本。下面的说明假设您正在使用Configuring the JAVA environment), alsa-lib-1.2.8, cpio-2.13, Cups-2.4.2, UnZip-6.0, Which-2.21, Xorg Libraries, 和 Zip-3.0

推荐

make-ca-1.12, giflib-5.2.1, Little CMS-2.14, libjpeg-turbo-2.1.5.1, libpng-1.6.39, 和 Wget-1.21.3

可选

git-2.39.2, Graphviz-7.1.0, Mercurial-6.3.2, pandoc, 和 pigz

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/openjdk

安装OpenJDK

如果你已经下载了可选的测试工具,现在就解压它:

tar -xf ../jtreg-6.1+1.tar.gz

注意

在继续之前,你应该确保环境变量PATH包含用于引导OpenJDK的Java编译器的位置。这是环境的唯一要求。现代Java安装不需要JAVA_HOME,这里也不需要使用CLASSPATH。此外,OpenJDK开发者建议取消设置JAVA_HOME

构建系统不允许在MAKEFLAGS中使用-j开关。有关自定义并行化的更多信息,请参阅命令解释--with-jobs=

使用以下命令配置和构建包:

unset JAVA_HOME                             &&
bash configure --enable-unlimited-crypto    \
               --disable-warnings-as-errors \
               --with-stdc++lib=dynamic     \
               --with-giflib=system         \
               --with-jtreg=$PWD/jtreg      \
               --with-lcms=system           \
               --with-libjpeg=system        \
               --with-libpng=system         \
               --with-zlib=system           \
               --with-version-build="7"     \
               --with-version-pre=""        \
               --with-version-opt=""        \
               --with-cacerts-file=/etc/pki/tls/java/cacerts &&
make images

要测试结果,需要执行jtreg程序。你可以在下面的命令中添加-conc:<X>值来设置并发测试的数量(否则测试将按顺序运行):

export JT_JAVA=$(echo $PWD/build/*/jdk) &&
jtreg/bin/jtreg -jdk:$JT_JAVA -automatic -ignore:quiet -v1 \
    test/jdk:tier1 test/langtools:tier1 &&
unset JT_JAVA

要对测试套件有更多的控制,请查看jtreg/doc/jtreg/usage.txt中的文档。要查看结果,请查看文件JTreport/test_{jdk,langtools}/text/stats.txtJTreport/test_{jdk,langtools}/text/summary.txt。您应该预计会看到大约60个失败和10个错误。

root用户使用以下命令安装包:

install -vdm755 /opt/jdk-19.0.2+7             &&
cp -Rv build/*/images/jdk/* /opt/jdk-19.0.2+7 &&
chown -R root:root /opt/jdk-19.0.2+7          &&
for s in 16 24 32 48; do
  install -vDm644 src/java.desktop/unix/classes/sun/awt/X11/java-icon${s}.png \
                  /usr/share/icons/hicolor/${s}x${s}/apps/java.png
done

注意

如果你只想安装Java运行时环境,你可以在上面的cp命令中替换build/*/images/jre

现在在/opt中安装了两个OpenJDK SDK。你应该决定使用哪个作为默认值。通常,你会选择刚安装的OpenJDK。如果是,以root用户执行以下操作:

ln -v -nsf jdk-19.0.2+7 /opt/jdk

如果需要,你可以创建。desktop文件来在javajconsole菜单中添加条目。所需的图标已经安装。作为root用户:

mkdir -pv /usr/share/applications &&

cat > /usr/share/applications/openjdk-java.desktop << "EOF" &&
[Desktop Entry]
Name=OpenJDK Java 19.0.2 Runtime
Comment=OpenJDK Java 19.0.2 Runtime
Exec=/opt/jdk/bin/java -jar
Terminal=false
Type=Application
Icon=java
MimeType=application/x-java-archive;application/java-archive;application/x-jar;
NoDisplay=true
EOF
cat > /usr/share/applications/openjdk-jconsole.desktop << "EOF"
[Desktop Entry]
Name=OpenJDK Java 19.0.2 Console
Comment=OpenJDK Java 19.0.2 Console
Keywords=java;console;monitoring
Exec=/opt/jdk/bin/jconsole
Terminal=false
Type=Application
Icon=java
Categories=Application;System;
EOF

命令解释

bash configure…: 顶层的configure封装了autotools。它是不可执行的,必须通过bash运行。

--enable-unlimited-crypto: 由于某些国家对密码学的使用有限制,因此可以限制策略文件中加密密钥的大小和某些算法的使用。该开关允许不受限制地传送策略文件。确保适当遵守法律是用户的责任。

--disable-warnings-as-errors: 这个开关禁止在构建中使用-Werror

--with-stdc++lib=dynamic: 这个开关强制构建系统链接到libstdc++.so(动态)而不是libstdc++.a(静态)。

--with-jobs=<X>: 传递给make的-j不能与这里调用的make一起工作。默认情况下,构建系统将使用cpu数量减1。

--with-jtreg=$PWD/jtreg: 这个开关告诉configure在哪里找到jtreg。如果没有下载可选的测试套件,请忽略。

--with-{giflib,lcms,libjpeg,libpng,zlib}=system: 这些开关强制构建系统使用系统库而不是捆绑的版本。

--with-version-build: 目前,构建系统没有在版本字符串中包含构建号。它必须在这里指定。

--with-version-pre: 这个开关允许你使用自定义字符串作为版本字符串的前缀。

--with-version-opt: 这个开关允许你在版本字符串中添加一个可选的构建描述。

--with-cacerts-file=/etc/pki/tls/java/cacerts: 指定在BLFS系统的/etc/pki/tls/java/目录下查找cacerts文件。否则,创建一个空的。安装好Java二进制文件后,你可以使用/usr/sbin/make-ca –force命令来生成它。

--with-boot-jdk: 这个开关提供了临时JDK的位置。如果PATH中有java,则通常不需要它。

配置OpenJDK

配置信息

通常情况下,JAVA环境在安装二进制版本后就已经配置好了,也可以在刚构建的包中使用。如果您想要修改某些内容,请查看Configuring the JAVA environment

要测试手册页是否正确安装,请发出source /etc/profileman java命令来显示各自的手册页。

设置JRE证书颁发机构证书(cacerts)文件

如果你已经运行了make-ca-1.12页面上的说明,你只需要在cacerts文件的默认位置创建一个符号链接。以root用户:

ln -sfv /etc/pki/tls/java/cacerts /opt/jdk/lib/security/cacerts

要检查安装情况,请执行以下命令:

cd /opt/jdk
bin/keytool -list -cacerts

Enter keystore password:提示符下,输入changeit(默认值)或者直接按“Enter”键。如果正确安装了cacerts文件,你将看到一个包含每个证书相关信息的证书列表。如果没有安装,请重新安装。

内容

安装程序: jar, jarsigner, java, javac, javadoc, javap, jcmd, jconsole, jdb, jdeprscan, jdeps, jfr, jhsdb, jimage, jinfo, jlink, jmap, jmod, jpackage, jps, jrunscript, jshell, jstack, jstat, jstatd, jwebserver, keytool, rmiregistry, 和 serialver

安装库: /opt/jdk-19.0.2/lib/*

安装目录: /opt/jdk-19.0.2

简要描述

jar 将多个文件合并为单个jar归档文件。

jarsigner 对jar文件进行签名,并验证签名的jar文件的签名和完整性。

java 启动Java运行时环境,加载指定的类并调用其main方法,从而启动Java应用程序。

javac 读取用Java编程语言编写的类和接口定义,并将它们编译为字节码类文件。

javadoc 解析一组Java源文件中的声明和文档注释,并生成一组对应的HTML页面,描述类、接口、构造函数、方法和字段。

javap 反汇编一个Java类文件。

jcmd 是一个实用程序,用于向运行中的Java虚拟机发送诊断命令请求。

jconsole 是一个图形化的控制台工具,用于监视和管理本地和远程Java应用程序和虚拟机。

jdb 是一个简单的Java类的命令行调试器。

jdeprscan 扫描类或jar文件以获取废弃的API元素。

jdeps 显示Java类文件的包级或类级依赖关系。

jfr 是一个处理“Flight Recorder”文件的工具。

jhsdb 是一个工具,用于分析来自崩溃的Java虚拟机(JVM)的核心转储的内容。

jimage 用于列出、提取、验证或获取jimage格式的模块信息。

jinfo 打印给定Java进程、核心文件或远程调试服务器的Java配置信息。

jlink 用于组装和优化一组模块及其依赖项到自定义运行时映像中。

jmap 打印给定进程、核心文件或远程调试服务器的共享对象内存映射或堆内存细节。

jmod 创建JMOD文件并列出现有JMOD文件的内容。

jpackage 生成Java应用程序包和映像。

jps 列出目标系统上安装的jvm。

jrunscript 是一个命令行脚本shell。

jshell 是一个用于学习Java编程语言和原型设计Java代码的交互式工具。

jstack 打印给定Java进程、核心文件或远程调试服务器的Java线程的堆栈跟踪。

jstat 显示已安装的JVM的性能统计数据。

jstatd 是一个RMI服务器应用程序,用于监视插装jvm的创建和终止。

jwebserver 提供一个最小的HTTP服务器,用于原型设计、测试和调试。

keytool 是一个密钥和证书管理工具。

rmiregistry 在当前主机的指定端口上创建并启动远程对象注册表。

serialver 以适合复制到演进中的类的形式返回一个或多个类的serialVersionUID。

13.40 配置JAVA环境


设置环境

包安装完成后,下一步是确保系统能够正确地找到文件。如果你按照The Bash Shell Startup Files中的建议设置登录脚本,以root用户创建openjdk.sh脚本来更新环境:

cat > /etc/profile.d/openjdk.sh << "EOF"
# Begin /etc/profile.d/openjdk.sh

# Set JAVA_HOME directory
JAVA_HOME=/opt/jdk

# Adjust PATH
pathappend $JAVA_HOME/bin

# Add to MANPATH
pathappend $JAVA_HOME/man MANPATH

# Auto Java CLASSPATH: Copy jar files to, or create symlinks in, the
# /usr/share/java directory.

AUTO_CLASSPATH_DIR=/usr/share/java

pathprepend . CLASSPATH

for dir in `find ${AUTO_CLASSPATH_DIR} -type d 2>/dev/null`; do
    pathappend $dir CLASSPATH
done

for jar in `find ${AUTO_CLASSPATH_DIR} -name "*.jar" 2>/dev/null`; do
    pathappend $jar CLASSPATH
done

export JAVA_HOME
unset AUTO_CLASSPATH_DIR dir jar

# End /etc/profile.d/openjdk.sh
EOF

如果安装了Sudo-1.9.13p1,超级用户应该可以访问上述变量。以root用户执行以下命令:

cat > /etc/sudoers.d/java << "EOF"
Defaults env_keep += JAVA_HOME
Defaults env_keep += CLASSPATH
EOF

要使用mandb在其数据库中包含OpenJDK的手册页,以root用户的身份发出命令:

cat >> /etc/man_db.conf << "EOF" &&
# Begin Java addition
MANDATORY_MANPATH     /opt/jdk/man
MANPATH_MAP           /opt/jdk/bin     /opt/jdk/man
MANDB_MAP             /opt/jdk/man     /var/cache/man/jdk
# End Java addition
EOF

mkdir -p /var/cache/man &&
mandb -c /opt/jdk/man

设置Java的Certificate Authority证书

OpenJDK使用自己的CA证书格式。Java安全模块默认使用$JAVA_HOME/lib/security/cacerts。为了把所有的证书放在一个地方,我们使用/etc/ssl/java/cacertsmake-ca-1.12页面上的说明之前创建了位于/etc/ssl/java中的文件。以root用户的身份在默认位置设置一个符号链接:

ln -sfv /etc/pki/tls/java/cacerts /opt/jdk/lib/security/cacerts

使用以下命令检查cacerts文件是否已成功安装:

/opt/jdk/bin/keytool -list -cacerts

Enter keystore password:提示符下,输入changeit(默认值)或者直接按“Enter”键。如果正确安装了cacerts文件,你将看到一个包含每个证书相关信息的证书列表。如果没有安装,请重新安装。

如果稍后安装新的JVM,只需在默认位置创建符号链接即可使用cacerts。

13.41 apache-ant-1.10.13


简介Apache Ant

Apache Ant包是一个基于java的构建工具。理论上,它类似于make命令,但没有make的wrinkles。Ant就不一样了。Ant不是使用基于shell的命令扩展的模型,而是使用Java类扩展的模型。配置文件是基于xml的,它调用一个目标树来执行各种任务,而不是编写shell命令。每个任务都由一个实现特定任务接口的对象运行。

已知此包可以使用LFS 11.3平台进行构建并正常工作。

包信息

Apache Ant依赖

必要

一个JDK (Java BinaryOpenJDK-19.0.2) 和 GLib-2.74.5

用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/apache-ant

安装Apache Ant

使用下面的命令构建一个有限的Apache Ant引导版本:

./bootstrap.sh

现在修复下一个命令试图从有问题的网站下载文件时的问题:

sed -e 's|ftp.software.ibm.com|anduin.linuxfromscratch.org|' \
    -e 's|software/awdtools/netrexx|BLFS/apache-ant|'        \
    -i fetch.xml 

使用fetch.xml ant构建脚本下载运行时依赖:

bootstrap/bin/ant -f fetch.xml -Ddest=optional

运行以下命令构建Apache Ant:

./build.sh -Ddist.dir=$PWD/ant-1.10.13 dist

root用户身份安装:

cp -rv ant-1.10.13 /opt/            &&
chown -R root:root /opt/ant-1.10.13 &&
ln -sfv ant-1.10.13 /opt/ant

命令解释

bootstrap/bin/ant -f fetch.xml -Ddest=optional: 将缺失的依赖项下载到用户的主目录,并将它们复制到源代码树中(在lib/optional目录中,ant在构建时将其提取)。

./build.sh -Ddist.dir=$PWD/ant-1.10.13 dist: 该命令构建、测试,然后将包安装到临时目录中。

配置Apache Ant

配置文件

/etc/ant/ant.conf, ~/.ant/ant.conf, 和 ~/.antrc

配置信息

有些包需要在搜索路径和定义的ANT_HOME环境变量中包含ant。通过以root用户的身份发出命令来满足这些要求:

cat > /etc/profile.d/ant.sh << EOF
# Begin /etc/profile.d/ant.sh

pathappend /opt/ant/bin
export ANT_HOME=/opt/ant

# End /etc/profile.d/ant.sh
EOF

上面的说明假设您已经按照The Bash Shell Startup Files中描述的方式配置了系统。

内容

安装程序: ant, antRun, antRun.pl, complete-ant-cmd.pl, runant.pl, 和 runant.py

安装库: 大量的ant*.jar$ANT_HOME/lib中的依赖库

安装目录: /opt/ant-1.10.13

简要描述

ant 是一个基于Java的构建工具,许多包使用它来代替传统的make程序。

antRun 是一个支持脚本,用于在给定目录中启动ant构建脚本。

antRun.pl 是一个Perl脚本,提供了与antRun脚本类似的功能。

complete-ant-cmd.pl 是一个Perl脚本,它允许Bash完成ant命令行。

runant.pl 是一个用于调用ant的Perl包装脚本。

runant.py 是一个用于调用ant的Python包装脚本。

ant*.jar 文件是Apache Ant Java类库。

上一页      主目录      下一页