鲲鹏CentOS服务器上的源码安装Coreutils
GNU核心工具组(英语:GNU Core Utilities,亦常缩写为Coreutils)是一个 GNU 软件包,它包含了许多基本工具(如cat,ls 和 rm)在类 Unix 操作系统上的重新实现。
1 安装准备
华为云购买一台鲲鹏服务器
本文以云服务器KC1实例搭建,云服务器配置如表1-1所示。
表1-1 云服务器配置
项目 |
说明 |
规格 |
kc1.large.2 | 4vCPUs | 8GB |
磁盘 |
系统盘:高IO(40GB) |
操作系统要求如表1-2所示。
表1-2 操作系统要求
项目 |
说明 |
下载地址 |
CentOS |
7.6 |
在公共镜像中已提供。 |
Kernel |
4.14.0 |
在公共镜像中已提供。 |
2 获取源码
获取“Coreutils-8.32”源码包。
cd /usr/local/src wget https://ftp.gnu.org/gnu/coreutils/coreutils-8.32.tar.gz
3 编译和安装
由于该工具不能够在root用户下执行,切换到其他账户,这里新建一个test账户,并且切换到test账户下操作。
1) root用户下创建test用户
添加test用户
useradd test
设置test用户密码
passwd test
根据提示,设置密码。
2) 解压并且让test用户拥有目录操作权限。
tar -zxvf coreutils-8.32.tar.gz chown test:test coreutils-8.32
3) 设置Coreutils安装目录操作权限。
mkdir –p /usr/local/coreutils chown test:test /usr/local/coreutils
4) 切换到test目录,对Coreutils进行编译安装。
su test cd /usr/local/src/coreutils-8.32 ./configure --prefix=/usr/local/coreutils make -j4 make install
4 运行和验证
测试Coreutils是否安装完成。
cd /usr/local/coreutils ./ls -version
5 故障排除
问题一:编译Coreutils时报SYS_getdents未定义错误
问题描述:
切换到test目录,对Coreutils进行编译安装,执行make -4时候报错,提示信息如下:
问题原因:
在一些就的linux系统中,用来查询文件信息的系统调用的是SYS_getdents,但是在一些较新的版本中,通过SYS_getdents64来查询文件信息,其实现原理与SYS_getdents基本相同。本例中通过strace ls查询到,本系统通过SYS_getdents64来查询文件信息
解决方法:
vim src/ls.c
将3026行代码SYS_getdents改为SYS_getdents64
- 点赞
- 收藏
- 关注作者
评论(0)