活动公告

系统通知
05-18 21:22
系统通知
通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,资源失效请在帖子内回复要求补档,会尽快处理!
10-23 09:31

Prefix Gentoo完全配置手册无root权限下打造高效Linux环境

SunJu_FaceMall

3万

主题

2860

科技点

3万

积分

白金月票

碾压王

积分
32872

塔罗立华奏

<font color=白金月票" /> 发表于 2025-9-6 21:10:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
引言

Gentoo Linux以其高度可定制性和优化性能而闻名,但通常需要root权限进行安装。然而,通过Prefix Gentoo技术,用户可以在没有管理员权限的情况下,在自己的主目录中安装完整的Gentoo环境。这种方法特别适合在共享服务器、学校计算机或工作环境中使用,让你能够在受限环境中依然享受到Gentoo带来的灵活性和性能优势。

Prefix Gentoo本质上是一个在非标准位置安装的Gentoo系统,它不依赖于系统级的文件结构,而是完全存在于用户目录中。这意味着你可以拥有自己的软件包集合、编译工具链和系统库,而不会影响主机系统的其他部分。

本手册将详细介绍如何在无root权限的情况下安装、配置和优化Prefix Gentoo,帮助你打造一个高效、个性化的Linux环境。

准备工作

在开始安装Prefix Gentoo之前,需要确保你的系统满足一些基本要求,并准备好必要的工具。

系统要求

• 一个正在运行的Linux发行版(如Ubuntu、CentOS、Debian等)
• 足够的磁盘空间(至少10GB,推荐20GB以上)
• 稳定的网络连接
• 基本的开发工具(如gcc、make等)

必要工具

大多数Linux发行版已经预装了基本的开发工具,但如果没有,你需要安装它们。以下是在不同发行版中安装基本开发工具的命令:

Ubuntu/Debian:
  1. apt-get update
  2. apt-get install build-essential wget git python3
复制代码

CentOS/RHEL:
  1. yum groupinstall "Development Tools"
  2. yum install wget git python3
复制代码

Fedora:
  1. dnf groupinstall "Development Tools"
  2. dnf install wget git python3
复制代码

检查系统架构

Prefix Gentoo需要与你的系统架构匹配。使用以下命令检查你的系统架构:
  1. uname -m
复制代码

常见的输出包括:

• x86_64:64位Intel/AMD处理器
• i686:32位Intel/AMD处理器
• armv7l:32位ARM处理器
• aarch64:64位ARM处理器

准备安装目录

选择一个合适的位置来安装Prefix Gentoo。通常,用户会选择在自己的主目录中创建一个专门的文件夹:
  1. mkdir -p ~/gentoo
  2. export EPREFIX="$HOME/gentoo"
复制代码

将EPREFIX环境变量设置为你的Prefix Gentoo安装路径,这将简化后续的安装过程。

安装Prefix Gentoo

Prefix Gentoo的安装过程包括几个主要步骤:下载引导脚本、设置基本系统、配置Portage和安装基础工具。

下载引导脚本

Prefix Gentoo提供了一个引导脚本,可以自动完成大部分安装过程。下载并运行这个脚本:
  1. cd ~
  2. wget https://raw.githubusercontent.com/gentoo/prefix-bootstrap/master/prefix-bootstrap.sh
  3. chmod +x prefix-bootstrap.sh
复制代码

运行引导脚本

运行引导脚本开始安装过程:
  1. ./prefix-bootstrap.sh
复制代码

引导脚本会提示你进行一些基本配置,如选择镜像站点、设置CPU架构等。按照提示进行选择即可。

注意:引导脚本可能需要一些时间来完成,因为它会编译和安装基本的工具链和系统库。

手动安装方法

如果自动引导脚本因某种原因失败,你可以尝试手动安装Prefix Gentoo。以下是手动安装的主要步骤:

首先,下载适合你系统架构的Stage包:
  1. cd $EPREFIX
  2. wget http://distfiles.gentoo.org/releases/amd64/autobuilds/latest-stage3-amd64.txt
  3. LATEST_STAGE=$(cat latest-stage3-amd64.txt | grep stage3-amd64 | head -n 1 | awk '{print $1}')
  4. wget http://distfiles.gentoo.org/releases/amd64/autobuilds/$LATEST_STAGE
  5. tar xjf $(basename $LATEST_STAGE)
  6. rm -f latest-stage3-amd64.txt $(basename $LATEST_STAGE)
复制代码

下载并设置Portage(Gentoo的包管理系统):
  1. mkdir -p $EPREFIX/usr/portage
  2. wget https://mirror.bytemark.co.uk/gentoo/releases/snapshots/current/portage-latest.tar.bz2
  3. tar xjf portage-latest.tar.bz2 -C $EPREFIX/usr
  4. rm -f portage-latest.tar.bz2
复制代码

