作者ivon852 (内容农场杀手)
看板Linux
标题[心得] 系统迁移至Gentoo纪录
时间Sat Sep 3 00:00:12 2022
看上Gentoo是因为高自订性和最新版软体。
下面简介一下Gentoo最新的特色,以及使用感受。
https://i.imgur.com/58elkzK.jpg
一、Gentoo特色
Gentoo是滚动更新的Linux发行版,跟其他发行版最大的不同,在於需要从原始码编译安
装Linux核心和软体。听起来很像Linux from Scratch吧?但跟Linux from Scratch比起
来,Gentoo官方至少有提供最小的档案系统,并且编译是交给套件管理员Portage自动处
理。要安装软体只要打指令,套件管理员就会自动下载并编译安装。
因为是从原始码编译,软体效能「可能」会比直接装二进位档好。Portage还提供一套
"FLAG"系统,在`/etc/portage/make.conf`使用USE变数,指定Portage编译或不编译特定
软体功能。例如把AV1编码器编入ffmpeg,或是叫Portage不要编译wayland相关的功能。
有些软体编译很耗时,所以官方储存库有提供编译好的二进位(binary)版本,但数目极为
稀少。此外过去Linux核心要使用者手动设定编译,後来也有现成的版本可以选用。到
2022年,Gentoo连LiveUSB都有了。
https://i.imgur.com/XThXeJ6.png
因为Gentoo深受FreeBSD影响,除了套件命名很有FreeBSD Ports的风格外,现在预设的
init系统仍是OpenRC,当然Gentoo也有提供主流的systemd供选择。
二、Gentoo安装过程
我在二台电脑各装了迥然不同的Gentoo环境,前者是OpenRC + KDE (X11),後者是
Systemd + GNOME (Wayland)
主要是按照《Gentoo AMD64 Handbook》做,这本手册写得很详细,按照步骤做可以把X视
窗以外的软体都设定好。如果有以纯文字模式装过FreeBSD或Arch Linux,那麽Gentoo应
该不难安装。
安装过程:用Gentoo ISO开机,分割硬碟,之後把Gentoo的stage3档案系统下载到硬碟,
解压缩,chroot进去安装现成的Linux核心,编译软体,设定开机服务。
详:
https://ivonblog.com/posts/install-gentoo/
`/etc/portage/make.conf`里面记得依照CPU性能设定编译的执行绪,例如
`MAKEOPTS="-j8"`。
庶民等级的4核心CPU,不管是KDE还是GNOME都要编译4小时以上...这还是我已经选了「最
小化安装」的情况,然後编译时风扇声音都像飞机起飞一样。
三、Gentoo 使用小撇步
1. Gentoo Wiki和Arch Linux Wiki一样都是十分详细的百科,Gentoo会讲到更多底层运
作的部份。此外,Gentoo套件官网的ebuilds能看到安装套件预设会启用的FLAG,安装套
件前要研究一下FLAG。
https://i.imgur.com/PmJOZCI.png
2. OpenRC跟Systemd用起来没有差,主要是後者已经成为主流,甚至某些程式依赖
Systemd,例如KDE的System Monitor。桌面环境我还是比较喜欢自由设定的KDE。GNOME单
纯因为对触控板手势支援较好,然後Wayland还是bug一堆。
https://i.imgur.com/p7IkNGK.png
3. 在`/etc/portage/make.conf`中`ACCPET_KEYWORDS`设定"amd64" 会下载到稳定版套件
,"~amd64"则是不稳定。
我是比较喜欢後者,後者会下载到较新的软体,甚至会影响下载的的Linux核心版本,例
如Fcitx的版本会略为新一点。
此外,make.conf虽可以设定全域的FLAG,但个别套件另外写在
`/etc/portage/packge.use`能防止互相影响,例如允许个别套件启用"doc"的FLAG。
Protage是十分智慧的套件管理员,make.conf一有变化,执行`emerge -avuND world`会
自动安装或删除套件,要清理彻底则是使用`emerge --depclean`。
还有,Gentoo在编译未安装套件的阶段是可以按CTRL+C取消编译的,下次Portage会自动
从还没编译的地方继续。
如果某个软体是被meta-package拉进来,要移除就要靠FLAG和自行处理依赖关系了。
Gentoo不太容易移除单一软体,所以套件选择很重要。
4. 编译安装时间过长的套件有GCC、Rust、使用浏览器引擎的程式
除GCC实在必要外,其他二者我都指定安装bin版本。真的,一套桌面环境只是很多小套件
要编译,但这些单一套件编译时间长的无法忍受。
而懒的调整和求稳定的大型程式就用Flatpak装,例如LibreOffice、Steam、浏览器。
不然的话就会像我一样VLC播个影片不断碰到「不支援的编解码器」,就得调整FLAG重新
编译。
https://i.imgur.com/WaNPzWO.png
老实说Gentoo有逼迫人更优先选择Flatpak的因素...Gentoo Overlay社群套件库还在观望
。
总结
最早接触Gentoo是在移植postmarketOS (Alpine Linux)遇见的,因为只有Gentoo有详细
的调整kernel的资料。在适应滚动发行版的模式後(就是要最新!!因为想早点体验AVIF图
片和AV1编码的快乐),从openSUSE Tumbleweed迁移到Arch Linux,结果Arch Linux最近
更新後GRUB消失,用随身碟chroot修复後,还是顺势迁移到了Gentoo。
跟安装Arch Linux一样,使用Gentoo光是调FLAG就能学到很多底层知识了。然後像是init
、音讯系统这些东西,就是阅读wiki後靠自己决定要使用哪个。
学Gentoo何只是折腾而已,少了Arch的便利工具,Gentoo光是调整软体编译设定就逼迫用
户成为半个开发者了。如果深入到学习Linux from Scratch的并协助修改程式,都能自己
筹划一个发行版了。
然而我只是一个使用PC的外行人,喜欢体会Linux和自由软体的乐趣。Gentoo用起来就是
有更高的自定义性,但某些开发场景可能还是得靠虚拟机或Docker跑,所幸Linux虚拟化
不是难事。
--
https://i.imgur.com/KQbyqNf.jpg
https://i.imgur.com/uZAFfTb.jpg
https://i.imgur.com/FTZwiKG.jpg
https://i.imgur.com/RAftQ68.jpg
https://i.imgur.com/vZSP2Of.jpg
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.39.59.250 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Linux/M.1662134425.A.79F.html
1F:推 a73126: 这年头还用Gentoo推一个09/03 01:15
2F:→ a73126: 认识的很多都转到其他distro了09/03 01:16
3F:→ a73126: 不是很懂「Gentoo不太容易移除单一软体」的意思,用09/03 01:23
4F:→ a73126: emerge -C =套件.版本 应该就可以单独移除了09/03 01:23
我看Wiki是说直接用这个指令可能会破坏相依性,所以是用deselect。例如gnome-base会安
装一堆小游戏,USE添加-games才拆掉。
5F:→ skycat2216: 所以为什麽Arch是乌贼娘?09/03 02:39
6F:推 chongzi138: 推用心介绍,跟用MicroG半取代那篇一样详细09/03 02:41
7F:推 Hurricaneger: 强 09/03 05:37
8F:推 amos30627: 强 09/03 07:22
※ 编辑: ivon852 (114.39.59.250 台湾), 09/03/2022 07:39:39
9F:推 a73126: emerge -C的破坏相依性比较会发生在移除lib的时候,不过09/03 11:07
10F:→ a73126: gentoo也会在移除完成和一般emerge提醒你要09/03 11:07
11F:→ a73126: emrege @preserved-rebuild将相依性lib进行重新编译关联09/03 11:08
12F:→ a73126: 其实长时间使用gentoo後emerge -C还是很容易用到,因为09/03 11:08
13F:→ a73126: rolling update有些套件在某些时候会改相依其他类似的lib09/03 11:08
14F:→ a73126: 那就会造成互相block,就得先手动emerge -C移除09/03 11:09
15F:→ a73126: 不过这些都是经验谈了,慢慢使用享受gentoo会慢慢理解这些09/03 11:10
谢谢教学,有些preserved libs真的很难移除
16F:推 ichika42069: 我用Gentoo+zfs on root跟Slackware快一年了,Gentoo09/03 13:36
17F:→ ichika42069: 的use flag真的是一个让我离不开的东西。一般来说如09/03 13:36
18F:→ ichika42069: 果一个软体是不需要超级使用者权限的我都会直接装Nix09/03 13:36
19F:→ ichika42069: package.09/03 13:36
20F:推 iammortal: 推分享 09/03 13:41
21F:推 lantw44: 其实现在安装 FreeBSD 如果只是要装到能开机,也是照着选 09/03 14:22
22F:→ lantw44: 单按一按就完成了,我觉得 Arch 和 Gentoo 比较难装。09/03 14:22
23F:→ lantw44: 另外移除单一软体,如果是自己主动安装的软体,应该可以09/03 14:23
24F:→ lantw44: 用 emerge --depclean 安全移除吧。 09/03 14:24
25F:推 dobedobedo: 用 Gentoo 感觉一半以上的时间都在编译,太影响生産力09/03 14:37
26F:推 idisnothing: 用过一阵子Gentoo 当急需某套件但那个套件又很大时真 09/03 14:48
27F:→ idisnothing: 的会傻眼 09/03 14:49
28F:推 holishing: FreeBSD 都可以用 pkg 装二进位包了 09/03 20:15
29F:推 holishing: 但推描述详细, 这样想试的话至少有个切入点可以研究了 09/03 20:19
30F:推 LawLombie: gnome + wayland对触控板是一大福音09/03 23:29
31F:→ LawLombie: 目前我用opensuse tumbleweed09/03 23:30
32F:→ LawLombie: 有机会也想来试试gentoo09/03 23:30
33F:→ LawLombie: 不过还是先过了arch再说吧 09/03 23:31
34F:推 a73126: 直接Gentoo回头Arch就简单了(? 或者中间有个funtoo 09/03 23:50
35F:→ a73126: funtoo会直接建议使用Debian source,少了编kernel的麻烦09/03 23:51
36F:推 sppmg: 10年前左右查资料还偶尔上Gentoo wiki,後来大多去arch了,09/04 15:38
37F:→ sppmg: Gentoo 的可能真的说的太底层。还记得有大学同学在Gentoo 09/04 15:38
38F:→ sppmg: 上编 Gnome ,睡桌上3天……09/04 15:38
39F:→ sppmg: 想了想应该是15年前。arch wiki感觉比较通用点。 09/04 15:39
40F:推 ys35078657: 才刚从gentoo换到debian,试了gentoo三个月,在我笔 09/05 00:51
41F:→ ys35078657: 电上的编译速度实在是吃不消 09/05 00:51
42F:推 lainevakey: sabayon几乎有提供二进位包,安装也方便 09/05 22:31
八卦是Funtoo和Sabayon开发人员2020年宣布开始合作,也许哪天他们会合并
※ 编辑: ivon852 (223.139.120.219 台湾), 09/05/2022 23:30:39
43F:推 s338757: 赞一个 09/06 05:46
44F:推 drm343: 我自己用 slackware 也都是配 arch 或 gentoo 的资料看 09/07 02:41
45F:→ drm343: 他们那边的资料真的太有帮助了 09/07 02:41
46F:→ guteres: Sybayon已改名MocaccinoOS了 09/12 20:14
47F:→ s8321414: Sabayon 居然改名了 :O 09/19 08:00
48F:推 POSIX: 看到Gentoo就推! 02/22 16:04