如果你某个 overlay 和 ::gentoo 有大量重合且需要 override,请参考
man portage
中 repos.conf section 调整 priority。#portage #proxy
持久性地修改 Portage 安装软件时的代理
一、 通用配置
'$ man make.conf' 可以看到里面有说明如何配置代理,但是过于简要,这边详细说明。
对于一般情况,在 /etc/portage/make.conf 文件下配置如下三个变量,就完全足够:
修改以支持 socks 协议有一个应变的方法,即修改默认的获取命令为
对于 live 包,它们目前大多数直接使用
1. git 能配置针对整个 Linux 系统的参数,运行:
2. 通过 Portage 的全局 bashrc 文件 /etc/portage/bashrc 来配置临时的 git 代理
这种方式会对系统配置造成最少的干扰,只略微繁琐一点,需要将下述脚本代码写入上述的 bashrc 文件内:
临时添加代理
对于需要临时添加代理以使用的情况,目前我知道两种方式:
1. 使用 net-misc/proxychains 软件,适用所有下载方式。
配置好代理列表后,通过如下命令使用:
2. 临时指定环境变量 {ftp,http,https}_proxy 的方式,适用性同持久性配置。
即如下命令:
[1] 即版本号带
[2] 目前支持的大致有 bzr, cvs, darcs, mercurial, subversion
[3] 这个目录是 Portage 在编译/安装软件过程中临时建立的,会在成功安装软件后被删除,所以不用担心会有文件残留。具体位置是可以自定义的,详情看 make.conf(5) 手册下 PORTAGE_TMPDIR 条目
持久性地修改 Portage 安装软件时的代理
一、 通用配置
'$ man make.conf' 可以看到里面有说明如何配置代理,但是过于简要,这边详细说明。
对于一般情况,在 /etc/portage/make.conf 文件下配置如下三个变量,就完全足够:
#PROXYURL 格式: [protocol://][user[:password]@]proxyhost[:port]这些变量会在 emerge 命令运行时,传递给预配置的
http_proxy="<PROXYURL>"
https_proxy="<PROXYURL>"
ftp_proxy="<PROXYURL>"
FETCHCOMMAND
即 wget
命令。但,该命令有一个问题是不支持 socks 协议;所以,对于不同的协议需要有不同的代理服务,这样子很麻烦。修改以支持 socks 协议有一个应变的方法,即修改默认的获取命令为
curl
,同样是在 /etc/portage/make.conf 文件下配置变量,如下:FETCHCOMMAND="curl --retry 3 --connect-timeout 60 --ftp-pasv -Lfo \"\${DISTDIR}/\${FILE}\" \"\${URI}\""其中
RESUMECOMMAND="curl -C - --retry 3 --connect-timeout 60 --ftp-pasv -Lfo \"\${DISTDIR}/\${FILE}\" \"\${URI}\""
RESUMECOMMAND
是用于恢复意外中断的下载命令,保存后即完成修改,此时,就可以给不同协议配置同样的 socks 类协议的代理服务,均可生效。如:https_proxy="socks5h://127.0.0.1:1080"二、 单独配置 git 抓取
对于 live 包,它们目前大多数直接使用
git
命令从远程仓库抓取。其它版本控制工具 [2] 同理,请自行修改后套用;当然也有直接使用 wget|curl
下载 live 包的情况,那么这种情况如上「一」述。git
命令支持 socks 协议,并且除了能吃上述配置的环境变量外「配置 https_proxy
时也配好 http_proxy
,否则可能出现 SSL_ERROR_SYSCALL 错误」 ,还能独立于其它包单独配置 git 自身的代理,方法有两种:1. git 能配置针对整个 Linux 系统的参数,运行:
git config --system http.proxy '<PROXYURL>'此命令会将配置写入到 /etc/gitconfig 文件内,并生效于系统级别,会被用户/项目级别的配置覆盖。
2. 通过 Portage 的全局 bashrc 文件 /etc/portage/bashrc 来配置临时的 git 代理
这种方式会对系统配置造成最少的干扰,只略微繁琐一点,需要将下述脚本代码写入上述的 bashrc 文件内:
if [[ ${EBUILD_PHASE} == "unpack" && ${INHERITED} =~ git\-r3 ]]; then这个 bashrc 只被 Portage 引用,会在进入每一个安装阶段时被导入。目前,Portage 下抓取 git 项目是通过 git-r3.eclass 实现,该 eclass 定义了 git 项目是在 src_unpack 阶段被更新,所以这里只需要在此阶段时设置即可。且,因为该目录不是被抓取包的 git 目录,所以只能设置用户级别的配置以生效,配置文件会被存放于 Portage 安装过程中沙盒的家目录下,即对应 安装软件临时目录 [3] 下的 homedir/ 目录。
git config --global http.proxy '<PROXYURL>'
fi
临时添加代理
对于需要临时添加代理以使用的情况,目前我知道两种方式:
1. 使用 net-misc/proxychains 软件,适用所有下载方式。
配置好代理列表后,通过如下命令使用:
proxychains -q emerge [<args>...]其默认配置文件位于 /etc/proxychains.conf
2. 临时指定环境变量 {ftp,http,https}_proxy 的方式,适用性同持久性配置。
即如下命令:
export http_proxy="..." https_...或
emerge [<args>...]
http_proxy="..." https_... emerge [<args>...]以上。 原文
[1] 即版本号带
9999*
的这些包;用于匹配 live ebuild 文件名的正则表达式为 9999*(-r[0-9]{1,3})?\.ebuild$
,可还是有一些包使用了这种版本命名规则却并非真正的 live 包,比如 openjfx/openjfx-8.999.ebuild
;这里不会通过版本号来判断是否需要配置 git 参数,所以并不影响,仅作介绍。[2] 目前支持的大致有 bzr, cvs, darcs, mercurial, subversion
[3] 这个目录是 Portage 在编译/安装软件过程中临时建立的,会在成功安装软件后被删除,所以不用担心会有文件残留。具体位置是可以自定义的,详情看 make.conf(5) 手册下 PORTAGE_TMPDIR 条目
如果要贴长文本,可以使用网络粘贴板:
————————————————————————-
使用的时候可以
————————————————————————-
日常使用可以添加
<输出命令> | curl -F "c=@-" "https://fars.ee/"
并且将输出里的 url: http://fars.ee/xxxx
这行贴出来。————————————————————————-
使用的时候可以
curl http://fars.ee/xxxx | less
查看。————————————————————————-
日常使用可以添加
alias fars='curl -F "c=@-" "http://fars.ee/"'
到 ~/.bashrc
或者 ~/.zshrc
Forwarded from R̲y̲a̲n̲ | 1202 🯱.
lspci -k | grep -A3 VGA
用 grep 的话正常加上 -A3 往下多输出三行才会显示驱动信息Forwarded from R̲y̲a̲n̲ | 1202 🯱.
Telegram
R̲y̲a̲n̲ | 1202 🯱. in Gentoo - 玄学的一天开始了
lspci -k | grep -A3 VGA 用 grep 的话正常加上 -A3 往下多输出三行才会显示驱动信息
app-portage/portage-utils提供qfile命令,可以用来查询某个文件属于哪个已安装的包:
$ qfile qfile
app-portage/portage-utils: /usr/bin/qfile
同时也提供了 qlist
命令可以用来查询给定已安装包有哪些文件:$ qlist portage-utils
/usr/bin/qatom
/usr/bin/qcheck
/usr/bin/qdepends
/usr/bin/qfile
/usr/bin/qgrep
/usr/bin/qkeyword
/usr/bin/qlist
......
app-portage/pfl 提供命令e-file可以用来联网查询哪些包提供特定文件:
$ e-file qfile
[I] app-portage/portage-utils
Available Versions: 0.21 0.62 0.64 0.74 0.74-r1 0.80 0.80_pre20190719 0.82 0.83 0.84-r1 0.85 0.86 0.87 0.88 0.89 0.90 0.90.1 0.91 9999
Last Installed Ver: 0.91(Thu 04 Mar 2021 09:03:14 PM CST)
Homepage: https://wiki.gentoo.org/wiki/Portage-utils
Description: Small and fast Portage helper tools written in C
Matched Files: /usr/bin/qfile; /gentoo64/usr/bin/qfile;
Gentoo 官方对 GURU 这个 overlay 的规则是只允许存在
这样当对 portage 添加了额外的 overlays 后,容易出现 overlay 下标了 stable/test 关键字的实际上却不稳定/未测试的包版本高于 ::gentoo 仓库的稳定包/测试包的情况,从而使得在系统升级时,在未知情况下安装了非官方的包,以至于隐性的系统不稳定情况的存在。
所以 Gentoo wiki 有建议:当添加 overlay 后,对质量未知的 overlay 进行 mask 掉其所有包再单独对自己需要的包做 unmask 的操作。即,
mask 掉一个 overlay 里的全部包:
~arch
这类关键字,stable 关键字是不允许存在的,但是对其它用户的 overlay 则没有规定。这样当对 portage 添加了额外的 overlays 后,容易出现 overlay 下标了 stable/test 关键字的实际上却不稳定/未测试的包版本高于 ::gentoo 仓库的稳定包/测试包的情况,从而使得在系统升级时,在未知情况下安装了非官方的包,以至于隐性的系统不稳定情况的存在。
所以 Gentoo wiki 有建议:当添加 overlay 后,对质量未知的 overlay 进行 mask 掉其所有包再单独对自己需要的包做 unmask 的操作。即,
mask 掉一个 overlay 里的全部包:
echo '*/*::<overlay 名>' >> /etc/portage/package.maskunmask 特定的自己需要的包:
echo '<cate>/<pkgname>::<overlay 名>' >> /etc/portage/package.unmask
目前在 gentoo-zh 源中的三个内核已经完成了5.12的更新,随之,老版本就不再维护。5.12中的三个内核xanmod, xanmod-cacule一如既往,没有太多的变化。
变化比较大的是 Project C 的内核,在这里我稍微介绍下如何使用。之前 Project C 是从 Arch Linux 的 Linux-TKg 那边搬运一些有用的补丁过来,这次基本上完全搬运过来了。大家安装的时候会提示需要在 bmq pds 和 muqss 三种 CPU 调度器中进行选择,相关的内核配置文件放在
https://youtu.be/cQhPCsoQHh8?t=1859
那么最后祝各位朋友5.1节玩的开心。
变化比较大的是 Project C 的内核,在这里我稍微介绍下如何使用。之前 Project C 是从 Arch Linux 的 Linux-TKg 那边搬运一些有用的补丁过来,这次基本上完全搬运过来了。大家安装的时候会提示需要在 bmq pds 和 muqss 三种 CPU 调度器中进行选择,相关的内核配置文件放在
sys-kernel/projectc-sources/files/
目录下。关于这三种调度器的特点和区别可以参考下面视频:https://youtu.be/cQhPCsoQHh8?t=1859
那么最后祝各位朋友5.1节玩的开心。
YouTube
乐享 Linux 生活第十期,把玩 Linux 内核,各种补丁,GCC VS CLANG( CC字幕 )
感谢大家的等待,终于做出了一期目前为止最为详细的用户和玩家食用的 Linux 内核配置教程,附赠了 GCC 内核 VS Clang 内核的对比跑分,大家可以找到如何配置 MuQSS,BMQ,PDS,Cachy 内核补丁集,也谈到了各自的特点和优势。希望大家喜欢。
2:34 底库和依赖的讨论
8:26 编译器 GCC 和 Clang
11:31 Linux本身的优化和讨论
19:49 Linux内核无第三方补丁优化建议
24:07 Linux MuQSS 补丁介绍
26:38 Linux MuQSS 补丁实战…
2:34 底库和依赖的讨论
8:26 编译器 GCC 和 Clang
11:31 Linux本身的优化和讨论
19:49 Linux内核无第三方补丁优化建议
24:07 Linux MuQSS 补丁介绍
26:38 Linux MuQSS 补丁实战…
一个简略的给 gentoo-zh overlay 发 pr 的流程
1. 在 Github 上 fork
2. 进入到本地 portage 的 git 仓库里 添加两个新的 remote repo,
8. 在 pull request完成之后,可以切换回master分支:
1. 在 Github 上 fork
https://github.com/microcai/gentoo-zh
到自己账户下2. 进入到本地 portage 的 git 仓库里 添加两个新的 remote repo,
git remote add myself https://github.com/<你的用户名>/gentoo-zh.git
git remote add upstream https://github.com/microcai/gentoo-zh.git
3. fetch 到最新 git fetch upstream
4. 切换到一个新的分支下 git checkout -b <一个新分支名> upstream/master
5. 在新的分支里完成修改并且提交(基本上每次提交一个包的修改) cd <类别路径>/<包名路径>
<做一些你的修改>
#直接测试 ebuild 的不同阶段: https://devmanual.gentoo.org/ebuild-writing/functions/index.html
ebuild <包名>-<版本>.ebuild help
git add .
git commit -sm '<类别>/<包名>: <一个简短的提交说明>'
6. 推送到自己仓库的一个新分支,然后切换回 master 分支 git push myself <一个新分支名>
7. 在 Github 里发起 pull request8. 在 pull request完成之后,可以切换回master分支:
git checkout master
在gentoo-zh overlay目录下运行 repoman full -d,
可以看到输出很多的QA(Quality Assurance)提示。
也可以cd到具体某个package里执行。
现在需要更多小伙伴们一起帮忙来修复这些QA小问题。
有兴趣的可以修复然后发pr~
https://github.com/microcai/gentoo-zh/issues/944
可以看到输出很多的QA(Quality Assurance)提示。
也可以cd到具体某个package里执行。
现在需要更多小伙伴们一起帮忙来修复这些QA小问题。
有兴趣的可以修复然后发pr~
https://github.com/microcai/gentoo-zh/issues/944
GitHub
Make repoman happy · Issue #944 · microcai/gentoo-zh
在gentoo-zh下运行 repoman full -d,可以看到输出相对多的QA(Quality Assurance)提示。 如果只关心具体某个包,可以cd进去然后运行repoman full -d 这是我运行的输出: http://fars.ee/odjC
Gentoo 中文频道 pinned «在gentoo-zh overlay目录下运行 repoman full -d, 可以看到输出很多的QA(Quality Assurance)提示。 也可以cd到具体某个package里执行。 现在需要更多小伙伴们一起帮忙来修复这些QA小问题。 有兴趣的可以修复然后发pr~ https://github.com/microcai/gentoo-zh/issues/944»