创建基本的配置文件:
  1. mkdir -p $EPREFIX/etc
  2. echo "export EPREFIX="$EPREFIX"" > $EPREFIX/etc/profile.env
  3. echo "export PATH="\$EPREFIX/usr/bin:\$EPREFIX/bin:\$EPREFIX/usr/sbin:\$EPREFIX/sbin:\$PATH"" >> $EPREFIX/etc/profile.env
  4. echo "export MANPATH="\$EPREFIX/usr/share/man:\$MANPATH"" >> $EPREFIX/etc/profile.env
  5. echo "export INFOPATH="\$EPREFIX/usr/share/info:\$INFOPATH"" >> $EPREFIX/etc/profile.env
  6. echo "export LD_LIBRARY_PATH="\$EPREFIX/usr/lib:\$EPREFIX/lib:\$LD_LIBRARY_PATH"" >> $EPREFIX/etc/profile.env
复制代码

创建Portage的主配置文件:
  1. cat > $EPREFIX/etc/portage/make.conf << EOF
  2. # 设置架构
  3. ARCH="$(uname -m)"
  4. # 设置编译选项
  5. CFLAGS="-O2 -pipe"
  6. CXXFLAGS="\${CFLAGS}"
  7. # 设置CPU特性(根据你的CPU调整)
  8. COMMON_FLAGS="-O2 -pipe"
  9. CPU_FLAGS_X86="mmx sse sse2"
  10. # 设置USE标志(根据需要调整)
  11. USE="X gtk gtk2 qt5 kde alsa pulseaudio bluetooth unicode"
  12. # 设置接受的关键字
  13. ACCEPT_KEYWORDS="~$(uname -m)"
  14. # 设置语言环境
  15. L10N="en en-US zh zh-CN"
  16. LINGUAS="en en-US zh zh-CN"
  17. # 设置输入设备
  18. INPUT_DEVICES="libinput keyboard mouse"
  19. # 设置视频驱动
  20. VIDEO_CARDS="intel nvidia"
  21. # 设置Gentoo镜像
  22. GENTOO_MIRRORS="https://mirror.bytemark.co.uk/gentoo/ https://www.mirrorservice.org/sites/distfiles.gentoo.org/"
  23. # 设置Portage特性
  24. FEATURES="parallel-fetch userfetch userpriv usersandbox"
  25. EOF
复制代码

创建仓库配置文件:
  1. mkdir -p $EPREFIX/etc/portage/repos.conf
  2. cat > $EPREFIX/etc/portage/repos.conf/gentoo.conf << EOF
  3. [DEFAULT]
  4. main-repo = gentoo
  5. [gentoo]
  6. location = $EPREFIX/usr/portage
  7. sync-type = rsync
  8. sync-uri = rsync://rsync.gentoo.org/gentoo-portage
  9. auto-sync = yes
  10. sync-rsync-verify-jobs = 1
  11. sync-rsync-verify-metamanifest = yes
  12. sync-rsync-extra-opts = --timeout=120
  13. EOF
复制代码

创建Prefix Gentoo需要的目录结构:
  1. mkdir -p $EPREFIX/{bin,boot,dev,etc,home,lib,lib64,opt,proc,root,run,sbin,srv,sys,tmp,usr,var}
  2. mkdir -p $EPREFIX/usr/{bin,include,lib,lib64,local,sbin,share,src}
  3. mkdir -p $EPREFIX/var/{lib,log,cache,db,tmp}
复制代码

创建基本的设备文件:
  1. mknod $EPREFIX/dev/null c 1 3
  2. chmod 666 $EPREFIX/dev/null
  3. mknod $EPREFIX/dev/zero c 1 5
  4. chmod 666 $EPREFIX/dev/zero
  5. mknod $EPREFIX/dev/random c 1 8
  6. chmod 666 $EPREFIX/dev/random
  7. mknod $EPREFIX/dev/urandom c 1 9
  8. chmod 666 $EPREFIX/dev/urandom
复制代码

基本配置

安装完成后,需要进行一些基本配置,以确保Prefix Gentoo能够正常运行。

设置环境变量

为了方便使用Prefix Gentoo,可以设置一些环境变量。创建一个脚本文件:
  1. cat > $HOME/gentoo-env.sh << EOF
  2. #!/bin/bash
  3. export EPREFIX="$HOME/gentoo"
  4. export PATH="\$EPREFIX/usr/bin:\$EPREFIX/bin:\$EPREFIX/usr/sbin:\$EPREFIX/sbin:\$PATH"
  5. export MANPATH="\$EPREFIX/usr/share/man:\$MANPATH"
  6. export INFOPATH="\$EPREFIX/usr/share/info:\$INFOPATH"
  7. export LD_LIBRARY_PATH="\$EPREFIX/usr/lib:\$EPREFIX/lib:\$LD_LIBRARY_PATH"
  8. export PS1="(gentoo) \$PS1"
  9. EOF
  10. chmod +x $HOME/gentoo-env.sh
复制代码

每次使用Prefix Gentoo时,只需运行:
  1. source $HOME/gentoo-env.sh
复制代码

