lfs下安装selinux需要重新安装的程序

本文详细介绍了在安装完 SELinux 用户空间的 lib 和程序后,为确保其正常工作所需重新安装的关键组件及步骤,包括 SysVinit、coreutils、pam、shadow、utils-linux、udev 等,并提供了具体的配置方法和注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装完selinux用户空间的lib和程序以后,要使用selinux还需要重新安装几个应用程序。

开始摸着弄得,很麻烦,中间有很多东西是用的时候有问题才发现的。

后来才发现在selinux userspace官网的Userland Packages里面大部分都写了,网址见下:

http://userspace.selinuxproject.org/trac/wiki/Userland

下面还是大概写一下为什么要安装吧,要是遇到问题了也能做个参考。


1、SysVinit   这个是一定要重新编译的。而且要打一个补丁。我用的gentoo里面的补丁。加上这个补丁以后,在init开始运行的前期就会根据selinux的config文件加载相应的policy。并进入相应的模式 (enforcing、permissive、disabled)。

                    补丁可以在gentoo的各个镜像的 distfiles/sysvinit-xxx-patches.tar.bz2里面找到。补丁文件不一定能直接使用,自己稍作修改就行了。编译的时候我还是按照lfs的弄得,但要 make的时候记着要:

                        make WITH_SELINUX=yes。


2、coreutils   这个要重新configure、make一下,链接到libselinux。不需要特殊的参数,configure会自动判断libselinux的。

                  不重新编译这个的话,ls、id那写的 -Z 参数都没用的,都会显示 ? 或者 不正常的东西。chcron也用不了。


3、pam       开始的时候没安装这个库,结果登陆了以后通过id -Z看到的用户的信息一直都是system_u:system_r (semange login 里面都设了还是不对)。开始郁闷了很久,后来看到Harry Ciao的《SELinux 学习笔记》有一个地方提到了PAM,才开始怀疑用户登陆时候脚色的切换是不是依靠pam。然后才装了,结果就对了。安装方法参考blfs,configure的时候加个 --enable-selinux的参数。

               另外:安装linux-pam后要重新编译 policycoreutils,否则newrole 的时候会报: cannot find your entry in the shadow passwd file.

 

4、shadow   编译完一定要重新编译一下这个,blfs里面说了。而且selinux好像也需要重新编译这个。不需要加参数,会自动判断selinux和pam的。


5、utils-linux   selinux userspace的Userland Packages里面说了就弄了,configure的时候需要加上  --with-selinux 的参数


6、udev     这个官网里面没说。发现这个问题是在relable系统的时候,/dev/console明明已经relable成console_device_t。但是重启完了以后就变成 device_t了。/dev/tty* 也是。后来就怀疑到这了。感觉像udev重新创建/dev的时候没relable。就试着重装了一下,OK了。configure的时候需要加上  --with-selinux 的参数


另外,当时newrole -r xxx_r 的时候报  Error! Shell is not valid. 的错误。看了下newrole的代码,它会去  /etc/shells 里面判断当前的shell是否合法的?感觉很奇怪。LFS里面没有这个文件。自己建一个吧,内容如下就行:

# /etc/shells: valid login shells
/bin/bash
/bin/sh


