12. System Utilities
本章主要包含硬件实用工具。它还包含本书中用于安装或配置的其他应用程序所使用的一些应用程序。
12.1 AccountsService-22.08.8
简介AccountsService
AccountsService包提供了一组D-Bus接口用于查询和操作用户帐户信息,并基于usermod(8)、useradd(8)和userdel(8)命令实现了这些接口。
该软件包在LFS 11.3平台上可以正常构建和工作。
包信息
-
下载 (HTTP): https://www.freedesktop.org/software/accountsservice/accountsservice-22.08.8.tar.xz
-
下载 MD5 校验和: 6dae0b50b48abe61296c8ecf90068c1f
-
下载大小: 100 KB
-
预计所需磁盘空间: 7.3 MB
-
预计构建时间: 小于 0.1 SBU
AccountsService 依赖
必要
推荐
gobject-introspection-1.74.0 和 Systemd-252
可选
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/accountsservice
安装AccountsService
运行以下命令安装AccountsService:
mkdir build &&
cd build &&
meson --prefix=/usr \
--buildtype=release \
-Dadmin_group=adm \
.. &&
ninja
这个包没有附带测试套件。
现在,作为root用户:
ninja install
命令解释
--buildtype=release: 指定一个适合于稳定版本的构建类型,因为默认情况下可能会生成未优化的二进制文件。
-Dadmin_group=adm: 此开关为管理员帐户设置组。
-Ddocbook=true: 这个开关可以用来构建D-Bus接口API文档。
配置AccountsService
如果想让adm组中的用户拥有管理员权限,请以root用户执行以下命令:
cat > /etc/polkit-1/rules.d/40-adm.rules << "EOF"
polkit.addAdminRule(function(action, subject) {
return ["unix-group:adm"];
});
EOF
Systemd Unit
要在启动时启动accounts-daemon守护进程,请以root用户运行以下命令启用之前安装的systemd单元:
systemctl enable accounts-daemon
内容
安装程序: accounts-daemon (在 /usr/libexec)
安装库: libaccountsservice.so
安装目录: /usr/include/accountsservice-1.0, /usr/share/accountsservice, /usr/share/gtk-doc/html/libaccountsservice (可选), 和 /var/lib/AccountsService
简要描述
accounts-daemon 是AccountsService守护进程。
libaccountsservice.so 包含AccountsService API函数。
12.2 acpid-2.0.34
简介acpid
acpid(高级配置和电源接口事件守护进程)是一个用于交付ACPI事件的完全灵活、完全可扩展的守护进程。它监听netlink接口,当事件发生时,执行程序处理事件。它执行的程序是通过一组配置文件配置的,这些配置文件可以由包或用户放置到适当的位置。
该软件包在LFS 11.3平台上可以正常构建和工作。
包信息
-
下载 (HTTP): https://downloads.sourceforge.net/acpid2/acpid-2.0.34.tar.xz
-
下载 MD5 校验和: 988c2e3fd5ba0ea4492d3ba7273af295
-
下载大小: 160 KB
-
预计所需磁盘空间: 1.9 MB
-
预计构建时间: 小于 0.1 SBU
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/acpid
安装acpid
运行以下命令安装acpid:
./configure --prefix=/usr \
--docdir=/usr/share/doc/acpid-2.0.34 &&
make
这个包没有附带测试套件。
现在,作为root用户:
make install &&
install -v -m755 -d /etc/acpi/events &&
cp -r samples /usr/share/doc/acpid-2.0.34
配置acpid
Acpid由用户自定义事件配置。将事件文件放在/etc/acpi/events目录下。如果发生了事件,acpid递归遍历事件文件,以查看“event”之后定义的正则表达式是否匹配。如果有,则执行action。
下面的简单示例将在笔记本盖子关闭时挂起系统(它需要pm-utils-1.4.1):
cat > /etc/acpi/events/lid << "EOF"
event=button/lid
action=/etc/acpi/lid.sh
EOF
cat > /etc/acpi/lid.sh << "EOF"
#!/bin/sh
/bin/grep -q open /proc/acpi/button/lid/LID/state && exit 0
/usr/sbin/pm-suspend
EOF
chmod +x /etc/acpi/lid.sh
不幸的是,并不是每个计算机都以相同的方式标记ACPI事件。要确定如何识别按钮,请使用acpi_listen工具。另外,在/usr/share/doc/acpid-2.0.34下的samples目录中查看更多示例。
Systemd Socket
要在启动时启动acpid守护进程,请以“root”用户运行以下命令,从blfs-systemd-units-20220720包中安装systemd单元:
make install-acpid
注意
这个包使用套接字激活,并在需要时启动。这个包没有提供独立的单元文件。
内容
安装程序: acpid, acpi_listen, 和 kacpimon
安装库: None
安装目录: /etc/acpi 和 /usr/share/doc/acpid-2.0.34
简要描述
acpid 是一个监听ACPI事件并执行与接收到的事件匹配的规则的程序。
acpi_listen 是一个连接到acpid并监听事件的简单工具。
kacpimon 是一个监视程序,它连接到三个ACPI事件源(事件文件、netlink和输入层),然后报告它在连接时看到的内容。
12.3 at-3.2.5
简介at
at包提供延迟作业执行和批处理。它是符合Linux标准库(LSB)的必需。
该软件包在LFS 11.3平台上可以正常构建和工作。
包信息
-
下载 (HTTP): https://anduin.linuxfromscratch.org/BLFS/at/at_3.2.5.orig.tar.gz
-
下载 MD5 校验和: ca3657a1c90d7c3d252e0bc17feddc6e
-
下载大小: 130 KB
-
预计所需磁盘空间: 1.9 MB (包括测试)
-
预计构建时间: 小于 0.1 SBU
at依赖
必要
可选
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/at
安装at
在构建at之前,作为root用户,您应该创建组和用户atd,该用户将运行atd守护进程:
groupadd -g 17 atd &&
useradd -d /dev/null -c "atd daemon" -g atd -s /bin/false -u 17 atd
Install at with the following commands:
./configure --with-daemon_username=atd \
--with-daemon_groupname=atd \
SENDMAIL=/usr/sbin/sendmail \
--with-jobdir=/var/spool/atjobs \
--with-atspool=/var/spool/atspool \
--with-systemdsystemunitdir=/lib/systemd/system &&
make -j1
要测试结果,请执行以下命令: make test.
现在,作为root用户:
make install docdir=/usr/share/doc/at-3.2.5 \
atdocdir=/usr/share/doc/at-3.2.5
配置at
配置文件
/etc/at.allow 和 /etc/at.deny决定谁可以通过at或batch提交作业。
Linux PAM配置
如果At是使用Linux PAM支持构建的,则需要创建PAM配置文件,以便使其与BLFS正确工作。
以root用户身份发出以下命令,为Linux PAM创建配置文件:
cat > /etc/pam.d/atd << "EOF"
# Begin /etc/pam.d/atd
auth required pam_unix.so
account required pam_unix.so
password required pam_unix.so
session required pam_unix.so
# End /etc/pam.d/atd
EOF
Systemd Unit
要在启动时启动atd守护进程,请以root用户运行以下命令启用之前安装的systemd单元:
systemctl enable atd
内容
安装程序: at, atd, atq (符号链接), atrm (符号链接), atrun, 和 batch
安装库: None
安装目录: /usr/share/doc/at-3.2.5
简要描述
at 排队、检查或删除作业,以便稍后执行。
atd 是运行排队等待稍后执行的作业的守护进程。
atq 列出用户的待处理作业,如果是超级用户,则列出所有作业。
atrm 删除作业,由作业编号标识。
atrun 运行排队等待稍后执行的作业。
batch 是一个脚本,当系统加载级别允许时执行命令。
12.4 autofs-5.1.8
简介Autofs
Autofs控制自动挂载守护进程的操作。automount守护进程在访问文件系统时自动装载文件系统,并在一段时间不活动后卸载文件系统。这是基于一组预先配置的映射完成的。
该软件包在LFS 11.3平台上可以正常构建和工作。
包信息
-
下载 (HTTP): https://www.kernel.org/pub/linux/daemons/autofs/v5/autofs-5.1.8.tar.xz
-
下载 MD5 校验和: 72d81645d39a857c3d16bd3a32e9cb44
-
下载大小: 320 KB
-
预计所需磁盘空间: 6.5 MB
-
预计构建时间: 0.1 SBU
Autofs依赖
必要
libtirpc-1.3.3 和 rpcsvc-proto-1.4.3
可选
nfs-utils-2.6.2, libnsl-2.0.0, libxml2-2.10.3, MIT Kerberos V5-1.20.1, OpenLDAP-2.6.4 (仅客户端), 和 Cyrus SASL-2.1.28
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/autofs
内核配置
验证是否启用了automounter内核支持:
File systems --->
<*/M> Kernel automounter support (supports v3, v4, and v5) [CONFIG_AUTOFS_FS]
可选地,在内核配置中启用下列选项:
File systems --->
[*] Network File Systems ---> [CONFIG_NETWORK_FILESYSTEMS]
<*/M> NFS client support [CONFIG_NFS_FS]
<*/M> SMB3 and CIFS support (advanced network filesystem) [CONFIG_CIFS]
如有必要,重新编译并安装新内核。
安装Autofs
首先修复glibc-2.36引入的一个问题:
grep -rl linux/fs modules | xargs sed -i "/linux\/fs/d"
运行以下命令安装Autofs:
./configure --prefix=/usr \
--with-mapdir=/etc/autofs \
--with-libtirpc \
--with-systemd \
--without-openldap \
--mandir=/usr/share/man &&
make
这个包没有附带测试套件。
现在,作为root用户:
make install
当心
如果您的系统已经安装了autofs,请确保备份您的配置文件。它们将被以下命令覆盖。
安装默认配置文件,仍然以root用户:
make install_samples
命令解释
--with-libtirpc: 该开关强制包使用libtirpc来实现RPC功能,而不是依赖于Glibc的实现,这在LFS 8.1中已被删除。
--with-systemd: 此开关允许安装捆绑的systemd单元。
--without-openldap: 如果找到,此开关禁用openldap。如果需要openldap,则忽略此开关。请注意,autofs中的openldap支持需要 MIT Kerberos V5-1.20.1.
配置Autofs
配置文件
/etc/sysconfig/autofs.conf, /etc/autofs/auto.master, /etc/autofs/auto.misc, 和 /etc/autofs/auto.net
配置信息
安装过程创建了 auto.master, auto.misc, auto.smb, 和 auto.net. 以root用户的身份,用以下命令替换auto.master文件:
mv /etc/autofs/auto.master /etc/autofs/auto.master.bak &&
cat > /etc/autofs/auto.master << "EOF"
# Begin /etc/autofs/auto.master
/media/auto /etc/autofs/auto.misc --ghost
#/home /etc/autofs/auto.home
# End /etc/autofs/auto.master
EOF
这个文件创建了一个新的媒体目录/media/auto,它将覆盖所有现有的同名目录。在这个例子中,文件/etc/autofs/auto.misc中有一行:
cd -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
如果访问该目录,这将挂载一个cdrom为/media/auto/cd。--ghost选项告诉automounter为配置文件中列出的所有挂载点创建“ghost”版本(即空目录),无论文件系统是否实际挂载。这非常方便,并且强烈推荐使用,因为它将向您显示作为现有目录可用的自动挂载文件系统,即使它们的文件系统当前尚未挂载。如果没有--ghost选项,你将不得不记住目录的名称。只要尝试访问其中一个,目录就会被创建,文件系统就会被挂载。当文件系统再次卸载时,目录也会被销毁,除非指定了--ghost选项。
注意
另一种方法是指定另一个自动挂载位置,例如/var/lib/auto/cdrom,并从/media/cdrom创建一个指向自动挂载位置的符号链接。
auto.misc文件必须配置到你的工作硬件上。如果/dev/cdrom是激活的,加载的配置文件应该加载你的cdrom,或者它可以被编辑以匹配你的设备设置。软盘的例子可以在文件中找到,并且很容易激活。该文件的文档可以通过man 5 autofs命令获取。
在第二行中,如果启用,用户的home目录将在登录时通过NFS挂载。/etc/home.auto需要存在并且有一个类似于下面这样的条目:
joe example.org:/export/home/joe
其中目录/export/home/joe是通过NFS从example.org系统导出的。NFS共享将在下一页介绍。
此包还可以用于挂载SMB共享,但是在这些说明中没有配置该功能。有关其他配置信息,请参阅auto.master(5)的手册页。还有一些网络资源,比如AUTOFS HOWTO。
Systemd Unit
要在启动时启动Autofs,请以root用户运行以下命令启用之前安装的systemd单元:
systemctl enable autofs
注意
你也可以在/etc/sysconfig/autofs文件中指定OPTIONS变量,其中包含你可能想要传递给automount守护进程的任何额外参数。
内容
安装程序: automount
安装库: lookup_dir.so, lookup_file.so, lookup_files.so, lookup_hosts.so, lookup_ldap.so (可选), lookup_multi.so, lookup_nis.so, lookup_program.so, lookup_userhome.so, lookup_yp.so, mount_afs.so, mount_autofs.so, mount_bind.so, mount_changer.so, mount_ext2.so, mount_ext3.so, mount_ext4.so, mount_generic.so, mount_nfs.so, mount_nfs4.so, parse_amd.so, 和 parse_sun.so
安装目录: /usr/lib/autofs 和 /etc/autofs
简要描述
automount 是在向设备发出请求时执行挂载的守护进程。
12.5 BlueZ-5.66
简介BlueZ
BlueZ包包含Linux上的蓝牙协议栈。
该软件包在LFS 11.3平台上可以正常构建和工作。
包信息
-
下载 (HTTP): https://www.kernel.org/pub/linux/bluetooth/bluez-5.66.tar.xz
-
下载 MD5 校验和: 3f9496fedf878fba985e56713ed7752e
-
下载大小: 2.2 MB
-
预计所需磁盘空间: 149 MB (有测试)
-
预计构建时间: 0.4 SBU (使用并行数=4; 有测试)
BlueZ依赖
必要
dbus-1.14.6, GLib-2.74.5, 和 libical-3.0.16
可选
docutils-0.19 (生成手册页)
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/bluez
内核配置
如果构建此包是为了使用蓝牙设备(而不是作为构建依赖),请在内核配置中启用以下选项,如果要运行测试,请启用“Cryptographic API”部分中的选项,并在必要时重新编译内核:
General Setup --->
[ /*] Configure standard kernel features (expert users) [CONFIG_EXPERT]
(Note: if CONFIG_EXPERT is disabled, the following options will be
hidden and enabled implicitly. We DO NOT recommend to enable
CONFIG_EXPERT unless you are really an expert user.)
[*] Enable timerfd() system call [CONFIG_TIMERFD]
[*] Enable eventfd() system call [CONFIG_EVENTFD]
[*] Networking support ---> [CONFIG_NET]
<*/M> Bluetooth subsystem support ---> [CONFIG_BT]
<*/M> RFCOMM protocol support [CONFIG_BT_RFCOMM]
[*] RFCOMM TTY support [CONFIG_BT_RFCOMM_TTY]
<*/M> BNEP protocol support [CONFIG_BT_BNEP]
[*] Multicast filter support [CONFIG_BT_BNEP_MC_FILTER]
[*] Protocol filter support [CONFIG_BT_BNEP_PROTO_FILTER]
<*/M> HIDP protocol support [CONFIG_BT_HIDP]
Bluetooth device drivers --->
(Select the appropriate drivers for your Bluetooth hardware)
<*/M> RF switch subsystem support ---- [CONFIG_RFKILL]
-*- Cryptographic API --->
Crypto core or helper --- >
<*/M> User-space cryptographic algorithm configuration [CONFIG_CRYPTO_USER]
Block ciphers --->
<*/M> AES (Advanced Encryption Standard) [CONFIG_CRYPTO_AES]
AEAD (authenticated encryption with associated data) ciphers --->
<*/M> CCM (Counter with Cipher Block Chaining-MAC) [CONFIG_CRYPTO_CCM]
Hashes, digests, and MACs --->
<*/M> CMAC (Cipher-based MAC) [CONFIG_CRYPTO_CMAC]
Userspace interface --->
<*/M> Hash algorithms [CONFIG_CRYPTO_USER_API_HASH]
<*/M> Symmetric key cipher algorithms [CONFIG_CRYPTO_USER_API_SKCIPHER]
<*/M> AEAD cipher algorithms [CONFIG_CRYPTO_USER_API_AEAD]
安装BlueZ
运行以下命令安装BlueZ:
./configure --prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
--disable-manpages \
--enable-library &&
make
要测试结果,请执行以下命令: make check.
现在,作为root用户:
make install &&
ln -svf ../libexec/bluetooth/bluetoothd /usr/sbin
以root用户身份安装主配置文件:
install -v -dm755 /etc/bluetooth &&
install -v -m644 src/main.conf /etc/bluetooth/main.conf
如果需要,以root用户的身份安装API文档:
install -v -dm755 /usr/share/doc/bluez-5.66 &&
install -v -m644 doc/*.txt /usr/share/doc/bluez-5.66
命令解释
--disable-manpages: 这个开关禁止生成手动页面,因为它依赖于文档中的’rst2man’。如果你已经安装了docutils-0.19并希望生成手册页,请删除此开关。
--enable-library: 此开关允许构建某些应用程序所需的BlueZ 4兼容性库。
ln -svf ../libexec/bluetooth/bluetoothd /usr/sbin: 该命令使访问蓝牙守护进程更加方便。
配置BlueZ
配置文件
/etc/bluetooth/main.conf会在安装过程中自动安装。此外,还有两个补充的配置文件。你可以选择以root用户的身份安装以下文件:
cat > /etc/bluetooth/rfcomm.conf << "EOF"
# Start rfcomm.conf
# Set up the RFCOMM configuration of the Bluetooth subsystem in the Linux kernel.
# Use one line per command
# See the rfcomm man page for options
# End of rfcomm.conf
EOF
cat > /etc/bluetooth/uart.conf << "EOF"
# Start uart.conf
# Attach serial devices via UART HCI to BlueZ stack
# Use one line per device
# See the hciattach man page for options
# End of uart.conf
EOF
Systemd Bluez服务
要在启动时启动bluetoothd守护进程,以root用户运行以下命令启用之前安装的systemd单元:
systemctl enable bluetooth
要启动用户会话的obexd守护进程(以支持一些使用它的蓝牙程序),请以root用户身份运行以下命令,为所有用户启用之前安装的systemd单元:
systemctl enable --global obex
注意
只有在系统上检测到蓝牙设备时,Systemd才会启动蓝牙守护进程。
内容
安装程序: bluemoon, bluetoothctl, bluetoothd (符号链接), btattach, btmon, hex2hcd, l2ping, l2test, mpris-proxy, 和 rctest
安装库: libbluetooth.so
安装目录: /etc/bluetooth, /usr/{include,libexec}/bluetooth, 和 /usr/share/doc/bluez-5.66
简要描述
bluemoon 是一个Bluemoon配置实用工具。
bluetoothctl 是交互式蓝牙控制程序。
bluetoothd 是蓝牙守护进程。
btmon 提供对蓝牙子系统监控基础设施的访问,以读取HCI跟踪。
hex2hcd 用于将Broadcom设备所需的文件转换为hcd (Broadcom蓝牙固件)格式。
l2ping 用于向带点十六进制表示法的蓝牙MAC地址发送L2CAP echo请求。
l2test 是一个L2CAP测试程序。
rctest 用于测试蓝牙协议栈上的RFCOMM通信。
libbluetooth.so 包含BlueZ 4 API函数。
12.6 Bubblewrap-0.7.0
简介Bubblewrap
Bubblewrap是用户命名空间或沙盒的setuid实现,它提供了对内核用户命名空间特性子集的访问。Bubblewrap允许用户拥有的进程在一个隔离的环境中运行,并限制对底层文件系统的访问。
该软件包在LFS 11.3平台上可以正常构建和工作。
包信息
-
下载 (HTTP): https://github.com/containers/bubblewrap/releases/download/v0.7.0/bubblewrap-0.7.0.tar.xz
-
下载 MD5 校验和: 37892167cbc3bd2a54b396033892e2ae
-
下载大小: 148 KB
-
预计所需磁盘空间: 3.1 MB (有测试)
-
预计构建时间: 小于 0.1 SBU (有测试)
Bubblewrap依赖
可选
libxslt-1.1.37 (生成手册页) 和 libseccomp-2.5.4 (内置python绑定,用于测试)
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/bubblewrap
安装Bubblewrap
运行以下命令安装Bubblewrap:
mkdir build &&
cd build &&
meson --prefix=/usr --buildtype=release .. &&
ninja
接下来,如果你想运行测试套件,修复一个由LFS中merged-/usr配置引起的问题:
sed 's@symlink usr/lib64@ro-bind-try /lib64@' -i ../tests/libtest.sh
要测试结果,请执行以下命令: ninja test
现在,作为root用户:
ninja install
命令解释
--buildtype=release: 指定一个适合于稳定版本的构建类型,因为默认情况下可能会生成未优化的二进制文件。
内容
安装程序: bwrap
安装库: None
安装目录: None
简要描述
bwrap 生成一个运行程序的沙盒。
12.7 Colord-1.4.6
简介Colord
Colord是一个系统服务,它使管理、安装和生成颜色配置文件变得容易。它主要由GNOME颜色管理器用于系统集成,并在没有用户登录时使用。
该软件包在LFS 11.3平台上可以正常构建和工作。
包信息
-
下载 (HTTP): https://www.freedesktop.org/software/colord/releases/colord-1.4.6.tar.xz
-
下载 MD5 校验和: 7dbdc807495890c13e8242385f4c641f
-
下载大小: 1.8 MB
-
预计所需磁盘空间: 32 MB (有测试)
-
预计构建时间: 0.3 SBU (有测试)
Colord依赖
必要
dbus-1.14.6, GLib-2.74.5, Little CMS-2.14, Polkit-122, 和 SQLite-3.40.1
推荐
gobject-introspection-1.74.0, libgudev-237, libgusb-0.4.5, Systemd-252, 和 Vala-0.56.4
可选
gnome-desktop-43.2 和 colord-gtk-0.3.0 (来构建示例工具), DocBook-utils-0.6.14, GTK-Doc-1.33.2, libxslt-1.1.37, SANE-1.0.32, ArgyllCMS, 和 Bash Completion
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/colord
安装Colord
在colord守护进程启动后,应该有一个专门的用户和组来控制它。以root用户身份执行以下命令:
groupadd -g 71 colord &&
useradd -c "Color Daemon Owner" -d /var/lib/colord -u 71 \
-g colord -s /bin/false colord
修复了double free导致32位x86上构建失败和运行时某些监视器崩溃的问题:
sed '/cmsUnregisterPluginsTHR/d' -i lib/colord/cd-context-lcms.c
运行以下命令安装Colord:
mkdir build &&
cd build &&
meson --prefix=/usr \
--buildtype=release \
-Ddaemon_user=colord \
-Dvapi=true \
-Dsystemd=true \
-Dlibcolordcompat=true \
-Dargyllcms_sensor=false \
-Dbash_completion=false \
-Ddocs=false \
-Dman=false .. &&
ninja
现在,作为root用户:
ninja install
要测试结果,请执行以下命令: ninja test. 如果包已经安装,colord-self-test-daemon测试将会失败。测试套件必须在系统级D-Bus守护进程运行的情况下运行。
命令解释
--buildtype=release: 指定一个适合于稳定版本的构建类型,因为默认情况下可能会生成未优化的二进制文件。
-Ddaemon_user=colord: 使用这个开关,colord守护进程将以非特权用户而不是root用户运行。
-Dvapi=true: 这个开关允许构建Vala绑定。如果你没有安装Vala-0.56.4,请删除。
-Dsystemd=true: 此开关用于安装systemd服务。
-Dlibcolordcompat=true: 这个开关可以为使用Colord的旧包构建兼容库。
-Dargyllcms_sensor=false: 此开关禁用ArgLLCMS传感器驱动程序。如果你安装了ArgyllCMS并希望使用它,请省略它。
-Dbash_completion=false: 这个开关禁用了对Colord应用程序的Bash补全支持。
-Ddocs=false: 此开关禁用文档的构建。如果你有GTK-Doc-1.33.2可用,请忽略。
-Dman=false: 此开关禁用手册页的构建。如果你有DocBook-utils-0.6.14可用,请忽略。还需要docbook-xsl样式表的命名空间版本。
内容
安装程序: cd-create-profile, cd-fix-profile, cd-iccdump, cd-it8, 和 colormgr
安装库: libcolord.so, libcolordcompat.so, libcolordprivate.so, 和 libcolorhug.so
安装目录: /usr/include/colord-1, /usr/lib/colord-{plugins,sensors}, /usr/share/color{d}, /usr/share/gtk-doc/html/colord, 和 /var/lib/colord
简要描述
cd-create-profile 是颜色管理器配置文件创建工具。
cd-fix-profile 是用于修复ICC配置文件中的元数据的工具。
cd-iccdump 将ICC配置文件的内容转储为人类可读的文本。
cd-it8 是颜色管理器测试工具。
colormgr 是一个文本模式程序,允许你在命令行上与colord交互。
libcolord.so 包含Colord API函数。
libcolordcompat.so 包含兼容旧应用程序的遗留API函数。
libcolordprivate.so 包含了Colord程序的内部API函数。
libcolorhug.so 包含一个简单的显示硬件着色器。
12.8 cpio-2.13
简介cpio
cpio包包含用于归档的工具。
该软件包在LFS 11.3平台上可以正常构建和工作。
包信息
-
下载 MD5 校验和: f3438e672e3fa273a7dc26339dd1eed6
-
下载大小: 1.3 MB
-
预计所需磁盘空间: 17 MB (使用测试和文档)
-
预计构建时间: 0.3 SBU (使用测试和文档)
CPIO依赖
可选
texlive-20220321 (或 install-tl-unx)
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/cpio
安装cpio
首先,修复使用GCC-10及更高版本时的构建问题:
sed -i '/The name/,+2 d' src/global.c
运行以下命令安装cpio:
./configure --prefix=/usr \
--enable-mt \
--with-rmt=/usr/libexec/rmt &&
make &&
makeinfo --html -o doc/html doc/cpio.texi &&
makeinfo --html --no-split -o doc/cpio.html doc/cpio.texi &&
makeinfo --plaintext -o doc/cpio.txt doc/cpio.texi
如果你已经安装了texlive-20220321,并希望创建PDF或Postscript文档,执行以下命令之一或两个:
make -C doc pdf &&
make -C doc ps
要测试结果,请执行以下命令: make check.
现在,作为root用户:
make install &&
install -v -m755 -d /usr/share/doc/cpio-2.13/html &&
install -v -m644 doc/html/* \
/usr/share/doc/cpio-2.13/html &&
install -v -m644 doc/cpio.{html,txt} \
/usr/share/doc/cpio-2.13
如果你构建了PDF或Postscript文档,以root用户的身份执行以下命令来安装:
install -v -m644 doc/cpio.{pdf,ps,dvi} \
/usr/share/doc/cpio-2.13
命令解释
--enable-mt: 此参数强制构建和安装mt程序。
--with-rmt=/usr/libexec/rmt: 这个参数抑制了构建rmt程序,因为它已经被LFS中的Tar包安装了。
内容
安装程序: cpio 和 mt
安装库: None
安装目录: /usr/share/doc/cpio-2.13
简要描述
cpio 从档案中复制文件。
mt 控制磁带驱动器的操作。
12.9 cups-pk-helper-0.2.7
简介cups-pk-helper
cups-pk-helper包包含一个PolicyKit助手,用于为Cups配置细粒度权限。
该软件包在LFS 11.3平台上可以正常构建和工作。
包信息
-
下载 (HTTP): https://www.freedesktop.org/software/cups-pk-helper/releases/cups-pk-helper-0.2.7.tar.xz
-
下载 MD5 校验和: 0cdadec9ea8f88b7fc7af8ca206da2bd
-
下载大小: 56 KB
-
预计所需磁盘空间: 5.3 MB
-
预计构建时间: 0.1 SBU
cups-pk-helper依赖
必要
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/cups-pk-helper
安装cups-pk-helper
运行以下命令安装cups-pk-helper:
mkdir build &&
cd build &&
meson --prefix=/usr .. &&
ninja
这个包没有附带测试套件。
现在,作为root用户:
ninja install
内容
安装程序: cups-pk-helper-mechanism (library executable)
安装库: None
安装目录: None
12.10 dbus-1.14.6
简介D-Bus
尽管D-Bus是在LFS中构建的,但该包提供的一些功能是其他BLFS包需要的,但它们的依赖关系不适合LFS。
该软件包在LFS 11.3平台上可以正常构建和工作。
包信息
-
下载 (HTTP): https://dbus.freedesktop.org/releases/dbus/dbus-1.14.6.tar.xz
-
下载 MD5 校验和: e809d7aa905ad82adeaf1d59db5445b1
-
下载大小: 1.3 MB
-
预计所需磁盘空间: 23 MB (为测试添加20 MB)
-
预计构建时间: 0.2 SBU (添加1.7 SBU用于测试)
D-Bus依赖
必要
推荐
Xorg Libraries (用于dbus-launch程序)
可选
对于测试: D-Bus Python-1.3.2, PyGObject-3.42.2, 和 Valgrind-3.20.0; 用于文档: Doxygen-1.9.6, xmlto-0.0.28, Ducktype, 和 Yelp Tools
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/dbus
安装D-Bus
运行以下命令安装D-Bus(你可能想查看./configure –help,然后添加所需的参数到configure命令中,如下所示):
./configure --prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
--runstatedir=/run \
--enable-user-session \
--disable-doxygen-docs \
--disable-xml-docs \
--disable-static \
--docdir=/usr/share/doc/dbus-1.14.6 \
--with-system-socket=/run/dbus/system_bus_socket &&
make
请参阅下面的测试说明。
现在,作为root用户:
make install
如果你使用DESTDIR安装,dbus-daemon-launch-helper需要在安装之后修复。问题,以root用户:
chown -v root:messagebus /usr/libexec/dbus-daemon-launch-helper &&
chmod -v 4750 /usr/libexec/dbus-daemon-launch-helper
在安装D-Bus Python-1.3.2 和 PyGObject-3.42.2之前,dbus测试不能运行。它们必须以具有总线地址的本地会话的非特权用户身份运行。要运行标准测试,请执行make check。
如果你想运行单元回归测试,configure需要额外的参数,这些参数在二进制文件中暴露了额外的功能,这些功能不打算在D-Bus的生产构建中使用。如果你想运行测试,执行以下命令(对于测试,不需要构建文档):
make distclean &&
PYTHON=python3 ./configure --enable-tests \
--enable-asserts \
--disable-doxygen-docs \
--disable-xml-docs &&
make &&
make check
有报道称,如果在午夜指挥官壳内运行,测试可能会失败。运行测试时,您可能会得到内存不足的错误消息。这些都是正常的,可以放心忽略。
命令解释
--disable-doxygen-docs: 如果您已经安装了doxygen,则此开关禁用doxygen文档构建和安装。如果安装了doxygen,并且希望构建它们,请删除此参数。
--disable-xml-docs: 如果安装了xmlto,则此开关禁用html文档构建和安装。如果安装了xmlto,并且希望构建它们,则删除此参数。
--disable-static: 这个开关阻止安装静态版本的库。
--enable-user-session: 此参数启用systemd的每个用户DBus会话。
--with-system-pid-file=/run/dbus/pid: 该参数指定了PID文件的位置。
--with-system-socket=/run/dbus/system_bus_socket: 该参数指定了系统总线套接字的位置。
--enable-tests: 构建额外的代码以支持所有测试。不要在生产环境中使用。
--enable-embedded-tests: 构建额外的代码以仅支持单元测试。不要在生产环境中使用。
--enable-asserts: 允许调试代码运行通常假定为true的语句的断言。这避免了一个警告,即’--enable-tests‘本身只对分析有用,可能不会为所有测试提供真实的结果,但增加了自己的注意,这不应该在生产构建中使用。
配置D-Bus
配置文件
/etc/dbus-1/session.conf, /etc/dbus-1/system.conf 和 /etc/dbus-1/system.d/*
配置信息
上面列出的配置文件可能不应该被修改。如果需要更改,您应该创建/etc/dbus-1/session-local.conf和/或/etc/dbus-1/system-local.conf并对这些文件进行所需的更改。
如果有任何包在标准的/usr/share/dbus-1/services目录之外安装了D-Bus .service文件,那么该目录应该添加到本地会话配置中。例如,/usr/local/share/dbus-1/services可以作为root用户执行以下命令添加:
cat > /etc/dbus-1/session-local.conf << "EOF"
<!DOCTYPE busconfig PUBLIC
"-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
<!-- Search for .service files in /usr/local -->
<servicedir>/usr/local/share/dbus-1/services</servicedir>
</busconfig>
EOF
D-Bus会话守护进程
有许多方法可以使用dbus-launch命令启动会话守护进程。查看dbus-launch手册页了解可用参数和选项的详细信息。下面是一些建议和例子:
-
将dbus-launch添加到启动图形桌面环境的
~/.xinitrc文件的行中。 -
如果你使用gdm或其他一些调用
~/.xsession文件的显示管理器,你可以将dbus-launch添加到启动图形桌面环境的~/.xsession文件中。语法类似于~/.xinitrc文件中的例子。 -
前面展示的例子使用dbus-launch来指定要运行的程序。这有一个好处(当使用
--exit-with-x11参数时),即在指定的程序停止时停止会话守护进程。您还可以通过添加以下行,在您的系统或个人启动脚本中启动会话守护进程:
# Start the D-Bus session daemon
eval `dbus-launch`
export DBUS_SESSION_BUS_ADDRESS
当您退出shell时,此方法不会停止会话守护进程,因此您应该在 `~/.bash_logout` 文件中添加以下行:
# Kill the D-Bus session daemon
kill $DBUS_SESSION_BUS_PID
内容
安装文件的列表以及它们的简短描述可以在下面找到 ../../../../lfs/view/11.3-systemd/chapter08/dbus.html#contents-dbus.
12.11 Fcron-3.2.1
简介Fcron
Fcron包包含一个周期性命令调度器,旨在替换Vixie Cron。
该软件包在LFS 11.3平台上可以正常构建和工作。
包信息
-
下载 (HTTP): http://fcron.free.fr/archives/fcron-3.2.1.src.tar.gz
-
下载 MD5 校验和: bd4996e941a40327d11efc5e3fd1f839
-
下载大小: 587 KB
-
预计所需磁盘空间: 5.1 MB
-
预计构建时间: 0.1 SBU
Fcron依赖
可选
MTA, text editor (默认是Vim-9.0.1273包中的vi), Linux-PAM-1.5.2, 和 DocBook-utils-0.6.14
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/fcron
安装Fcron
出于安全原因,应该为Fcron创建一个非特权用户和组(以root用户执行):
groupadd -g 22 fcron &&
useradd -d /dev/null -c "Fcron User" -g fcron -s /bin/false -u 22 fcron
现在修复文档中硬编码的一些位置:
find doc -type f -exec sed -i 's:/usr/local::g' {} \;
运行以下命令安装Fcron:
./configure --prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
--without-sendmail \
--with-piddir=/run \
--with-boot-install=no &&
make
这个包没有附带测试套件。
现在,作为root用户:
make install
DESTDIR安装必须以root用户身份完成。此外,如果PAM配置文件应该安装在/etc/pam.d中,则必须在安装之前在DESTDIR中创建此目录。
命令解释
--without-sendmail: 默认情况下,Fcron将尝试使用MTA包中的sendmail命令,通过电子邮件将Fcron脚本的结果发送给你。该开关用于禁用默认邮件通知功能。省略开关以启用默认设置。或者,你可以使用--with-sendmail=</path/to/MTA command>来使用不同的mailer命令。
--with-boot-install=no: 这可以防止安装包中包含的bootscript。
--with-piddir=/run: 这修复了systemd单元使用正确的PID文件目录,使systemctl不会挂起,并且单元正确启动。
--with-editor=</path/to/editor>: 这个开关允许你设置默认的文本编辑器。
--with-dsssl-dir=</path/to/dsssl-stylesheets>:如果安装了DocBook-utils-0.6.14,则可以使用。目前,dsssl样式表位于/usr/share/sgml/docbook/dsssl-stylesheets-1.79。
配置Fcron
配置文件
/etc/fcron.conf, /etc/fcron.allow, 和 /etc/fcron.deny
配置信息
在任何配置文件中都没有必要的更改。配置信息可以在fcron.conf的手册页中找到。
fcron脚本使用fcrontab编写。请参阅fcrontab手册页以获取适合您情况的参数。
如果安装了Linux-PAM,则在etc/pam.d中安装两个PAM配置文件。或者,如果没有使用etc/pam.d,安装将在现有的/etc/pam.conf文件中添加两个配置部分。您应该确保这些文件符合您的首选项。根据需要修改它们以适应您的需要。
Periodic Jobs
如果你想为root用户建立一个周期性的层次结构,首先发出以下命令(作为root用户)来创建/usr/bin/run-parts脚本:
cat > /usr/bin/run-parts << "EOF" &&
#!/bin/sh
# run-parts: Runs all the scripts found in a directory.
# from Slackware, by Patrick J. Volkerding with ideas borrowed
# from the Red Hat and Debian versions of this utility.
# keep going when something fails
set +e
if [ $# -lt 1 ]; then
echo "Usage: run-parts <directory>"
exit 1
fi
if [ ! -d $1 ]; then
echo "Not a directory: $1"
echo "Usage: run-parts <directory>"
exit 1
fi
# There are several types of files that we would like to
# ignore automatically, as they are likely to be backups
# of other scripts:
IGNORE_SUFFIXES="~ ^ , .bak .new .rpmsave .rpmorig .rpmnew .swp"
# Main loop:
for SCRIPT in $1/* ; do
# If this is not a regular file, skip it:
if [ ! -f $SCRIPT ]; then
continue
fi
# Determine if this file should be skipped by suffix:
SKIP=false
for SUFFIX in $IGNORE_SUFFIXES ; do
if [ ! "$(basename $SCRIPT $SUFFIX)" = "$(basename $SCRIPT)" ]; then
SKIP=true
break
fi
done
if [ "$SKIP" = "true" ]; then
continue
fi
# If we've made it this far, then run the script if it's executable:
if [ -x $SCRIPT ]; then
$SCRIPT || echo "$SCRIPT failed."
fi
done
exit 0
EOF
chmod -v 755 /usr/bin/run-parts
接下来,创建周期性作业的目录布局(同样以root用户):
install -vdm754 /etc/cron.{hourly,daily,weekly,monthly}
最后,将run-parts添加到系统fcrontab中(仍然是root用户):
cat > /var/spool/fcron/systab.orig << "EOF"
&bootrun 01 * * * * root run-parts /etc/cron.hourly
&bootrun 02 4 * * * root run-parts /etc/cron.daily
&bootrun 22 4 * * 0 root run-parts /etc/cron.weekly
&bootrun 42 4 1 * * root run-parts /etc/cron.monthly
EOF
Systemd Unit
启用fcron在启动时使用之前安装的systemd单元启动。
systemctl enable fcron
最后,以root用户启动fcron并生成/var/spool/fcron/systab文件:
systemctl start fcron &&
fcrontab -z -u systab
内容
安装程序: fcron, fcrondyn, fcronsighup, 和 fcrontab
安装库: None
安装目录: /usr/share/doc/fcron-3.2.1 和 /var/spool/fcron
简要描述
fcron 是调度守护进程。
fcrondyn 是一个用户工具,用于与正在运行的fcron守护进程进行交互。
fcronsighup 指示fcron重新读取Fcron表。
fcrontab 是一个用于安装、编辑、列出和删除fcron使用的表的程序。
12.12 GPM-1.20.7
简介GPM
GPM (General Purpose Mouse daemon)包包含一个用于控制台的鼠标服务器和xterm。它不仅提供一般的剪切和粘贴支持,而且它的库组件被各种软件使用,如链接,为应用程序提供鼠标支持。它在桌面电脑上很有用,特别是从头开始(超越)执行Linux指令时;在两个控制台窗口之间进行剪切和粘贴通常比手动输入要容易得多(也不容易出错)!
该软件包在LFS 11.3平台上可以正常构建和工作。
包信息
-
下载 (HTTP): https://anduin.linuxfromscratch.org/BLFS/gpm/gpm-1.20.7.tar.bz2
-
下载 (FTP): ftp://anduin.linuxfromscratch.org/BLFS/gpm/gpm-1.20.7.tar.bz2
-
下载 MD5 校验和: bf84143905a6a903dbd4d4b911a2a2b8
-
下载大小: 820 KB
-
预计所需磁盘空间: 7.4 MB
-
预计构建时间: 0.1 SBU
额外下载
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/GPM
内核配置
在内核配置中启用以下选项,必要时重新编译内核:
Device Drivers --->
Input device support ---> [CONFIG_INPUT]
<*/M> Mouse interface [CONFIG_INPUT_MOUSEDEV]
安装GPM
运行以下命令安装GPM:
patch -Np1 -i ../gpm-1.20.7-consolidated-1.patch &&
./autogen.sh &&
./configure --prefix=/usr --sysconfdir=/etc &&
make
这个包没有附带测试套件。
现在,作为root用户:
make install &&
install-info --dir-file=/usr/share/info/dir \
/usr/share/info/gpm.info &&
rm -fv /usr/lib/libgpm.a &&
ln -sfv libgpm.so.2.1.0 /usr/lib/libgpm.so &&
install -v -m644 conf/gpm-root.conf /etc &&
install -v -m755 -d /usr/share/doc/gpm-1.20.7/support &&
install -v -m644 doc/support/* \
/usr/share/doc/gpm-1.20.7/support &&
install -v -m644 doc/{FAQ,HACK_GPM,README*} \
/usr/share/doc/gpm-1.20.7
命令解释
./autogen.sh: 这个命令创建了缺失的configure脚本。
install-info …: 这个包安装一个.info文件,但是不更新系统的dir文件。此命令进行更新。
ln -v -sfn libgpm.so.2.1.0 /usr/lib/libgpm.so: 此命令用于创建(或更新)库的.so符号链接。
Configuring GPM
Systemd Unit
要在启动时启动gpm守护进程,请以root用户运行以下命令,从blfs-systemd-units-20220720包中安装systemd单元:
make install-gpm
配置文件
/etc/gpm-root.conf 和 ~/.gpm-root: 默认和个人用户的gpm-root配置文件。
配置信息
GPM默认使用以下参数启动:-m /dev/input/mice -t imps2。如果上述参数不能满足你的需求,你可以以root用户的身份运行以下命令来覆盖它们:
install -v -dm755 /etc/systemd/system/gpm.service.d &&
cat > /etc/systemd/system/gpm.service.d/99-user.conf << EOF
[Service]
ExecStart=/usr/sbin/gpm <list of parameters>
EOF
内容
安装程序: disable-paste, display-buttons, display-coords, get-versions, gpm, gpm-root, hltest, mev, 和 mouse-test
安装库: libgpm.so
安装目录: /usr/share/doc/gpm-1.20.7
简要描述
disable-paste 是一种用于禁用粘贴缓冲区的安全机制。
display-buttons 是一个简单的程序,报告鼠标按钮被按下和释放的情况。
display-coords 是一个简单的程序,报告鼠标坐标。
get-versions 用于报告GPM库和服务器版本。
gpm 是用于虚拟控制台的剪切和粘贴实用程序和鼠标服务器。
gpm-root 是gpm的默认处理程序。它用于在根窗口上绘制菜单。
hltest 是一个使用高级库的简单示例应用程序,供尝试使用高级库的程序员阅读。
mev 是一个报告鼠标事件的程序。
mouse-test 是一个工具,用于确定鼠标类型和它所连接的设备。
libgpm.so 包含访问GPM守护进程的API函数。
12.13 Hdparm-9.65
简介Hdparm
Hdparm包包含一个实用程序,用于获取和控制ATA/IDE控制器和硬盘驱动器的信息。它可以提高性能,有时还可以提高稳定性。
该软件包在LFS 11.3平台上可以正常构建和工作。
警告
Hdparm的错误使用可能会破坏你的信息,在极少数情况下甚至会破坏驱动器。小心使用,确保你知道你在做什么。如果有疑问,建议不要使用默认的内核参数。
包信息
-
下载 (HTTP): https://downloads.sourceforge.net/hdparm/hdparm-9.65.tar.gz
-
下载 MD5 校验和: 6d6d039d61ec995b1ec72ddce0b1853b
-
下载大小: 140 KB
-
预计所需磁盘空间: 1.0 MB
-
预计构建时间: 小于 0.1 SBU
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/hdparm
安装Hdparm
运行以下命令来构建Hdparm:
make
这个包没有附带测试套件。
现在,作为root用户:
make binprefix=/usr install
内容
安装程序: hdparm
安装库: None
安装目录: None
简要描述
hdparm 为Linux ATA/IDE设备驱动程序子系统支持的各种硬盘ioctl提供一个命令行接口。
12.14 LSB-Tools-0.10
简介LSB-Tools
LSB-Tools包包括符合Linux标准库(LSB)的工具。
该软件包在LFS 11.3平台上可以正常构建和工作。
包信息
-
下载 (HTTP): https://github.com/lfs-book/LSB-Tools/releases/download/v0.10/LSB-Tools-0.10.tar.gz
-
下载 MD5 校验和: 846c7ee94989c7d48d386c875dbd1d9f
-
下载大小: 19 KB
-
预计所需磁盘空间: 428 KB
-
预计构建时间: 小于 0.1 SBU
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/LSB-Tools
安装LSB-Tools
运行以下命令安装LSB-Tools:
python3 setup.py build
现在,作为root用户:
python3 setup.py install --optimize=1
配置信息
这个包的配置是在 LFS 和 Systemd中完成的。文件/etc/lsb-release应该已经存在。确保正确设置了DISTRIB_CODENAME项。
内容
安装程序: lsb_release, install_initd, 和 remove_initd
安装库: None
安装目录: /usr/lib/lsb 和 /usr/lib/python3.11/site-packages/lsbtools
简要描述
lsb_release 是一个提供LSB数据的脚本。
install_initd 是一个脚本,用于激活SysV启动脚本。
remove_initd 是一个关闭SysV启动脚本的脚本。
12.15 Lm-sensors-3-6-0
简介Lm_sensors
lm_sensors包为Linux内核中的硬件监控驱动程序提供了用户空间支持。这对于监控CPU的温度和调整某些硬件的性能(如冷却风扇)很有用。
该软件包在LFS 11.3平台上可以正常构建和工作。
包信息
-
下载 (HTTP): https://github.com/lm-sensors/lm-sensors/archive/V3-6-0/lm-sensors-3-6-0.tar.gz
-
下载 MD5 校验和: f60e47b5eb50bbeed48a9f43bb08dd5e
-
下载大小: 268 KB
-
预计所需磁盘空间: 2.6 MB
-
预计构建时间: 小于 0.1 SBU
lm_sensors依赖
必要
可选
RRDtool (需要构建sensord程序) 和 dmidecode (运行时)
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/lm_sensors
内核配置
正确配置内核是一个迭代过程,可能需要重新编译内核几次。最简单的方法是首先启用模块,然后将Lm Sensors可能需要的所有内容编译为模块:
[*] Enable loadable module support ---> [CONFIG_MODULES]
Device Drivers --->
[*] PCI support ---> [CONFIG_PCI]
I2C support --->
<*/M> I2C device interface [CONFIG_I2C_CHARDEV]
I2C Hardware Bus support --->
<M> (configure all of them as modules)
<*/M> Hardware Monitoring support ---> [CONFIG_HWMON]
<M> (configure all of them as modules)
重新编译内核并重新启动到新的内核中。不要忘记make modules_install,我们将在下面的配置部分中回到内核。
安装Lm_sensors
运行以下命令安装Lm_sensors:
make PREFIX=/usr \
BUILD_STATIC_LIB=0 \
MANDIR=/usr/share/man
这个包没有附带测试套件。
现在,作为root用户:
make PREFIX=/usr \
BUILD_STATIC_LIB=0 \
MANDIR=/usr/share/man install &&
install -v -m755 -d /usr/share/doc/lm_sensors-3-6-0 &&
cp -rv README INSTALL doc/* \
/usr/share/doc/lm_sensors-3-6-0
命令解释
BUILD_STATIC_LIB=0: 此参数禁用编译和安装静态版本的libsensors。
PROG_EXTRA=sensord: 此参数启用编译sensord,这是一个守护进程,可以定期监控您的系统。编译sensord需要RRDtool。确保通过运行make prefix=/usr将RRDtool安装在/usr中。否则,Lm_sensors将不容易找到它。
配置Lm_sensors
配置文件
/etc/sensors3.conf
配置信息
为了找出你的系统有哪些硬件传感器,以root用户的身份执行以下命令:
sensors-detect
相应的模块应该已经加载完毕,并在末尾显示摘要。现在您知道需要什么,可以重新编译内核以启用所需的选项(即,不要启用不能使用的模块)。
内容
安装程序: fancontrol, isadump, isaset, pwmconfig, sensors, sensors-conf-convert, sensors-detect, 和可选的 sensord
安装库: libsensors.so
安装目录: /etc/sensors.d, /usr/include/sensors 和 /usr/share/doc/lm_sensors-3-6-0
简要描述
fancontrol 是一个用于lm_sensors的shell脚本。它从文件中读取配置,然后根据温度计算风扇速度,并将相应的PWM输出设置为计算值。
isadump 是一个小的辅助程序,用于检查通过ISA总线可见的寄存器。它打算探测住在ISA总线上的任何芯片与一个地址寄存器和一个数据寄存器一起工作(类似于i2c存取)或一个平坦的范围(到256字节)。
isaset 是一个小的辅助程序,用于设置通过ISA总线可见的寄存器。
pwmconfig 测试传感器的脉宽调制(PWM)输出,并配置风扇控制。
sensors 打印所有传感器芯片的当前读数。
sensors-conf-convert 是一个Perl脚本,用于将lm-sensors版本2的配置文件转换为与版本3一起工作。
sensors-detect 是一个Perl脚本,它将引导您完成扫描系统以查找libsensors支持的各种硬件监控芯片(传感器)的过程,或者更一般地说,由lm_sensors工具套件支持。
sensord (可选)是一个守护进程,可用于定期记录传感器读数。
libsensors.so 包含lm_sensors API函数。
12.16 Logrotate-3.21.0
简介Logrotate
logrotate包支持自动轮换、压缩、删除和邮寄日志文件。
该软件包在LFS 11.3平台上可以正常构建和工作。
包信息
-
下载 (HTTP): https://github.com/logrotate/logrotate/releases/download/3.21.0/logrotate-3.21.0.tar.xz
-
下载 MD5 校验和: 6c15f45efc3475a576c4f7e6cc481b2c
-
下载大小: 164.5 KB
-
预计所需磁盘空间: 2.9 MB (增加38 MB用于测试)
-
预计构建时间: 小于 0.1 SBU (增加0.2 SBU用于测试)
Logrotate依赖
必要
可选
An MTA (运行时)
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/logrotate
安装Logrotate
运行以下命令安装logrotate:
./configure --prefix=/usr &&
make
要测试结果,请执行以下命令: make test. 其中一个测试失败了,因为不存在非常古老的compress;如果没有安装MTA,则有两个测试失败。
现在,作为root用户:
make install
配置Logrotate
Logrotate需要一个配置文件,它必须在执行命令时作为参数传递给命令。以root用户身份创建文件:
cat > /etc/logrotate.conf << EOF
# Begin /etc/logrotate.conf
# Rotate log files weekly
weekly
# Don't mail logs to anybody
nomail
# If the log file is empty, it will not be rotated
notifempty
# Number of backups that will be kept
# This will keep the 2 newest backups only
rotate 2
# Create new empty files after rotating old ones
# This will create empty log files, with owner
# set to root, group set to sys, and permissions 664
create 0664 root sys
# Compress the backups with gzip
compress
# No packages own lastlog or wtmp -- rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
rotate 1
}
/var/log/lastlog {
monthly
rotate 1
}
# Some packages drop log rotation info in this directory
# so we include any file in it.
include /etc/logrotate.d
# End /etc/logrotate.conf
EOF
chmod -v 0644 /etc/logrotate.conf
现在以root用户的身份创建/etc/logrotate.d目录:
mkdir -p /etc/logrotate.d
此时,可以输入额外的日志轮换命令,通常在/etc/logrotate.d目录中。例如:
cat > /etc/logrotate.d/sys.log << EOF
/var/log/sys.log {
# If the log file is larger than 100kb, rotate it
size 100k
rotate 5
weekly
postrotate
/bin/killall -HUP syslogd
endscript
}
EOF
chmod -v 0644 /etc/logrotate.d/sys.log
你可以在一个条目中指定多个文件:
cat > /etc/logrotate.d/example.log << EOF
file1
file2
file3 {
...
postrotate
...
endscript
}
EOF
chmod -v 0644 /etc/logrotate.d/example.log
你可以在同一行中使用文件列表:file1 file2 file3。有关更多示例,请参阅logrotate手册页或https://www.techrepublic.com/article/manage-linux-log-files-with-logrotate/。
logrotate /etc/logrotate.conf命令可以手动执行,但是该命令应该每天运行。其他有用的命令有用于调试的logrotate -d /etc/logrotate.conf和强制立即运行logrotate命令的logrotate -f /etc/logrotate.conf。结合前面的选项-df,你可以调试force命令的效果。在调试时,这些命令只是模拟命令,并不实际运行。结果,关于文件不存在的错误最终会出现,因为文件实际上还没有创建。
要每天运行logrotate命令,以root用户执行以下命令,以创建一个systemd定时器,每天在凌晨3点(当地时间)运行:
cat > /usr/lib/systemd/system/logrotate.service << "EOF" &&
[Unit]
Description=Runs the logrotate command
Documentation=man:logrotate(8)
DefaultDependencies=no
After=local-fs.target
Before=shutdown.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/sbin/logrotate /etc/logrotate.conf
EOF
cat > /usr/lib/systemd/system/logrotate.timer << "EOF" &&
[Unit]
Description=Runs the logrotate command daily at 3:00 AM
[Timer]
OnCalendar=*-*-* 3:00:00
Persistent=true
[Install]
WantedBy=timers.target
EOF
systemctl enable logrotate.timer
内容
安装程序: logrotate
安装库: None
安装目录: None
简要描述
logrotate 执行配置文件中定义的日志维护功能。
12.17 MC-4.8.29
简介MC
MC (Midnight Commander)是一个文本模式的全屏文件管理器和可视shell。它为Unix系统提供了一个清晰的、用户友好的、受到一定保护的界面,同时使许多频繁的文件操作更加高效,并保留了命令提示符的全部功能。
该软件包在LFS 11.3平台上可以正常构建和工作。
包信息
-
下载 (HTTP): http://ftp.midnight-commander.org/mc-4.8.29.tar.xz
-
下载 (FTP): ftp://ftp.osuosl.org/pub/midnightcommander/mc-4.8.29.tar.xz
-
下载 MD5 校验和: 7f9339b6b2167a7920ac29e133b9c594
-
下载大小: 2.3 MB
-
预计所需磁盘空间: 67 MB (增加86 MB用于测试)
-
预计构建时间: 0.3 SBU (使用并行数=4; 增加0.2 SBU用于测试)
MC依赖
必要
推荐
可选
Doxygen-1.9.6, GPM-1.20.7, libssh2-1.10.0, Ruby-3.2.1, Samba-4.17.5, UnZip-6.0, a graphical environment, 和 Zip-3.0
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/MC
安装MC
运行以下命令安装MC:
./configure --prefix=/usr \
--sysconfdir=/etc \
--enable-charset &&
make
要测试结果,请执行以下命令: make check.
现在,作为root用户:
make install
命令解释
--sysconfdir=/etc: 这个开关将全局配置目录放在/etc中。
--enable-charset: 此开关增加了对mcedit的支持,以不同于当前区域设置所暗示的编码方式编辑文件。
配置MC
配置文件
~/.config/mc/*
配置信息
~/.config/mc目录及其内容是在你第一次启动mc时创建的。然后你可以手动或通过mc shell编辑主配置文件~/.config/mc/ini。详情请参阅mc(1)手册页。
内容
安装程序: mc 和符号链接到 mcdiff, mcedit 和 mcview
安装库: None
安装目录: /etc/mc 和 /usr/{libexec,share}/mc
简要描述
cons.saver 在内部由mc使用,用于保存和恢复Linux文本控制台面板后面的文本。
mc 是一个视觉外壳。
mcdiff 是一个内部的视觉差异工具。
mcedit 是一个内部文件编辑器。
mcview 是一个内部文件查看器。
12.18 ModemManager-1.18.12
简介ModemManager
ModemManager提供了与移动宽带调制解调器通信的统一高层API,而无需考虑与实际设备通信时使用的协议。
该软件包在LFS 11.3平台上可以正常构建和工作。
包信息
-
下载 (HTTP): https://www.freedesktop.org/software/ModemManager/ModemManager-1.18.12.tar.xz
-
下载 MD5 校验和: 9f014dfc59f1bd8bc230bb2c2974d104
-
下载大小: 2.5 MB
-
预计所需磁盘空间: 155 MB (有测试)
-
预计构建时间: 0.7 SBU (使用并行数=4; 有测试)
ModemManager依赖
必要
推荐
gobject-introspection-1.74.0, libmbim-1.26.4, libqmi-1.30.8, Polkit-122, 和 Vala-0.56.4
可选
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/ModemManager
安装ModemManager
运行以下命令安装ModemManager:
./configure --prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
--disable-static \
--disable-maintainer-mode \
--with-systemd-journal \
--with-systemd-suspend-resume &&
make
要测试结果,请执行以下命令: make check.
现在,作为root用户:
make install
命令解释
--with-systemd-suspend-resume: 这个开关强制ModemManager使用systemd电源管理工具。
--with-systemd-journal: 该开关强制ModemManager使用systemd日志记录。
--disable-static: 这个开关阻止安装静态版本的库。
--enable-gtk-doc: 如果安装了GTK-Doc并且希望重新构建和安装API文档,请使用此参数。
配置ModemManager
Systemd Units
要在启动时启动ModemManager守护进程,请以“root”用户运行以下命令启用之前安装的systemd单元:
systemctl enable ModemManager
内容
安装程序: mmcli 和 ModemManager
安装库: libmm-glib.so
安装目录: /etc/ModemManager, /usr/include/libmm-glib, /usr/include/ModemManager, /usr/lib/ModemManager, /usr/share/ModemManager, /usr/share/gtk-doc/html/libmm-glib (optional), 和 /usr/share/gtk-doc/html/ModemManager (可选)
简要描述
mmcli 是一个用于控制和监视ModemManager的实用程序。
ModemManager 是D-Bus服务,用于与调制解调器通信。
libmm-glib.so 包含与移动宽带调制解调器通信的API函数,与实际设备通信使用的协议无关。
12.19 notification-daemon-3.20.0
简介Notification Daemon
Notification Daemon包包含一个显示被动弹出通知的守护进程。
该软件包在LFS 11.3平台上可以正常构建和工作。
包信息
-
下载 (HTTP): https://download.gnome.org/sources/notification-daemon/3.20/notification-daemon-3.20.0.tar.xz
-
下载 (FTP): ftp://ftp.acc.umu.se/pub/gnome/sources/notification-daemon/3.20/notification-daemon-3.20.0.tar.xz
-
下载 MD5 校验和: 2de7f4075352831f1d98d8851b642124
-
下载大小: 336 KB
-
预计所需磁盘空间: 4.1 MB
-
预计构建时间: 小于 0.1 SBU
Notification Daemon依赖
必要
GTK+-3.24.36 和 libcanberra-0.30 (基于GTK+-3.24.36 支持构建).
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/notification-daemon
安装Notification Daemon
运行以下命令安装Notification Daemon:
./configure --prefix=/usr \
--sysconfdir=/etc \
--disable-static &&
make
这个包没有附带测试套件。
现在,作为root用户:
make install
你可以使用命令notify-send来测试通知守护进程:
pgrep -l notification-da &&
notify-send -i info Information "Hi ${USER}, This is a Test"
添加了命令pgrep -l notification-da以确保正在运行的是这个包的守护进程,而不是另一个,例如,来自xfce4-notifyd-0.8.1的守护进程。
内容
安装程序: none
安装库: none
安装目录: none
12.20 p7zip-17.04
简介p7zip
p7zip是7-Zip的Unix命令行端口,7-Zip是一个以高压缩率存档的文件归档程序。它处理 7z, ZIP, GZIP, Brotli, BZIP2, XZ, TAR, APM, ARJ, CAB, CHM, CPIO, CramFS, DEB, DMG, FAT, HFS, ISO, Lizard, LZ5, LZFSE, LZH, LZMA, LZMA2, MBR, MSI, MSLZ, NSIS, NTFS, RAR, RPM, SquashFS, UDF, VHD, WIM, XAR, Z, 和 Zstd 格式.
该软件包在LFS 11.3平台上可以正常构建和工作。
包信息
-
下载 (HTTP): https://github.com/p7zip-project/p7zip/archive/v17.04/p7zip-17.04.tar.gz
-
下载 MD5 校验和: 00acfd6be87848231722d2d53f89e4a5
-
下载大小: 6.5 MB
-
预计所需磁盘空间: 55 MB
-
预计构建时间: 2.3 SBU (有测试)
p7zip依赖
可选
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/p7zip
安装p7zip
首先,防止p7zip安装压缩的手册页:
sed '/^gzip/d' -i install.sh
接下来,修复一个安全漏洞:
sed -i '160a if(_buffer == nullptr || _size == _pos) return E_FAIL;' CPP/7zip/Common/StreamObjects.cpp
运行以下命令安装p7zip:
make all3
要测试结果,请执行以下命令: make test.
现在,作为root用户:
make DEST_HOME=/usr \
DEST_MAN=/usr/share/man \
DEST_SHARE_DOC=/usr/share/doc/p7zip-17.04 install
注意
如果使用DESTDIR技术,则使用DEST_DIR。
内容
安装程序: 7z, 7za, 和 7zr
安装库: None
安装目录: /usr/lib/p7zip 和 /usr/share/doc/p7zip-17.04
简要描述
7z 是一个文件归档实用程序。
7za 是一个独立的可执行文件,处理比7z更少的存档格式。
7zr 是7za的最小版本,只处理7z存档。
12.21 Pax-20201030
简介Pax
pax是由POSIX创建并由POSIX.1-2001标准定义的归档实用程序。没有找出tar和cpio之间的不兼容选项,以及它们在不同UNIX版本中的实现,IEEE设计了一个新的归档实用程序。“pax”是便携式档案交换的首字母缩写。此外,“pax”在拉丁语中是“和平”的意思,因此它的名字意味着它将在tar和cpio格式的支持者之间创造和平。命令调用和命令结构在某种程度上是tar和cpio的统一。
从LSB 3.0版本开始,pax就被要求出现在LSB一致性系统中。
该软件包在LFS 11.3平台上可以正常构建和工作。
包信息
-
下载 (HTTP): http://www.mirbsd.org/MirOS/dist/mir/cpio/paxmirabilis-20201030.tgz
-
下载 MD5 校验和: 87a0a3870ec437c41eb1b406334fe2c5
-
下载大小: 172 KB
-
预计所需磁盘空间: 1.2 MB
-
预计构建时间: 小于 0.1 SBU
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/pax
安装Pax
运行以下命令安装pax:
注意
这个包扩展到pax目录。
bash Build.sh
这个包没有附带测试套件。
现在,作为root用户:
注意
这个包还创建了从pax到构建目录中的cpio和tar程序的硬链接。LFS编辑器不建议安装它们,因为它们将覆盖这些程序的GNU版本。
install -v pax /usr/bin &&
install -v -m644 pax.1 /usr/share/man/man1
内容
安装程序: pax
简要描述
pax 以几种格式将文件复制到或从存档中复制。
12.22 pciutils-3.9.0
简介PCI Utils
PCI Utils包包含一组程序,用于列出PCI设备、检查其状态和设置其配置寄存器。
该软件包在LFS 11.3平台上可以正常构建和工作。
包信息
-
下载 (HTTP): https://mj.ucw.cz/download/linux/pci/pciutils-3.9.0.tar.gz
-
下载 MD5 校验和: 357496ae1652aac66cad0d2de2d831d0
-
下载大小: 888 KB
-
预计所需磁盘空间: 5.5 MB
-
预计构建时间: 小于 0.1 SBU
pciutils依赖
推荐
cURL-7.88.1, Wget-1.21.3, 或 Lynx-2.8.9rel.1 (使update-pciids脚本正常工作).
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/pciutils
安装PCI Utils
运行以下命令安装PCI Utils:
make PREFIX=/usr \
SHAREDIR=/usr/share/hwdata \
SHARED=yes
这个包没有附带测试套件。
现在,作为root用户:
make PREFIX=/usr \
SHAREDIR=/usr/share/hwdata \
SHARED=yes \
install install-lib &&
chmod -v 755 /usr/lib/libpci.so
命令解释
SHARED=yes: 此参数启用构建共享库而不是静态库。
ZLIB=no: 此选项防止压缩pci.ids文件。
配置PCI Utils
pci.ids数据文件不断更新。要获取此文件的当前版本,请以root用户身份运行update-pciids。这个程序需要 Which-2.21 脚本或程序来找到 cURL-7.88.1, Lynx-2.8.9rel.1, 或 Wget-1.21.3 用于下载最新的文件,然后替换/usr/share/hwdata中的现有文件。
你应该定期更新/usr/share/hwdata/pci.ids文件。以root用户的身份执行以下命令,创建一个systemd定时器,在周日的当地时间每星期2:30更新一次:
cat > /usr/lib/systemd/system/update-pciids.service << "EOF" &&
[Unit]
Description=Update pci.ids file
Documentation=man:update-pciids(8)
DefaultDependencies=no
After=local-fs.target network-online.target
Before=shutdown.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/sbin/update-pciids
EOF
cat > /usr/lib/systemd/system/update-pciids.timer << "EOF" &&
[Unit]
Description=Update pci.ids file weekly
[Timer]
OnCalendar=Sun 02:30:00
Persistent=true
[Install]
WantedBy=timers.target
EOF
systemctl enable update-pciids.timer
内容
安装程序: lspci, setpci, 和 update-pciids
安装库: libpci.so
安装目录: /usr/include/pci 和 /usr/share/hwdata
简要描述
lspci 是一个实用程序,用于显示系统中所有PCI总线以及与之连接的所有设备的有关信息。
setpci 是一个查询和配置PCI设备的实用程序。
update-pciids 获取PCI ID列表的当前版本。
libpci.so 是允许应用程序访问PCI子系统的库。
12.23 pm-utils-1.4.1
简介Power Management Utilities
Power Management Utilities提供了简单的shell命令行工具来挂起和休眠计算机。它们可用于在挂起和恢复时运行用户提供的脚本。
该软件包在LFS 11.3平台上可以正常构建和工作。
包信息
-
下载 (HTTP): https://pm-utils.freedesktop.org/releases/pm-utils-1.4.1.tar.gz
-
下载 MD5 校验和: 1742a556089c36c3a89eb1b957da5a60
-
下载大小: 204 KB
-
预计所需磁盘空间: 1.6 MB
-
预计构建时间: 0.1 SBU
Power Management Utilities依赖
可选
xmlto-0.0.28 (生成手册页)
可选 (运行时)
Hdparm-9.65, Wireless Tools-29, ethtool, 和 vbetool
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/pm-utils
内核配置
如果需要,在内核配置中启用以下选项,并重新编译内核:
Power management and ACPI options --->
<*> Suspend to RAM and standby [CONFIG_SUSPEND]
<*> Hibernation (aka 'suspend to disk') [CONFIG_HIBERNATION]
Suspend to RAM使系统进入睡眠状态,在这种状态下主内存会供电,因而其内容得以保存。这种方法切断了机器除RAM之外的大部分部分的电源。由于节省电量大,建议笔记本电脑在电池运行时,盖子关闭(或用户一段时间不活动)时自动进入该模式。
挂起到磁盘(休眠)将机器状态保存到交换空间,并完全关闭机器。当机器上电时,状态恢复。在此之前,电力消耗为零。挂起到RAM和休眠通常适用于便携式设备(如笔记本电脑),但也可以用于工作站。这个功能并不适合服务器。
要使用休眠,内核参数resume=/dev/
安装Power Management Utilities
运行以下命令安装Power Management Utilities:
./configure --prefix=/usr \
--sysconfdir=/etc \
--docdir=/usr/share/doc/pm-utils-1.4.1 &&
make
这个包没有附带测试套件。
现在,作为root用户:
make install
如果你没有安装xmlto-0.0.28,以root用户的身份复制预生成的手册页:
install -v -m644 man/*.1 /usr/share/man/man1 &&
install -v -m644 man/*.8 /usr/share/man/man8 &&
ln -sv pm-action.8 /usr/share/man/man8/pm-suspend.8 &&
ln -sv pm-action.8 /usr/share/man/man8/pm-hibernate.8 &&
ln -sv pm-action.8 /usr/share/man/man8/pm-suspend-hybrid.8
配置Power Management Utilities
挂起或恢复功能可以通过安装文件到/etc/pm/sleep.d目录来轻松修改。这些文件称为钩子(hook),在系统进入睡眠状态或恢复时运行。默认钩子位于/usr/lib/pm-utils/sleep.d,用户钩子应该放在/etc/pm/sleep.d。有关更多信息,请参阅pm-action(8)手册页。
为了在GRUB和交换分区中使用休眠,需要添加内核参数resume=swap_partition。resume=/dev/sda1)到/boot/grub/grub.cfg配置文件中的内核行。
内容
安装程序: on_ac_power, pm-hibernate, pm-is-supported, pm-powersave, pm-suspend 和 pm-suspend-hybrid
安装库: None
安装目录: /etc/pm, /usr/lib/pm-utils 和 /usr/share/doc/pm-utils-1.4.1
简要描述
on_ac_power 是一个脚本,用于确定系统是否使用交流电源(而不是电池)运行。
pm-hibernate 是指向pm-action脚本的符号链接,该脚本使计算机进入hibernate模式(系统完全关闭,系统状态保存到磁盘)。
pm-is-supported 是一个脚本,检查是否支持挂起和休眠等电源管理功能。
pm-powersave 是一个使计算机进入省电(低功耗)模式的脚本。
pm-suspend 是指向pm-action脚本的符号链接,该脚本使计算机进入挂起模式(大多数设备被关闭,系统状态保存在RAM中)。
pm-suspend-hybrid 是一个指向pm-action脚本的符号链接,该脚本将计算机置于混合挂起模式(系统执行休眠所需的一切操作,但挂起而不是关闭)。
12.24 Raptor-2.0.15
简介Raptor
Raptor是一个C库,它提供了一组生成资源描述框架(RDF)三元组的解析器和序列化器。
该软件包在LFS 11.3平台上可以正常构建和工作。
包信息
-
下载 (HTTP): https://download.librdf.org/source/raptor2-2.0.15.tar.gz
-
下载 MD5 校验和: a39f6c07ddb20d7dd2ff1f95fa21e2cd
-
下载大小: 1.9 MB
-
预计所需磁盘空间: 28 MB (额外1 MB用于测试)
-
预计构建时间: 0.2 SBU (额外0.5 SBU用于测试)
额外下载
Raptor依赖
必要
可选
GTK-Doc-1.33.2, ICU-72.1 和 libyajl
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/raptor
安装Raptor
首先,应用一个补丁来修复几个安全问题:
patch -Np1 -i ../raptor-2.0.15-security_fixes-1.patch
运行以下命令安装Raptor:
./configure --prefix=/usr --disable-static &&
make
要测试结果,请执行以下命令: make check. 一些XML测试可能会失败。
现在,作为root用户:
make install
命令解释
--disable-static: 这个开关阻止安装静态版本的库。
--with-icu-config=/usr/bin/icu-config: 如果你已经安装了ICU-72.1并且希望通过它的支持构建Raptor,请使用此开关。
内容
安装程序: rapper
安装库: libraptor2.so
安装目录: /usr/include/raptor2 和 /usr/share/gtk-doc/html/raptor2
简要描述
rapper 是一个RDF解析和序列化实用程序。
libraptor2.so 包含Raptor API函数。
12.25 Rasqal-0.9.33
简介Rasqal
Rasqal是一个C库,用于处理资源描述框架(RDF,Resource Description Framework)查询语言的语法、查询构造,以及执行以绑定、布尔值、RDF图/三元组或语法的形式返回结果的查询。
该软件包在LFS 11.3平台上可以正常构建和工作。
包信息
-
下载 (HTTP): https://download.librdf.org/source/rasqal-0.9.33.tar.gz
-
下载 MD5 校验和: 1f5def51ca0026cd192958ef07228b52
-
下载大小: 1.6 MB
-
预计所需磁盘空间: 22 MB (额外的4 MB用于测试)
-
预计构建时间: 0.3 SBU (额外0.7 SBU用于测试)
Rasqal依赖
必要
可选
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/rasqal
安装Rasqal
运行以下命令安装Rasqal:
./configure --prefix=/usr --disable-static &&
make
要测试结果,请执行以下命令: make check.
现在,作为root用户:
make install
命令解释
--disable-static: 这个开关阻止安装静态版本的库。
内容
安装程序: rasqal-config 和 roqet
安装库: librasqal.so
安装目录: /usr/include/rasqal 和 /usr/share/gtk-doc/html/rasqal
简要描述
rasqal-config 是一个获取Rasqal安装选项的实用程序。
roqet 是一个RDF查询实用程序。
12.26 Redland-1.0.17
简介Redland
Redland是一组自由软件C库,提供对资源描述框架(RDF)的支持。
该软件包在LFS 11.3平台上可以正常构建和工作。
包信息
-
下载 (HTTP): https://download.librdf.org/source/redland-1.0.17.tar.gz
-
下载 MD5 校验和: e5be03eda13ef68aabab6e42aa67715e
-
下载大小: 1.6 MB
-
预计所需磁盘空间: 18 MB
-
预计构建时间: 0.2 SBU
Redland依赖
必要
可选
Berkeley DB-5.3.28, libiodbc-3.52.15, SQLite-3.40.1, MariaDB-10.6.12 或 MySQL, PostgreSQL-15.2, virtuoso, 和 3store
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/redland
安装Redland
运行以下命令安装Redland:
./configure --prefix=/usr --disable-static &&
make
要测试结果,请执行 make check.
现在,作为root用户:
make install
命令解释
--disable-static: 这个开关阻止安装静态版本的库。
内容
安装程序: rdfproc, redland-config 和 redland-db-upgrade
安装库: librdf.so 和 /usr/lib/redland/librdf_storage_*.so
安装目录: /usr/lib/redland, /usr/share/gtk-doc/html/redland 和 /usr/share/redland
简要描述
rdfproc 是Redland RDF处理器实用程序。
redland-config 是一个获取Redland安装版本信息的脚本。
redland-db-upgrade 升级旧的Redland数据库到0.9.12格式。
12.27 sg3_utils-1.47
简介sg3_utils
sg3_utils包包含了用于使用SCSI命令集的设备的底层实用程序。除了SCSI并行接口(SPI)设备外,SCSI命令集还被ATAPI设备(CD/ dvd和磁带)、USB大容量存储设备、光纤通道磁盘、IEEE 1394存储设备(使用“SBP”协议)、SAS、iSCSI和FCoE设备(以及其他设备)使用。
该软件包在LFS 11.3平台上可以正常构建和工作。
包信息
-
下载 MD5 校验和: c9e95d3b0e106514aefaae17f58a30f9
-
下载大小: 1.0 MB
-
预计所需磁盘空间: 21 MB
-
预计构建时间: 0.2 SBU
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/sg3_utils
安装sg3_utils
运行以下命令安装sg3_utils:
./configure --prefix=/usr --disable-static &&
make
这个包没有附带测试套件。
现在,作为root用户:
make install
命令解释
--disable-static: 这个开关阻止安装静态版本的库。
内容
安装程序: rescan-scsi-bus.sh, scsi_logging_level, scsi_mandat, scsi_readcap, scsi_ready, scsi_satl, scsi_start, scsi_stop, scsi_temperature, sg_bg_ctl, sg_compare_and_write, sg_copy_results, sg_dd, sg_decode_sense, sg_emc_trespass, sg_format, sg_get_config, sg_get_lba_status, sg_ident, sg_inq, sg_logs, sg_luns, sg_map, sg_map26, sg_modes, sg_opcodes, sg_persist, sg_prevent, sg_raw, sg_rbuf, sg_rdac, sg_read, sg_read_attr, sg_read_block_limits, sg_read_buffer, sg_read_long, sg_readcap, sg_reassign, sg_referrals, sg_rep_pip, sg_rep_zones, sg_requests, sg_reset, sg_reset_wp, sg_rmsn, sg_rtpg, sg_safte, sg_sanitize, sg_sat_identify, sg_sat_phy_event, sg_sat_read_gplog, sg_sat_set_features, sg_scan, sg_seek, sg_senddiag, sg_ses, sg_ses_microcode, sg_start, sg_stpg, sg_stream_ctl, sg_sync, sg_test_rwbuf, sg_timestamp, sg_turs, sg_unmap, sg_verify, sg_vpd, sg_wr_mode, sg_write_buffer, sg_write_long, sg_write_same, sg_write_verify, sg_write_x, sg_xcopy, sg_zone, sginfo, sgm_dd, 和 sgp_dd
安装库: libsgutils2.so
安装目录: None
简要描述
rescan-scsi-bus.sh 添加或删除SCSI设备而不必重新启动。
scsi_logging_level 访问Linux SCSI日志级别信息。
scsi_mandat 检查SCSI设备对强制命令的支持。
scsi_readcap 在磁盘上执行SCSI READ CAPACITY命令。
scsi_ready 设备上的SCSI TEST UNIT READY。
scsi_satl 检查SCSI到ATA转换(SAT)设备支持。
scsi_start 启动一个或多个SCSI磁盘。
scsi_stop 停止一个或多个SCSI磁盘。
scsi_temperature 获取SCSI设备的温度。
sg_bg_ctl 在设备上执行SCSI BACKGROUND CONTROL命令,以执行“高级后台操作”。
sg_compare_and_write发送SCSI COMPARE AND WRITE命令到设备。
sg_copy_results 发送SCSI RECEIVE COPY RESULTS命令(与XCOPY相关)。
sg_dd 在文件和设备之间复制数据。专门用于理解SCSI命令集的设备。
sg_decode_sense 以二进制或作为ASCII十六进制字节序列的SCSI感知数据并对其进行解码。
sg_emc_trespass 将LUN的所有权从另一个业务处理器更改为该业务处理器。
sg_format 格式化或调整SCSI磁盘的大小(可能更改其块大小)。
sg_get_config 发送SCSI GET配置命令(MMC-4 +)。
sg_get_elem_status 发送一个SCSI GET物理元素状态命令到一个设备。
sg_get_lba_status 发送SCSI GET LBA STATUS命令。
sg_ident 发送SCSI报告或设置识别信息命令。
sginfo SCSI(或ATAPI)设备的访问模式页信息。
sg_inq 发送SCSI查询或ATA标识(包)设备命令并输出响应。
sg_logs 用SCSI LOG SENSE命令访问日志页面。
sg_luns 发送SCSI REPORT LUNS命令。
sg_map 显示linux sg和其他SCSI设备之间的映射关系。
sg_map26 将一个特殊文件映射到SCSI通用设备(sg)(或反之)。
sgm_dd 在文件和设备之间复制数据。专门用于理解SCSI命令集并从sg设备进行内存映射传输的设备。
sg_modes 用SCSI模式感知命令读取模式页。
sg_opcodes 报告支持的SCSI命令或任务管理功能信息。
sgp_dd 在文件和设备之间复制数据。专门用于理解SCSI命令集的设备。
sg_persist 发送SCSI PERSISTENT RESERVE(IN或OUT)命令来操作注册和预留。
sg_prevent sends a SCSI PREVENT ALLOW MEDIUM REMOVAL command.
sg_raw 向设备发送任意SCSI命令。
sg_rbuf 使用SCSI READ BUFFER命令读数据。
sg_rdac 显示或修改“RDAC冗余控制器”界面。
sg_read 从相同的偏移量连续读取数据块。
sg_read_attr 在设备上执行SCSI READ ATTRIBUTE命令。
sg_read_block_limits 发送SCSI READ BLOCK LIMITS命令。
sg_read_buffer 发送一个SCSI READ BUFFER命令。
sg_readcap 发送SCSI READ CAPACITY命令。
sg_read_long 发送一个SCSI READ LONG命令。
sg_reassign 发送一个SCSI REASSIGN BLOCKS命令。
sg_referrals 发送一个SCSI REPORT REFERRALS命令。
sg_rep_pip 发送一个SCSI REPORT PROVISIONING INITIALIZATION PATTERN命令。
sg_rep_zones 发送一个SCSI REPORT ZONES命令。
sg_requests 发送一个或多个SCSI REQUEST SENSE命令。
sg_reset 发送SCSI设备、目标、总线或主机复位;或检查重置状态。
sg_reset_wp 发送一个SCSI RESET WRITE POINTER命令。
sg_rmsn 发送一个SCSI READ MEDIA SERIAL NUMBER命令。
sg_rtpg 发送一个SCSI REPORT TARGET PORT GROUPS命令。
sg_safte 从一个SCSI访问的容错框(SAF-TE)设备中获取状态信息。
sg_sanitize 发送一个SCSI SANITIZE命令。
sg_sat_identify 通过SCSI发送一个ATA识别(包)设备命令到ATA转换(SAT)层。
sg_sat_phy_event 通过SAT pass发送一个ATA READ LOG EXT命令来获取包含SATA phy事件计数器的日志页11h。
sg_sat_read_gplog 通过SCSI发送一个ATA READ LOG EXT命令到ATA转换(SAT)层。
sg_sat_set_features 通过SCSI发送一个 ATA SET FEATURES命令到ATA转换(SAT)层。
sg_scan 扫描sg设备(或给定的SCSI/ATAPI/ATA设备)并打印结果。
sg_seek 在设备及其缓存上执行 SCSI SEEK或PRE-FETCH命令。
sg_senddiag 执行SCSI SEND DIAGNOSTIC命令。
sg_ses 从SES (SCSI Enclosure Services)设备发送控制和获取当前状态。
sg_ses_microcode 发送微码到SCSI机框。
sg_start 发送一个SCSI START STOP UNIT命令开始,停止,加载或弹出介质。
sg_stpg 发送SCSI SET TARGET PORT GROUPS命令。
sg_stream_ctl 在设备上执行SCSI STREAM CONTROL或GET STREAM STATUS命令,以打开或关闭I/O流。
sg_sync 发送SCSI命令同步缓存。
sg_test_rwbuf 通过在设备的缓冲区上发出写和读操作并计算校验和来测试SCSI主机适配器。
sg_timestamp 报告或设置SCSI设备上的时间戳。
sg_turs 发送一个或多个SCSI TEST UNIT READY命令。
sg_unmap 发送一个SCSI UNMAP命令。
sg_verify 调用块设备上的SCSI VERIFY命令。
sg_vpd 使用SCSI INQUIRY命令获取重要产品数据(VPD)页。
sg_write_buffer 发送一个SCSI WRITE BUFFER命令。
sg_write_long 发送一个SCSI WRITE LONG命令。
sg_write_same 发送一个SCSI WRITE SAME命令。
sg_write_verify 发送一个SCSI WRITE AND VERIFY命令。
sg_write_x 在设备上执行SCSI WRITE命令。
sg_wr_mode 写模式页。
sg_xcopy 使用SCSI EXTENDED COPY(XCOPY)在文件和设备之间复制数据。
sg_zone 在设备上执行SCSI ZONE命令,如OPEN、CLOSE、FINISH或SEQUENTIALIZE。
libsgutils2.so 包含sg3_utils API函数。
12.28 Sysstat-12.7.2
简介Sysstat
Sysstat包包含了监控系统性能和使用活动的实用程序。Sysstat包含许多商业unix通用的sar工具,以及可以通过cron调度的工具来收集和历史性能和活动数据。
该软件包在LFS 11.3平台上可以正常构建和工作。
包信息
-
下载 (HTTP): http://sebastien.godard.pagesperso-orange.fr/sysstat-12.7.2.tar.xz
-
下载 MD5 校验和: cb625681a70b58e306d2564d4296a5ae
-
下载大小: 876 KB
-
预计所需磁盘空间: 28 MB
-
预计构建时间: 0.1 SBU
Sysstat依赖
这个包没有构建时的要求;但它被设计为由一个cron守护进程控制,例如Fcron-3.2.1。
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/sysstat
安装Sysstat
运行以下命令安装Sysstat:
sa_lib_dir=/usr/lib/sa \
sa_dir=/var/log/sa \
conf_dir=/etc/sysconfig \
./configure --prefix=/usr \
--disable-file-attr &&
make
这个包没有一个可用的测试套件。
现在,作为root用户:
make install
以root用户身份运行以下命令来安装systemd单元:
install -v -m644 sysstat.service /usr/lib/systemd/system/sysstat.service &&
install -v -m644 cron/sysstat-collect.service /usr/lib/systemd/system/sysstat-collect.service &&
install -v -m644 cron/sysstat-collect.timer /usr/lib/systemd/system/sysstat-collect.timer &&
install -v -m644 cron/sysstat-summary.service /usr/lib/systemd/system/sysstat-summary.service &&
install -v -m644 cron/sysstat-summary.timer /usr/lib/systemd/system/sysstat-summary.timer
以root用户身份运行以下命令修复systemd单元:
sed -i "/^Also=/d" /usr/lib/systemd/system/sysstat.service
命令解释
sa_lib_dir: 这个环境变量指定了特定于包的库目录的位置。
sa_dir: 这个环境变量指定了包含数据文件的目录的位置。
conf_dir: 这个环境变量指定了系统配置目录的位置。
--disable-file-attr: 不要在正在安装的文件上设置属性。这个参数会导致安装忽略man组变量,导致man文件拥有root: root所有权。
注意
运行./configure –help查看其他可以传递给configure的影响很大的环境变量。你可能想使用history和compressafter变量来自定义系统中保存的数据文件数量。
配置Sysstat
配置文件
/etc/sysconfig/sysstat 和 /etc/sysconfig/sysstat.ioconf
Cron信息
要开始收集Sysstat历史信息,必须添加或创建特权用户的crontab。历史数据的位置是/var/log/sa。通过cron运行Sysstat实用程序的用户必须对该位置具有写访问权限。
下面是在crontab中安装内容的示例。根据您的需要调整参数。使用man sa1和man sa2获取有关命令的信息。
# 8am-7pm activity reports every 10 minutes during weekdays
0 8-18 * * 1-5 /usr/lib/sa/sa1 600 6 &
# 7pm-8am activity reports every hour during weekdays
0 19-7 * * 1-5 /usr/lib/sa/sa1 &
# Activity reports every hour on Saturday and Sunday
0 * * * 0,6 /usr/lib/sa/sa1 &
# Daily summary prepared at 19:05
5 19 * * * /usr/lib/sa/sa2 -A &
确保将修改后的crontab提交给cron守护进程。
系统启动信息
在系统启动时,必须在日常数据文件中插入一个LINUX RESTART消息,以重新初始化内核计数器。这可以通过以root用户运行以下命令来启用之前安装的systemd单元来自动化:
systemctl enable sysstat
内容
安装程序: cifsiostat, iostat, mpstat, pidstat, sadf, sar, 和 tapestat
安装库: None
安装目录: /usr/lib/sa, /usr/share/doc/sysstat-12.7.2 和 /var/log/sa
简要描述
cifsiostat 查看CIFS文件系统读写操作统计信息。
iostat 报告CPU统计数据和设备和分区的输入/输出统计数据。
mpstat 为每个可用的处理器写活动。
pidstat 用于监视当前由Linux内核管理的各个进程。
sadf 用于显示由sar命令创建的数据文件的内容。但与sar不同的是,sadf可以将数据写入许多不同的格式。
sar 用于显示操作系统中选定的累积活动计数器的内容。
tapestat 用于监视连接到系统的磁带机的活动。
12.29 Systemd-252
简介systemd
虽然在构建LFS时安装了systemd,但由于还没有安装Linux-PAM,该包提供的许多功能没有包含在初始安装中。systemd包需要重新构建以提供一个可用的systemd-logind服务,该服务为依赖包提供了许多额外的功能。
该软件包在LFS 11.3平台上可以正常构建和工作。
包信息
-
下载 (HTTP): https://github.com/systemd/systemd/archive/v252/systemd-252.tar.gz
-
下载 MD5 校验和: b9456750a212dd54d81caeb3c38134b6
-
下载大小: 11 MB
-
预计所需磁盘空间: 307 MB (有测试)
-
预计构建时间: 2.8 SBU (有测试)
额外下载
systemd依赖
必要
推荐运行时依赖
可选
btrfs-progs-6.1.3, cURL-7.88.1, cryptsetup-2.4.3, git-2.39.2, GnuTLS-3.8.0, iptables-1.8.9, libgcrypt-1.10.1, libidn2-2.3.4, libpwquality-1.4.5, libseccomp-2.5.4, libxkbcommon-1.5.0, make-ca-1.12, p11-kit-0.24.1, pcre2-10.42, qemu-7.2.0, qrencode-4.1.1, rsync-3.2.7, sphinx-6.1.3, Valgrind-3.20.0;, zsh-5.9 (用于zsh完成), gnu-efi, kexec-tools, libbpf, libdw, libfido2, libmicrohttpd, lz4, quota-tools, 和 tpm2-tss
可选 (重建手册页)
docbook-xml-4.5, docbook-xsl-nons-1.79.2, libxslt-1.1.37, 和 lxml-4.9.2 (to build the index of systemd manual pages)
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/systemd
安装systemd
首先,修复systemd-coredump中的一个安全问题:
patch -Np1 -i ../systemd-252-security_fix-1.patch
从默认的udev规则中删除两个不需要的组,render和sgx:
sed -i -e 's/GROUP="render"/GROUP="video"/' \
-e 's/GROUP="sgx", //' rules.d/50-udev-default.rules.in
运行以下命令重新构建systemd:
mkdir build &&
cd build &&
meson --prefix=/usr \
--buildtype=release \
-Ddefault-dnssec=no \
-Dfirstboot=false \
-Dinstall-tests=false \
-Dldconfig=false \
-Dman=auto \
-Dsysusers=false \
-Drpmmacrosdir=no \
-Dhomed=false \
-Duserdb=false \
-Dmode=release \
-Dpam=true \
-Dpamconfdir=/etc/pam.d \
-Ddocdir=/usr/share/doc/systemd-252 \
.. &&
ninja
注意
为了获得最佳的测试结果,请确保您在由正在重建的systemd版本引导的系统上运行测试套件。
要测试结果,请执行以下命令: PATH+=:/usr/sbin ninja test.
现在,作为root用户:
ninja install
命令解释
--buildtype=release: 指定一个适合于稳定版本的构建类型,因为默认情况下可能会生成未优化的二进制文件。
-Dpamconfdir=/etc/pam.d: 强制将PAM文件安装在/etc/pam.d而不是/usr/lib/pam.d
-Duserdb=false: 删除在BLFS配置下不提供任何使用的守护进程。如果您希望启用userdbd守护进程,请将上述meson命令中的“false”替换为“true”。
-Dhomed=false: 删除在传统BLFS配置下不提供任何用途的守护进程,特别是使用useradd创建的帐户。要启用systemd-homed,首先要确保你已经安装了cryptsetup-2.4.3 和 libpwquality-1.4.5,然后在上面的meson命令中将“false”改为“true”。
配置systemd
为了让systemd-logind正常工作,需要修改/etc/pam.d/system-session文件并创建一个新文件。以root用户运行以下命令:
grep 'pam_systemd' /etc/pam.d/system-session ||
cat >> /etc/pam.d/system-session << "EOF"
# Begin Systemd addition
session required pam_loginuid.so
session optional pam_systemd.so
# End Systemd addition
EOF
cat > /etc/pam.d/systemd-user << "EOF"
# Begin /etc/pam.d/systemd-user
account required pam_access.so
account include system-account
session required pam_env.so
session required pam_limits.so
session required pam_unix.so
session required pam_loginuid.so
session optional pam_keyinit.so force revoke
session optional pam_systemd.so
auth required pam_deny.so
password required pam_deny.so
# End /etc/pam.d/systemd-user
EOF
警告
如果从systemd的旧版本升级,并且在系统启动时使用了initrd,则应该在重新启动系统之前生成一个新的initrd。
内容
安装文件的列表以及它们的简短描述可以在下面找到 ../../../../lfs/view/11.3-systemd/chapter08/systemd.html#contents-systemd.
下面列出的是新安装的程序以及简短的说明。
安装程序: homectl (如果cryptsetup-2.4.3已安装), systemd-cryptenroll (如果cryptsetup-2.4.3已安装), 和 userdbctl (可选的)
简要描述
homectl 是一个用于创建、删除、更改或检查由systemd-homed管理的主目录的工具;注意,对于我们在LFS/BLFS book中使用的经典UNIX用户和主目录,它是无用的。
systemd-cryptenroll 用于注册或从全磁盘加密中删除系统,以及设置和查询私钥和恢复密钥。
userdbctl 检查用户、组和组成员关系。
pam_systemd.so 是一个PAM模块,用于向systemd登录管理器systemd-logind注册用户会话。
12.30 UDisks-2.9.4
简介UDisks
UDisks包提供了一个守护进程、工具和库来访问和操作磁盘和存储设备。
该软件包在LFS 11.3平台上可以正常构建和工作。
包信息
-
下载 (HTTP): https://github.com/storaged-project/udisks/releases/download/udisks-2.9.4/udisks-2.9.4.tar.bz2
-
下载 MD5 校验和: 576e057d2654894fab58f0393d105b7b
-
下载大小: 1.6 MB
-
预计所需磁盘空间: 52 MB (有测试)
-
预计构建时间: 0.3 SBU (有测试)
UDisks依赖
必要
libatasmart-0.19, libblockdev-2.28, libgudev-237, libxslt-1.1.37, 和 Polkit-122
必要运行时
btrfs-progs-6.1.3, dosfstools-4.2, gptfdisk-1.0.9, mdadm-4.2, 和 xfsprogs-6.1.1
推荐
可选 (构建GNOME时需要)
可选
D-Bus Python-1.3.2 (用于集成测试), GTK-Doc-1.33.2, LVM2-2.03.18, PyGObject-3.42.2 (用于集成测试), exFAT, 和 libiscsi
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/udisks2
安装UDisks
运行以下命令安装UDisks:
./configure --prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
--disable-static &&
make
要测试结果,请执行以下命令: make check. 更全面的测试可以使用make ci来运行。你必须首先创建目录/var/run/udisks2和/var/lib/udisks2,这样就有了可选的python模块。
现在,作为root用户:
make install
命令解释
--disable-static: 这个开关阻止安装静态版本的库。
--enable-gtk-doc: 如果安装了GTK-Doc并且希望重新构建和安装API文档,请使用此参数。
内容
安装程序: udisksctl 和 umount.udisks2
安装库: libudisks2.so
安装目录: /etc/udisks2, /usr/include/udisks2, /usr/libexec/udisks2, /usr/share/gtk-doc/html/udisks2, 和 /var/lib/udisks2
简要描述
udisksctl 是一个命令行程序,用于与udisksd守护进程交互。
umount.udisks2 是一个命令行程序,用于卸载由UDisks守护进程装载的文件系统。
libudisks2.so 包含UDisks API函数。
12.31 UnRar-6.2.6
简介UnRar
UnRar包包含一个RAR提取工具,用于从RAR存档中提取文件。RAR存档通常是用WinRAR创建的,主要是在Windows环境中。
该软件包在LFS 11.3平台上可以正常构建和工作。
包信息
-
下载 MD5 校验和: 6c68f2bbcd9f06f9d37801ad4256e680
-
下载大小: 244 KB
-
预计所需磁盘空间: 2.3 MB
-
预计构建时间: 0.1 SBU
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/unrar
安装UnRar
注意
这个包将压缩包解压缩到未版本化目录unrar,而不是预期的目录unrar-6.2.6。
运行以下命令安装UnRar:
make -f makefile
这个包没有附带测试套件。
现在,作为root用户:
install -v -m755 unrar /usr/bin
内容
安装程序: unrar
安装库: None
安装目录: None
简要描述
unrar 解压一个RAR归档文件。
12.32 UnZip-6.0
简介UnZip
UnZip包包含了ZIP解压工具。这些对于从ZIP归档文件中提取文件非常有用。ZIP档案是用PKZIP或Info-ZIP工具创建的,主要是在DOS环境下。
该软件包在LFS 11.3平台上可以正常构建和工作。
当心
UnZip包的前一个版本有一些地区相关的问题。目前没有BLFS编辑器能够测试这些区域设置问题。因此,区域设置相关的信息会留在这个页面上,但还没有经过测试。关于这些问题的更广泛的讨论可以在Locale Related Issues页面的Program Assumes Encoding部分找到。
包信息
-
下载 (HTTP): https://downloads.sourceforge.net/infozip/unzip60.tar.gz
-
下载 (FTP): ftp://ftp.info-zip.org/pub/infozip/src/unzip60.tgz
-
下载 MD5 校验和: 62b490407489521db863b523a7f86375
-
下载大小: 1.3 MB
-
预计所需磁盘空间: 9 MB
-
预计构建时间: 小于 0.1 SBU
额外下载
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/unzip
UnZip区域设置问题
注意
在JDK、Mozilla、DocBook或任何其他BLFS包安装中使用UnZip都不是问题,因为BLFS的指令从不使用UnZip来解压缩文件名中含有非ascii字符的文件。
这些问题被认为在补丁中被修复了。但由于没有编辑器有数据来测试这一点,因此保留了以下变通方法,以防仍然需要它们。
UnZip包假设在非unix系统上创建的ZIP归档文件中存储的文件名是用CP850编码的,并且在向文件系统写入文件时,应该将它们转换为ISO-8859-1。这样的假设并不总是正确的。事实上,在ZIP归档文件中,文件名是在相关国家使用的DOS代码页中编码的,磁盘上的文件名应该是区域编码。在MS Windows中,OemToChar() C函数(来自User32.DLL)可以正确地进行转换(如果MS Windows设置为使用美国英语语言,则实际上是将CP850转换为ISO-8859-1的超集),但在Linux中没有等效的转换。
当使用unzip解压缩包含非ascii文件名的ZIP归档文件时,文件名会被破坏,因为unzip在其任何编码假设不正确时使用了不当的转换。例如,在ru_RU.KOI8-R语言环境中,需要将文件名从CP866转换为KOI8-R,但已经完成了从CP850到ISO-8859-1的转换,这将生成由无法理解的字符组成的文件名,而不是单词(对于只使用英语的用户来说,最接近的等价示例是rot13)。有几种方法可以绕过这个限制:
1) 在运行Wine Windows模拟器时,使用WinZip来解压包含非ascii字符的ZIP存档。
2) 使用libarchive-3.6.2中的bsdtar -xf解压缩压缩包。然后使用convmv工具(https://j3e.de/linux/convmv/)修复对文件名的损害。下面是zh_CN.UTF-8区域设置的示例:
convmv -f cp936 -t utf-8 -r --nosmart --notest \
</path/to/unzipped/files>
安装UnZip
首先应用补丁:
patch -Np1 -i ../unzip-6.0-consolidated_fixes-1.patch
现在编译包:
make -f unix/Makefile generic
该测试套件不适用于目标“generic”。
现在,作为root用户:
make prefix=/usr MANDIR=/usr/share/man/man1 \
-f unix/Makefile install
命令解释
make -f unix/Makefile generic: 这个目标首先运行一个配置脚本(与linux和linux_noasm等旧目标不同),它会创建一个标志文件,然后在构建中使用。这确保了32位x86构建接收到正确的标志来解压大于2GB的文件。
内容
安装程序: funzip, unzip, unzipfsx, zipgrep, 和 zipinfo
安装库: None
安装目录: None
简要描述
funzip 允许unzip命令的输出被重定向。
unzip 列表、测试或从ZIP归档文件中提取文件。
unzipfsx 是一个自提取存根,可以作为ZIP归档文件的前缀。这种格式的文件允许接收方解压归档文件,而无需安装UnZip。
zipgrep 在ZIP归档文件中搜索匹配模式的行。
zipinfo 生成关于ZIP档案中的文件的技术信息,包括文件访问权限、加密状态、压缩类型等。
12.33 UPower-1.90.0
简介UPower
UPower提供了电源设备枚举、设备事件监听、历史查询和统计的接口。系统上的任何应用程序或服务都可以通过系统消息总线访问org.freedesktop.UPower服务。
该软件包在LFS 11.3平台上可以正常构建和工作。
包信息
-
下载 (HTTP): https://gitlab.freedesktop.org/upower/upower/-/archive/v1.90.0/upower-v1.90.0.tar.bz2
-
下载 MD5 校验和: 4fba71838a9ba0db6f140418eddbe2b7
-
下载大小: 128 KB
-
预计所需磁盘空间: 4.9 MB (增加1.3 MB用于测试)
-
预计构建时间: 小于 0.1 SBU (使用并行数=4, 增加0.6 SBU用于测试)
UPower依赖
必要
libgudev-237, libusb-1.0.26, 和 Polkit-122
可选 (构建GNOME时需要)
可选
GTK-Doc-1.33.2, libxslt-1.1.37, docbook-xsl-nons-1.79.2, PyGObject-3.42.2, dbusmock-0.28.7, umockdev-0.17.16 (作为测试套件的一部分), 和 libimobiledevice
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/upower
内核配置
在内核配置中启用下列选项,必要时重新编译内核。
General Setup --->
[*] Namespaces support ---> [CONFIG_NAMESPACES]
[*] User namespace [CONFIG_USER_NS]
安装UPower
首先,从测试中移除不需要的依赖:
sed '/parse_version/d' -i src/linux/integration-test.py
运行以下命令安装UPower:
mkdir build &&
cd build &&
meson --prefix=/usr \
--buildtype=release \
-Dgtk-doc=false \
-Dman=false \
.. &&
ninja
要测试结果,请执行以下命令: LC_ALL=C ninja test. 由于缺少文件,有些检查可能无法通过。测试套件应该在由dbus-launch启动的本地GUI会话中运行。
现在,作为root用户:
ninja install
命令解释
-Dgtk-doc=false: 阻止构建文档。如果您已经安装了GTK-Doc并希望构建文档,请删除此选项。
-Dman=false: 阻止构建手册页。如果你已经安装了libxslt-1.1.37 和 docbook-xsl-nons-1.79.2并且希望构建手册页,请删除此代码。
配置UPower
Systemd Unit
要在启动时启动UPower服务,请以root用户运行以下命令启用之前安装的systemd单元:
systemctl enable upower
内容
安装程序: upower
安装库: libupower-glib.so
安装目录: /etc/UPower, /usr/include/libupower-glib, 和 /var/lib/upower
简要描述
upower 为UPower命令行工具。
libupower-glib.so 包含UPower API函数。
12.34 usbutils-015
简介USB Utils
USB Utils包包含了一些实用程序,用于显示系统中USB总线以及连接到这些总线的设备的相关信息。
该软件包在LFS 11.3平台上可以正常构建和工作。
包信息
-
下载 (HTTP): https://github.com/gregkh/usbutils/archive/v015/usbutils-015.tar.gz
-
下载 MD5 校验和: 112eafa991e55229b9f48b90c290a0e2
-
下载大小: 120 KB
-
预计所需磁盘空间: 4.3 MB
-
预计构建时间: 0.1 SBU
USB Utils依赖
必要
推荐
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/usbutils
安装USB Utils
运行以下命令安装USB Utils:
autoreconf -fiv &&
./configure --prefix=/usr --datadir=/usr/share/hwdata &&
make
这个包没有附带测试套件。
现在,作为root用户:
make install
要安装usb.ids数据文件,使用Wget-1.21.3,以root用户运行:
install -dm755 /usr/share/hwdata/ &&
wget http://www.linux-usb.org/usb.ids -O /usr/share/hwdata/usb.ids
脚本lsusb.py以比lsusb更容易阅读的形式显示信息。要查找这些选项,请使用lsusb.py -h。开发人员推荐的一种使用形式是lsusb.py -ciu。
配置USB Utils
您应该定期更新/usr/share/hwdata/usb.ids文件。以root用户的身份执行以下命令,创建一个systemd定时器,在周日的当地时间每星期2:30更新一次:
cat > /usr/lib/systemd/system/update-usbids.service << "EOF" &&
[Unit]
Description=Update usb.ids file
Documentation=man:lsusb(8)
DefaultDependencies=no
After=local-fs.target network-online.target
Before=shutdown.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/wget http://www.linux-usb.org/usb.ids -O /usr/share/hwdata/usb.ids
EOF
cat > /usr/lib/systemd/system/update-usbids.timer << "EOF" &&
[Unit]
Description=Update usb.ids file weekly
[Timer]
OnCalendar=Sun 03:00:00
Persistent=true
[Install]
WantedBy=timers.target
EOF
systemctl enable update-usbids.timer
内容
安装程序: lsusb, lsusb.py, usb-devices, 和 usbhid-dump
安装库: None
安装目录: None
简要描述
lsusb 是一个实用程序,用于显示系统中所有USB总线以及与之连接的所有设备的信息,但不是以人类友好的形式。
lsusb.py 以合理友好的形式显示系统中所有USB总线的信息以及连接到这些总线的所有设备的信息。
usb-devices 是一个shell脚本,用于显示USB总线和连接到这些总线的设备的详细信息。它被设计用于你的系统上没有/proc/bus/usb/devices的情况。
usbhid-dump 用于从USB设备的HID (human interface device)接口转储报告描述符和数据流。
12.35 Which-2.21 和 Alternatives
LFS主书中which程序的存在与否,可能是邮件列表上最具争议的问题之一。它在过去至少导致了一场激烈的战争。为了一劳永逸地解决这个问题,这里给出了为你的系统配备which的两个选项。哪个“which”的问题由你来决定。
简介GNU Which
第一个选项是安装实际的GNU which包。
该软件包在LFS 11.3平台上可以正常构建和工作。
包信息
-
下载 MD5 校验和: 097ff1a324ae02e0a3b0369f07a7544a
-
下载大小: 148 KB
-
预计所需磁盘空间: 1 MB
-
预计构建时间: 小于 0.1 SBU
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/which
安装Which
运行以下命令安装which:
./configure --prefix=/usr &&
make
这个包没有附带测试套件。
现在,作为root用户:
make install
内容
安装程序: which
安装库: None
安装目录: None
简要描述
which 显示安装在PATH中的(shell)命令的完整路径。
‘which’脚本
第二个选择(对于那些不想安装包的人)是创建一个简单的脚本(以root用户执行):
cat > /usr/bin/which << "EOF"
#!/bin/bash
type -pa "$@" | head -n 1 ; exit ${PIPESTATUS[0]}
EOF
chmod -v 755 /usr/bin/which
chown -v root:root /usr/bin/which
这应该可以正常工作,对于大多数情况来说可能是最简单的解决方案,但不是最全面的实现。
12.36 Zip-3.0
简介Zip
Zip包包含Zip实用程序。这些对于将文件压缩为ZIP存档非常有用。
该软件包在LFS 11.3平台上可以正常构建和工作。
包信息
-
下载 (HTTP): https://downloads.sourceforge.net/infozip/zip30.tar.gz
-
下载 MD5 校验和: 7b74551e63f8ee6aab6fbc86676c0d37
-
下载大小: 1.1 MB
-
预计所需磁盘空间: 6.4 MB
-
预计构建时间: 0.1 SBU
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/zip
安装Zip
运行以下命令安装Zip:
make -f unix/Makefile generic_gcc
这个包没有附带测试套件。
现在,作为root用户:
make prefix=/usr MANDIR=/usr/share/man/man1 -f unix/Makefile install
命令解释
make prefix=/usr -f unix/Makefile install: 这个命令覆盖了unix/Makefile中被设置为/usr/local的prefix变量。generic_gcc的替代方案可以使用make -f unix/Makefile list命令。
内容
安装程序: zip, zipcloak, zipnote, 和 zipsplit
安装库: None
安装目录: None
简要描述
zip 将文件压缩为ZIP压缩包。
zipcloak 是一个加密和解密ZIP归档文件的实用程序。
zipnote 读写存储在ZIP文件中的注释。
zipsplit 是一个将ZIP文件分割为更小文件的工具。