或者,你可以将以下内容添加到你的.bashrc或.zshrc文件中:
  1. # Prefix Gentoo environment
  2. if [ -d "$HOME/gentoo" ]; then
  3.     export EPREFIX="$HOME/gentoo"
  4.     export PATH="$EPREFIX/usr/bin:$EPREFIX/bin:$EPREFIX/usr/sbin:$EPREFIX/sbin:$PATH"
  5.     export MANPATH="$EPREFIX/usr/share/man:$MANPATH"
  6.     export INFOPATH="$EPREFIX/usr/share/info:$INFOPATH"
  7.     export LD_LIBRARY_PATH="$EPREFIX/usr/lib:$EPREFIX/lib:$LD_LIBRARY_PATH"
  8.     export PS1="(gentoo) $PS1"
  9. fi
复制代码

更新Portage树

首次使用前,需要更新Portage树(软件包数据库):
  1. source $HOME/gentoo-env.sh
  2. emerge --sync
复制代码

配置时区

设置正确的时区:
  1. echo "Asia/Shanghai" > $EPREFIX/etc/timezone
  2. emerge --config sys-libs/timezone-data
复制代码

配置locale

设置系统语言环境:
  1. cat > $EPREFIX/etc/locale.gen << EOF
  2. en_US.UTF-8 UTF-8
  3. zh_CN.UTF-8 UTF-8
  4. EOF
  5. emerge -v sys-libs/glibc
  6. locale-gen
  7. eselect locale set en_US.utf8
复制代码

创建用户信息

创建基本的用户信息文件:
  1. cat > $EPREFIX/etc/passwd << EOF
  2. root:x:0:0:root:/root:/bin/bash
  3. $(id -un):x:$(id -u):$(id -g):$(id -un):$HOME:/bin/bash
  4. EOF
  5. cat > $EPREFIX/etc/group << EOF
  6. root:x:0:
  7. $(id -gn):x:$(id -g):
  8. EOF
复制代码

软件管理

Prefix Gentoo使用Portage作为包管理系统,与标准Gentoo系统相同。以下是使用Portage管理软件的基本方法。

搜索软件包

使用emerge --search或emerge -S搜索软件包:
  1. emerge --search python
复制代码

或者使用更详细的搜索:
  1. emerge --searchdesc python
复制代码

安装软件包

使用emerge命令安装软件包:
  1. emerge -v app-editors/vim
复制代码

其中:

• -v表示详细输出
• app-editors/vim是软件包的类别和名称

卸载软件包

使用emerge --unmerge或emerge -C卸载软件包:
  1. emerge --unmerge vim
复制代码

更新系统

更新所有已安装的软件包:
  1. emerge -v --update --deep --newuse @world
复制代码

清理无用的依赖

清理不再需要的依赖包:
  1. emerge --depclean
复制代码

查询已安装的软件包

使用equery工具查询已安装的软件包:
  1. equery list
复制代码

或者查询特定软件包的信息:
  1. equery belongs vim
复制代码

使用USE标志

USE标志是Gentoo的一个重要特性,它允许你控制软件包的编译选项。你可以全局设置USE标志,也可以为特定软件包设置USE标志。

在$EPREFIX/etc/portage/make.conf中设置全局USE标志:
  1. echo 'USE="X gtk gtk2 qt5 kde alsa pulseaudio bluetooth unicode"' >> $EPREFIX/etc/portage/make.conf
复制代码

为特定软件包设置USE标志:
  1. mkdir -p $EPREFIX/etc/portage/package.use
  2. echo 'app-editors/vim python perl' >> $EPREFIX/etc/portage/package.use/vim
复制代码

查看软件包可用的USE标志:
  1. emerge -pv vim
复制代码

使用掩码和关键字

控制软件包的版本和可用性。

默认情况下,Portage只安装稳定版本的软件包。如果你想安装测试版本,需要修改make.conf:
  1. echo 'ACCEPT_KEYWORDS="~amd64"' >> $EPREFIX/etc/portage/make.conf
复制代码

(将amd64替换为你的系统架构)

阻止安装特定版本的软件包:
  1. mkdir -p $EPREFIX/etc/portage/package.mask
  2. echo '>=sys-devel/gcc-10' >> $EPREFIX/etc/portage/package.mask/gcc
复制代码

允许安装被默认掩码的软件包:
  1. mkdir -p $EPREFIX/etc/portage/package.unmask
  2. echo 'sys-devel/gcc' >> $EPREFIX/etc/portage/package.unmask/gcc
复制代码

高级配置

Prefix Gentoo允许你进行各种高级配置,以优化系统性能和满足特定需求。

自定义编译选项

优化编译选项可以提高软件性能。在$EPREFIX/etc/portage/make.conf中设置:
  1. # 针对CPU优化的编译选项
  2. COMMON_FLAGS="-march=native -O2 -pipe -fomit-frame-pointer"
  3. CFLAGS="${COMMON_FLAGS}"
  4. CXXFLAGS="${COMMON_FLAGS}"
  5. # 链接时优化
  6. LDFLAGS="-Wl,-O1 -Wl,--as-needed"
  7. # 并行编译
  8. MAKEOPTS="-j$(nproc)"