<think>好的,用户现在的问题是在EulerOS上安装Git。我需要结合用户提供的引用和之前的回答来给出合适的解决方案。 首先,查看用户提供的引用,引用[2]提到了在openEuler系统上安装Git的步骤,包括查看版本号,显示成功安装。引用[5]则涉及安装git-lfs,其中提到了使用dnf安装golang和rpm-build工具,这可能对编译安装有帮助。不过用户现在的问题是关于Git本身,而不是git-lfs。 用户之前的问题是关于Nginx启动失败,我给出了详细的排查步骤,包括配置检查、端口冲突、SELinux、权限、日志和模块依赖等。现在需要在EulerOS上安装Git,可能需要考虑两种方法:使用包管理器直接安装或手动编译安装。引用[1]提到手动编译安装Git,而引用[2]则使用包管理器安装。 考虑到EulerOS基于CentOS或openEuler,包管理器可能是yum或dnf。根据引用[2],在openEuler中使用dnf安装Git,步骤简单,直接运行dnf install git,然后验证版本。而引用[1]提到手动编译安装,适用于需要特定版本的情况。 用户可能需要最简便的方法,所以优先推荐使用包管理器安装。如果用户需要较新版本,再提供编译安装的步骤。需要注意引用[3]和[5]中的编译步骤,比如安装依赖项,配置,make等步骤。 此外,用户可能在华为云EulerOS(HCE)上操作,引用[4]提到在HCE上搭建FTP,可能涉及类似的包管理命令。需要确认EulerOS的具体版本,但通常包管理命令是通用的。 需要确保步骤清晰,分两种情况,并给出验证安装的方法,如git --version。同时,提醒用户如果遇到依赖问题,如何解决,比如安装开发工具组。 最后,生成相关问题,可能涉及升级Git、配置Git或使用Git-lfs等,参考引用[5]的内容。</think>### 在EulerOS上安装Git的详细步骤 --- #### **方法一:通过包管理器快速安装(推荐)** 适用于大多数场景,通过系统默认仓库安装稳定版Git。 **操作步骤**: 1. **更新软件仓库**: ```bash sudo dnf update -y # EulerOS 2.0+ 或 HCE 2.0 使用dnf # 若为旧版EulerOS(基于CentOS),可使用: # sudo yum update -y ``` 2. **安装Git**: ```bash sudo dnf install -y git # 或 sudo yum install -y git ``` 3. **验证安装**: ```bash git --version ``` - **成功示例**: ``` git version 2.33.0 # 版本号可能因仓库更新而变化[^2] ``` --- #### **方法二:手动编译安装(适用于特定版本需求)** 若需要最新版本或自定义功能,可通过源码编译安装。 **操作步骤**: 1. **安装编译依赖**: ```bash sudo dnf install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc make ``` 2. **下载Git源码包**: ```bash wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.40.0.tar.gz # 替换为最新版本号 tar -xzf git-*.tar.gz cd git-* ``` 3. **编译并安装**: ```bash ./configure --prefix=/usr/local # 指定安装路径 make -j$(nproc) # 多线程编译加速 sudo make install ``` 4. **验证安装**: ```bash /usr/local/bin/git --version # 直接调用编译后的二进制文件 ``` --- #### **常见问题解决** 1. **依赖缺失错误**: - 若编译时提示`missing development tools`,需安装基础开发工具组: ```bash sudo dnf groupinstall -y "Development Tools" ``` 2. **版本冲突**: - 若系统已通过包管理器安装旧版Git,可通过以下命令指定优先使用编译版本: ```bash echo &#39;export PATH="/usr/local/bin:$PATH"&#39; >> ~/.bashrc source ~/.bashrc ``` --- ### **操作流程示例** 1. **通过包管理器安装**: ```bash sudo dnf update -y && sudo dnf install -y git git --version # 确认版本 ``` 2. **手动编译安装(以v2.40.0为例)**: ```bash sudo dnf install -y wget gcc make openssl-devel # 安装依赖 wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.40.0.tar.gz tar -xzf git-2.40.0.tar.gz && cd git-2.40.0 ./configure --prefix=/usr/local && make -j4 sudo make install /usr/local/bin/git --version # 验证新版本 ``` --- ### **相关问题** 1. 如何升级EulerOS上已安装的Git到最新版本? 2. 如何配置Git的全局用户和邮箱信息? 3. 如何在EulerOS上安装并配置Git LFS(大文件支持)?[^5] --- [^2]: openEuler系统通过`dnf install`安装Git的版本验证 [^5]: 编译安装Git LFS需依赖Golang和rpm-build工具
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值