适用于 Ubuntu 的 Portage 或类似 Portage 的程序

适用于 Ubuntu 的 Portage 或类似 Portage 的程序

我看到了这个问题我可以在 Ubuntu 上安装 Portage、Pacman 或其他包管理器吗?,在 Ubuntu 上安装 portage 不是一个好主意,因为它与 gentoo 捆绑得非常紧密。我想安装它的原因是为了管理我从源代码编译的东西。我不想编译所有的东西,我只想能够管理我选择从源代码编译的东西。我希望能够指向从中构建的 git 存储库,然后使用它。如果我后来决定不再需要该应用程序,而不必记住我将其安装在哪里,我可以使用包管理器来删除它。通过指定要升级到的版本来更新它也很好。我想知道是否有这样的应用程序,可以用于 Ubuntu?

答案1

在目前的技术水平下,你可以使用 Docker 或 chroot/ 等容器在 Ubuntu 中隔离 Gentoo 基础系统施鲁特
作为 Gentoo 的长期粉丝,我将指导您完成整个过程。

以下方法解释了如何实现schroot机制。我们需要获取当前 stage3 快照Gentoo,然后解压并按照Gentoo 手册但没有磁盘分区。

sudo apt-get update
sudo apt-get install schroot -y

cat <<EOF | sudo tee /etc/schroot/chroot.d/gentoo.conf
[gentoo]
description=Gentoo
directory=/srv/chroot/gentoo
root-users=$USER
type=directory
users=$USER
EOF

sudo mkdir -p /srv/chroot/gentoo

# add portage user and group
sudo groupadd portage -g 250
sudo useradd -M -g portage -s /bin/false -u 250 portage

cd ~/Downloads
wget https://bouncer.gentoo.org/fetch/root/all/releases/amd64/autobuilds/20210630T214504Z/stage3-amd64-20210630T214504Z.tar.xz

sudo tar -xf stage3-amd64-20210630T214504Z.tar.xz -C /srv/chroot/gentoo

然后您可以使用以下命令跳转到新创建的 Gentoo schroot:

schroot -c gentoo -u root bash
# do something, then use Ctrl+D to exit to Ubuntu

为了确保您已经安装了 Gentoo 系统,您可以执行

schroot -c gentoo cat /etc/os-release

要得到

NAME=Gentoo
ID=gentoo
PRETTY_NAME="Gentoo/Linux"
ANSI_COLOR="1;32"
HOME_URL="https://www.gentoo.org/"
SUPPORT_URL="https://www.gentoo.org/support/"
BUG_REPORT_URL="https://bugs.gentoo.org/"

然后作为示例,我们可以xclock默认编译小型图形应用程序和 Midnight Commander配置配置文件

schroot -c gentoo -u root -- emerge --sync
schroot -c gentoo -u root -- emerge -qv x11-apps/xclock app-misc/mc

最后启动已安装的xclock应用程序

schroot -c gentoo env DISPLAY=$DISPLAY xclock

此外您还可以使用安装在 Gentoo schroot 内的应用程序操作本地数据:

  1. 激活 schrootschroot -c gentoo
  2. 然后执行一些命令mc
  3. exit在同一终端中使用退出 schroot

我想你已经明白了。通过这种方法,你可以在你的 Ubuntu 中安装 Gentoo。这个内部 Gentoo 可以通过 USE 标志、系统配置文件等进行配置。它将按照你的需要使用 Portage。


如果您喜欢冒险,那么您甚至可以将完整的轻量级桌面环境安装到此 Gentoo 系统并在名为 Xephyr 的嵌套 X11 系统中运行它。无需详细说明,只需执行以下操作即可:

schroot -c gentoo -u root -- mount /dev/shm /dev/shm -t tmpfs
schroot -c gentoo -u root -- emerge -atv mate-session-manager --exclude=dev-lang/rust
schroot -c gentoo -u root -- useradd polkitd
schroot -c gentoo -u root -- emerge -qatv mate-base/mate app-office/libreoffice-bin

mkdir ~/.gentoo # create new $HOME for Gentoo
Xephyr -screen 1360x680 :1 &
schroot -c gentoo -u $USER env HOME=~/.gentoo DISPLAY=:1 mate-session

得到类似的东西

Ubuntu 上的 Gentoo mate-session

相关内容