复制代码

使用二进制包

为了节省编译时间,你可以使用预编译的二进制包:
  1. # 创建二进制包目录
  2. mkdir -p $EPREFIX/var/cache/binpkgs
  3. # 在make.conf中启用二进制包
  4. echo 'FEATURES="getbinpkg"' >> $EPREFIX/etc/portage/make.conf
  5. echo 'PORTAGE_BINHOST="https://your-binhost-url"' >> $EPREFIX/etc/portage/make.conf
复制代码

创建自定义Portage覆盖层

创建自定义的Portage覆盖层,用于存储自定义的ebuild和补丁:
  1. mkdir -p $EPREFIX/var/lib/overlay
  2. echo "[local]" > $EPREFIX/etc/portage/repos.conf/local.conf
  3. echo "location = $EPREFIX/var/lib/overlay" >> $EPREFIX/etc/portage/repos.conf/local.conf
  4. echo "masters = gentoo" >> $EPREFIX/etc/portage/repos.conf/local.conf
  5. echo "auto-sync = no" >> $EPREFIX/etc/portage/repos.conf/local.conf
复制代码

使用distcc加速编译

distcc允许你将编译任务分发到多台计算机上,加速编译过程:
  1. # 安装distcc
  2. emerge -v sys-devel/distcc
  3. # 配置distcc
  4. echo 'FEATURES="distcc"' >> $EPREFIX/etc/portage/make.conf
  5. echo 'MAKEOPTS="-j$(nproc) -l$(nproc)"' >> $EPREFIX/etc/portage/make.conf
  6. # 设置distcc主机
  7. echo "192.168.1.100 192.168.1.101" > $EPREFIX/etc/distcc/hosts
复制代码

使用ccache加速编译

ccache缓存编译结果,加速重复编译:
  1. # 安装ccache
  2. emerge -v dev-util/ccache
  3. # 配置ccache
  4. echo 'FEATURES="ccache"' >> $EPREFIX/etc/portage/make.conf
  5. echo 'CCACHE_SIZE="5G"' >> $EPREFIX/etc/portage/make.conf
  6. # 设置ccache目录
  7. mkdir -p $EPREFIX/var/cache/ccache
  8. echo 'CCACHE_DIR="$EPREFIX/var/cache/ccache"' >> $EPREFIX/etc/portage/make.conf
复制代码

优化文件系统

优化文件系统设置可以提高性能:
  1. # 在/etc/fstab中添加(如果有权限)
  2. # none $EPREFIX/tmp tmpfs defaults,size=2G 0 0
  3. # none $EPREFIX/var/tmp/portage tmpfs defaults,size=4G 0 0
  4. # 或者创建RAM磁盘
  5. mkdir -p $EPREFIX/tmp $EPREFIX/var/tmp/portage
  6. mount -t tmpfs -o size=2G none $EPREFIX/tmp
  7. mount -t tmpfs -o size=4G none $EPREFIX/var/tmp/portage
复制代码

配置网络

配置网络设置:
  1. # 创建resolv.conf
  2. echo "nameserver 8.8.8.8" > $EPREFIX/etc/resolv.conf
  3. echo "nameserver 8.8.4.4" >> $EPREFIX/etc/resolv.conf
  4. # 创建hosts文件
  5. echo "127.0.0.1 localhost" > $EPREFIX/etc/hosts
  6. echo "::1 localhost" >> $EPREFIX/etc/hosts
复制代码

配置SSH

如果你想在Prefix Gentoo中使用SSH,可以安装和配置OpenSSH:
  1. # 安装OpenSSH
  2. emerge -v net-misc/openssh
  3. # 创建SSH配置目录
  4. mkdir -p $EPREFIX/etc/ssh $EPREFIX/var/empty
  5. # 生成SSH主机密钥
  6. ssh-keygen -A -f $EPREFIX
复制代码

配置X11

如果你想在Prefix Gentoo中使用图形界面,可以配置X11:
  1. # 安装Xorg服务器
  2. emerge -v xorg-server
  3. # 创建Xorg配置目录
  4. mkdir -p $EPREFIX/etc/X11
  5. # 创建xorg.conf.d目录
  6. mkdir -p $EPREFIX/etc/X11/xorg.conf.d
  7. # 配置键盘布局
  8. cat > $EPREFIX/etc/X11/xorg.conf.d/10-keyboard.conf << EOF
  9. Section "InputClass"
  10.     Identifier "system-keyboard"
  11.     MatchIsKeyboard "on"
  12.     Option "XkbLayout" "us"
  13.     Option "XkbModel" "pc105"
  14. EndSection
  15. EOF
复制代码

配置音频

配置音频系统:
  1. # 安装PulseAudio
  2. emerge -v media-sound/pulseaudio
  3. # 创建PulseAudio配置目录
  4. mkdir -p $EPREFIX/etc/pulse
  5. # 创建默认.pa文件
  6. cat > $EPREFIX/etc/pulse/default.pa << EOF
  7. #!/usr/bin/pulseaudio -nF
  8. # include default configuration
  9. .include /etc/pulse/default.pa.d/
  10. # load module for detecting sound hardware
  11. load-module module-detect
  12. # load module for network audio
  13. load-module module-native-protocol-unix
  14. # load module for audio resampling
  15. load-module module-rescue-streams
  16. # load module for role-based volume control
  17. load-module module-stream-restore
  18. # load module for card-based volume control
  19. load-module module-card-restore
  20. # load module for X11 bell event
  21. load-module module-x11-bell
  22. # load module for X11 publish
  23. load-module module-x11-publish
  24. # load module for device management
  25. load-module module-device-manager
  26. EOF
复制代码

常见问题及解决方案

在使用Prefix Gentoo的过程中,你可能会遇到一些常见问题。本节提供了一些解决方案。

编译错误

编译软件时出现错误是最常见的问题之一。以下是一些解决方法:

确保所有必要的依赖都已安装:
  1. emerge -v --emptytree --usepkg=n --fetchonly $package
复制代码

不正确的USE标志可能导致编译失败:
  1. emerge -pv $package
复制代码

检查并调整USE标志:
  1. mkdir -p $EPREFIX/etc/portage/package.use
  2. echo "$package -flag1 +flag2" >> $EPREFIX/etc/portage/package.use/$package
复制代码

如果编译过程中内存不足,可以尝试增加交换空间或减少并行编译任务:
  1. # 减少并行编译任务
  2. export MAKEOPTS="-j1"
  3. emerge $package
复制代码

有时需要应用补丁才能编译成功:
  1. # 创建Portage覆盖层
  2. mkdir -p $EPREFIX/var/lib/overlay/$category/$package/files
  3. cp $patch $EPREFIX/var/lib/overlay/$category/$package/files/
  4. # 创建ebuild
  5. cp $EPREFIX/usr/portage/$category/$package/$package-$version.ebuild $EPREFIX/var/lib/overlay/$category/$package/
  6. # 修改ebuild,添加补丁
  7. echo "eapply "\${FILESDIR}/$patch"" >> $EPREFIX/var/lib/overlay/$category/$package/$package-$version.ebuild
  8. # 创建manifest
  9. cd $EPREFIX/var/lib/overlay/$category/$package
  10. ebuild $package-$version.ebuild manifest
  11. # 安装软件包
  12. emerge =$category/$package-$version
复制代码

权限问题

由于Prefix Gentoo是在用户空间中运行的,可能会遇到一些权限问题:

确保你有权限访问所有必要的文件:
  1. chmod -R u+rw $EPREFIX
复制代码

确保设备文件有正确的权限:
  1. chmod 666 $EPREFIX/dev/{null,zero,random,urandom}
复制代码

确保临时目录有正确的权限:
  1. chmod 1777 $EPREFIX/tmp
  2. chmod 1777 $EPREFIX/var/tmp
复制代码

网络问题

网络问题可能导致无法下载源代码或更新Portage树:

如果你需要使用代理服务器,可以设置环境变量:
  1. export http_proxy="http://proxy.example.com:8080"
  2. export https_proxy="http://proxy.example.com:8080"
  3. export ftp_proxy="http://proxy.example.com:8080"
复制代码

选择一个速度快且稳定的镜像:
  1. # 编辑make.conf
  2. echo 'GENTOO_MIRRORS="https://mirror.bytemark.co.uk/gentoo/ https://www.mirrorservice.org/sites/distfiles.gentoo.org/"' >> $EPREFIX/etc/portage/make.conf
复制代码

如果rsync同步失败,可以尝试使用不同的rsync服务器:
  1. # 编辑repos.conf
  2. echo "sync-uri = rsync://rsync.asia.gentoo.org/gentoo-portage" > $EPREFIX/etc/portage/repos.conf/gentoo.conf
复制代码

磁盘空间不足

Prefix Gentoo可能会占用大量磁盘空间,特别是在编译大型软件包时:

清理编译过程中产生的临时文件:
  1. rm -rf $EPREFIX/var/tmp/portage/*
  2. rm -rf $EPREFIX/tmp/*
复制代码

清理下载的源代码:
  1. rm -rf $EPREFIX/usr/portage/distfiles/*
复制代码

清理不再需要的软件包:
  1. emerge --depclean
复制代码

如果可能,将部分目录移动到外部存储:
  1. # 移动distfiles目录
  2. mv $EPREFIX/usr/portage/distfiles /external/storage/
  3. ln -s /external/storage/distfiles $EPREFIX/usr/portage/distfiles
复制代码

性能优化

Prefix Gentoo可能会比系统安装的软件运行得慢一些,但可以通过一些方法优化性能:

使用系统安装的库,而不是重新编译:
  1. # 创建/etc/portage/env目录
  2. mkdir -p $EPREFIX/etc/portage/env
  3. # 创建配置文件,使用系统库
  4. cat > $EPREFIX/etc/portage/env/system-libs.conf << EOF
  5. LDFLAGS="-L/usr/lib -L/usr/lib64 -L/lib -L/lib64"
  6. EOF
  7. # 为特定软件包应用配置
  8. echo "app-office/libreoffice system-libs.conf" >> $EPREFIX/etc/portage/package.env/libreoffice
复制代码

优化编译选项以提高性能:
  1. # 编辑make.conf
  2. echo 'COMMON_FLAGS="-march=native -O3 -pipe -fomit-frame-pointer"' >> $EPREFIX/etc/portage/make.conf
  3. echo 'CFLAGS="${COMMON_FLAGS}"' >> $EPREFIX/etc/portage/make.conf
  4. echo 'CXXFLAGS="${COMMON_FLAGS}"' >> $EPREFIX/etc/portage/make.conf
  5. echo 'LDFLAGS="-Wl,-O1 -Wl,--as-needed -Wl,--hash-style=gnu"' >> $EPREFIX/etc/portage/make.conf
复制代码

使用RAM磁盘加速编译:
  1. # 挂载tmpfs到临时目录
  2. mount -t tmpfs -o size=4G none $EPREFIX/var/tmp/portage
复制代码

实用脚本和技巧

为了更方便地使用Prefix Gentoo,这里提供了一些实用脚本和技巧。

启动脚本

创建一个启动脚本,方便地进入Prefix Gentoo环境:
  1. cat > $HOME/start-gentoo.sh << EOF
  2. #!/bin/bash
  3. export EPREFIX="$HOME/gentoo"
  4. export PATH="\$EPREFIX/usr/bin:\$EPREFIX/bin:\$EPREFIX/usr/sbin:\$EPREFIX/sbin:\$PATH"
  5. export MANPATH="\$EPREFIX/usr/share/man:\$MANPATH"
  6. export INFOPATH="\$EPREFIX/usr/share/info:\$INFOPATH"
  7. export LD_LIBRARY_PATH="\$EPREFIX/usr/lib:\$EPREFIX/lib:\$LD_LIBRARY_PATH"
  8. export PS1="(gentoo) \$PS1"
  9. # 挂载必要的文件系统
  10. if [ ! -d \$EPREFIX/proc ]; then
  11.     mkdir -p \$EPREFIX/proc
  12. fi
  13. if [ ! -d \$EPREFIX/sys ]; then
  14.     mkdir -p \$EPREFIX/sys
  15. fi
  16. if [ ! -d \$EPREFIX/dev ]; then
  17.     mkdir -p \$EPREFIX/dev
  18. fi
  19. mount -t proc none \$EPREFIX/proc
  20. mount --rbind /sys \$EPREFIX/sys
  21. mount --rbind /dev \$EPREFIX/dev
  22. # 启动shell
  23. exec \$SHELL
  24. EOF
  25. chmod +x $HOME/start-gentoo.sh
复制代码

停止脚本

创建一个停止脚本,用于卸载文件系统:
  1. cat > $HOME/stop-gentoo.sh << EOF
  2. #!/bin/bash
  3. export EPREFIX="$HOME/gentoo"
  4. # 卸载文件系统
  5. umount -l \$EPREFIX/dev
  6. umount -l \$EPREFIX/sys
  7. umount -l \$EPREFIX/proc
  8. echo "Prefix Gentoo environment stopped."
  9. EOF
  10. chmod +x $HOME/stop-gentoo.sh
复制代码

更新脚本

创建一个更新脚本,用于更新Prefix Gentoo系统:
  1. cat > $HOME/update-gentoo.sh << EOF
  2. #!/bin/bash
  3. export EPREFIX="$HOME/gentoo"
  4. export PATH="\$EPREFIX/usr/bin:\$EPREFIX/bin:\$EPREFIX/usr/sbin:\$EPREFIX/sbin:\$PATH"
  5. # 更新Portage树
  6. emerge --sync
  7. # 更新系统
  8. emerge -v --update --deep --newuse @world
  9. # 清理无用的依赖
  10. emerge --depclean
  11. # 重建已损坏的软件包
  12. revdep-rebuild
  13. echo "Prefix Gentoo system updated."
  14. EOF
  15. chmod +x $HOME/update-gentoo.sh
复制代码

备份脚本

创建一个备份脚本,用于备份Prefix Gentoo系统:
  1. cat > $HOME/backup-gentoo.sh << EOF
  2. #!/bin/bash
  3. export EPREFIX="$HOME/gentoo"
  4. BACKUP_DIR="$HOME/gentoo-backup"
  5. TIMESTAMP=\$(date +%Y%m%d-%H%M%S)
  6. BACKUP_FILE="gentoo-backup-\$TIMESTAMP.tar.bz2"
  7. # 创建备份目录
  8. mkdir -p \$BACKUP_DIR
  9. # 备份Prefix Gentoo
  10. tar -cjf \$BACKUP_DIR/\$BACKUP_FILE -C \$HOME gentoo
  11. echo "Prefix Gentoo backed up to \$BACKUP_DIR/\$BACKUP_FILE"
  12. EOF
  13. chmod +x $HOME/backup-gentoo.sh
复制代码

恢复脚本

创建一个恢复脚本,用于从备份恢复Prefix Gentoo系统:
  1. cat > $HOME/restore-gentoo.sh << EOF
  2. #!/bin/bash
  3. if [ \$# -ne 1 ]; then
  4.     echo "Usage: \$0 <backup-file>"
  5.     exit 1
  6. fi
  7. BACKUP_FILE=\$1
  8. if [ ! -f \$BACKUP_FILE ]; then
  9.     echo "Backup file not found: \$BACKUP_FILE"
  10.     exit 1
  11. fi
  12. # 恢复Prefix Gentoo
  13. tar -xjf \$BACKUP_FILE -C \$HOME
  14. echo "Prefix Gentoo restored from \$BACKUP_FILE"
  15. EOF
  16. chmod +x $HOME/restore-gentoo.sh
复制代码

空间监控脚本

创建一个空间监控脚本,用于监控Prefix Gentoo的磁盘使用情况:
  1. cat > $HOME/check-gentoo-space.sh << EOF
  2. #!/bin/bash
  3. export EPREFIX="$HOME/gentoo"
  4. # 检查总空间
  5. TOTAL_SPACE=\$(du -sh \$EPREFIX | cut -f1)
  6. echo "Total space used by Prefix Gentoo: \$TOTAL_SPACE"
  7. # 检查各个目录的空间
  8. echo "Space usage by directory:"
  9. du -sh \$EPREFIX/usr/portage/distfiles 2>/dev/null || echo "distfiles: Not found"
  10. du -sh \$EPREFIX/var/tmp/portage 2>/dev/null || echo "portage tmp: Not found"
  11. du -sh \$EPREFIX/usr/lib64 2>/dev/null || echo "lib64: Not found"
  12. du -sh \$EPREFIX/usr/lib 2>/dev/null || echo "lib: Not found"
  13. # 检查最大的软件包
  14. echo "Largest packages:"
  15. if [ -d \$EPREFIX/var/db/pkg ]; then
  16.     find \$EPREFIX/var/db/pkg -name "*.ebuild" | while read ebuild; do
  17.         package=\$(dirname \$ebuild | sed "s|\$EPREFIX/var/db/pkg/||")
  18.         size=\$(du -sh \$EPREFIX/var/db/pkg/\$package 2>/dev/null | cut -f1)
  19.         echo "\$package: \$size"
  20.     done | sort -hr | head -n 10
  21. fi
  22. EOF
  23. chmod +x $HOME/check-gentoo-space.sh
复制代码

软件包查找脚本

创建一个软件包查找脚本,用于快速查找包含特定文件的软件包:
  1. cat > $HOME/find-package.sh << EOF
  2. #!/bin/bash
  3. export EPREFIX="$HOME/gentoo"
  4. export PATH="\$EPREFIX/usr/bin:\$EPREFIX/bin:\$EPREFIX/usr/sbin:\$EPREFIX/sbin:\$PATH"
  5. if [ \$# -ne 1 ]; then
  6.     echo "Usage: \$0 <filename>"
  7.     exit 1
  8. fi
  9. FILENAME=\$1
  10. # 使用equery查找包含文件的软件包
  11. equery belongs \$FILENAME
  12. EOF
  13. chmod +x $HOME/find-package.sh
复制代码

实际应用场景

Prefix Gentoo可以在多种场景中发挥作用,以下是一些实际应用案例。

开发环境

Prefix Gentoo可以作为独立的开发环境,允许你安装特定版本的编译器、库和工具,而不影响系统环境。
  1. # 安装Python
  2. emerge -v dev-lang/python
  3. # 安装虚拟环境工具
  4. emerge -v dev-python/virtualenv
  5. # 创建虚拟环境
  6. virtualenv $EPREFIX/python-env
  7. # 激活虚拟环境
  8. source $EPREFIX/python-env/bin/activate
  9. # 安装Python包
  10. pip install numpy scipy matplotlib
复制代码
  1. # 安装GCC
  2. emerge -v sys-devel/gcc
  3. # 安装Clang
  4. emerge -v sys-devel/clang
  5. # 安装CMake
  6. emerge -v dev-util/cmake
  7. # 安装Ninja
  8. emerge -v dev-util/ninja
  9. # 安装调试工具
  10. emerge -v sys-devel/gdb
复制代码
  1. # 安装OpenJDK
  2. emerge -v virtual/jdk
  3. # 安装Maven
  4. emerge -v dev-java/maven-bin
  5. # 安装Gradle
  6. emerge -v dev-java/gradle-bin
复制代码

科学计算环境

Prefix Gentoo可以用于构建科学计算环境,安装各种科学计算软件。
  1. # 安装R
  2. emerge -v dev-lang/R
  3. # 安装常用的R包
  4. R -e "install.packages(c('ggplot2', 'dplyr', 'tidyr', 'readr'), repos='https://cran.rstudio.com/')"
复制代码
  1. # 添加Julia overlay
  2. mkdir -p $EPREFIX/etc/portage/repos.conf
  3. cat > $EPREFIX/etc/portage/repos.conf/julia.conf << EOF
  4. [julia]
  5. location = $EPREFIX/var/lib/overlay/julia
  6. sync-type = git
  7. sync-uri = https://github.com/gentoo/julia-overlay.git
  8. auto-sync = yes
  9. EOF
  10. # 同步overlay
  11. emaint sync -r julia
  12. # 安装Julia
  13. emerge -v dev-lang/julia
复制代码
  1. # 安装Maxima
  2. emerge -v sci-mathematics/maxima
  3. # 安装Octave
  4. emerge -v sci-mathematics/octave
  5. # 安装SageMath
  6. emerge -v sci-mathematics/sage
复制代码

图形应用环境

Prefix Gentoo可以用于运行图形应用程序,提供与系统隔离的环境。
  1. # 安装Firefox
  2. emerge -v www-client/firefox
  3. # 安装Chromium
  4. emerge -v www-client/chromium
复制代码
  1. # 安装LibreOffice
  2. emerge -v app-office/libreoffice
复制代码
  1. # 安装GIMP
  2. emerge -v media-gfx/gimp
  3. # 安装Inkscape
  4. emerge -v media-gfx/inkscape
复制代码

服务器环境

Prefix Gentoo可以用于运行服务器应用程序,提供与系统隔离的服务环境。
  1. # 安装Nginx
  2. emerge -v www-servers/nginx
  3. # 配置Nginx
  4. mkdir -p $EPREFIX/etc/nginx/sites-available
  5. mkdir -p $EPREFIX/etc/nginx/sites-enabled
  6. # 创建默认站点配置
  7. cat > $EPREFIX/etc/nginx/sites-available/default << EOF
  8. server {
  9.     listen 8080;
  10.     server_name localhost;
  11.     root $EPREFIX/var/www/localhost;
  12.     index index.html;
  13.     location / {
  14.         try_files \$uri \$uri/ =404;
  15.     }
  16. }
  17. EOF
  18. # 启用默认站点
  19. ln -s $EPREFIX/etc/nginx/sites-available/default $EPREFIX/etc/nginx/sites-enabled/
  20. # 创建网站根目录
  21. mkdir -p $EPREFIX/var/www/localhost
  22. echo "<h1>Hello from Prefix Gentoo Nginx!</h1>" > $EPREFIX/var/www/localhost/index.html
  23. # 启动Nginx
  24. nginx -p $EPREFIX -c $EPREFIX/etc/nginx/nginx.conf
复制代码
  1. # 安装PostgreSQL
  2. emerge -v dev-db/postgresql
  3. # 初始化数据库集群
  4. mkdir -p $EPREFIX/var/lib/postgresql
  5. chown -R postgres:postgres $EPREFIX/var/lib/postgresql
  6. su - postgres -c "initdb -D $EPREFIX/var/lib/postgresql/data"
  7. # 启动PostgreSQL
  8. su - postgres -c "pg_ctl -D $EPREFIX/var/lib/postgresql/data start"
复制代码
  1. # 安装Tomcat
  2. emerge -v www-servers/tomcat
  3. # 配置Tomcat
  4. sed -i "s|JAVA_HOME=.*|JAVA_HOME=$EPREFIX/usr/lib/jvm/openjdk-bin|" $EPREFIX/etc/conf.d/tomcat
  5. # 启动Tomcat
  6. /etc/init.d/tomcat start
复制代码

总结

Prefix Gentoo是一个强大的工具,它允许用户在没有root权限的情况下安装和运行完整的Gentoo Linux环境。通过本手册,我们详细介绍了Prefix Gentoo的安装、配置和使用方法,以及一些高级技巧和实际应用场景。

Prefix Gentoo的主要优势包括:

1. 无需root权限:可以在任何有基本开发工具的Linux系统上安装。
2. 完全隔离:不会影响主机系统,提供安全的环境。
3. 高度可定制:可以根据需要安装和配置软件。
4. 最新软件:可以访问Gentoo庞大的软件仓库,获取最新版本的软件。
5. 性能优化:可以针对特定硬件优化编译选项。

Prefix Gentoe特别适合以下场景:

• 在共享服务器或学校计算机上工作,没有管理员权限
• 需要与系统隔离的开发或测试环境
• 需要特定版本软件或库的项目
• 学习Linux系统管理和软件编译

虽然Prefix Gentoo的安装和配置可能需要一些时间和耐心,但一旦设置完成,它将为你提供一个强大、灵活且高效的Linux环境。

希望本手册能够帮助你成功安装和使用Prefix Gentoo,并在你的工作和学习中发挥重要作用。如果你有任何问题或建议,欢迎参考Gentoo官方文档或社区支持资源。
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则