记录 portage 相关无关的内容,杂七杂八的旧记录.
#Old location
repo_basedir="/usr"
repo_name="portage"
distdir="/usr/portage/distfiles"
portdir="/usr/portage"
target_distdir="/usr/portage/distfiles"
target_pkgdir="/usr/portage/packages"
#New location
repo_basedir="/var/db/repos"
repo_name="gentoo"
distdir="/var/cache/distfiles"
portdir="/var/db/repos/gentoo"
target_distdir="/var/cache/distfiles"
target_pkgdir="/var/cache/binpkgs"
#配置文件夹: /etc/portage
#主要配置文件
/etc/portage/make.conf
#配置安装不稳定软件包
/etc/portage/package.accept_keywords
#配置安装非自由开源软件
/etc/portage/package.license
#禁用软件包
/etc/portage/package.mask
#解除软件包禁用
/etc/portage/package.unmask
#配置个别软件包 USE
/etc/portage/package.use
#配置仓库源
/etc/portage/repos.conf
file /etc/portage/make.conf
# These settings were set by the catalyst build script that automatically
# built this stage.
# Please consult /usr/share/portage/config/make.conf.example for a more
# detailed example.
#CC="clang"
#CXX="clang++"
#root # gcc -v -E -x c /dev/null -o /dev/null -march=native 2>&1 | grep /cc1
#COMMON_FLAGS="-march=skylake -mabm -O2 -pipe"
COMMON_FLAGS="-march=native -O2 -pipe"
CFLAGS="${COMMON_FLAGS}"
#CFLAGS="${COMMON_FLAGS} -std=gnu11"
CXXFLAGS="${COMMON_FLAGS}"
#CXXFLAGS="${COMMON_FLAGS} -std=gnu++11"
FCFLAGS="${COMMON_FLAGS}"
FFLAGS="${COMMON_FLAGS}"
MAKEOPTS="-j6 -l6"
EMERGE_DEFAULT_OPTS="--ask --keep-going --with-bdeps=y --autounmask=y"
#EMERGE_DEFAULT_OPTS="--ask --verbose --jobs=6 --load-average=6 --keep-going --with-bdeps=y --autounmask=y"
# NOTE: This stage was built with the bindist Use flag enabled
PORTDIR="/var/db/repos/gentoo"
DISTDIR="/var/cache/distfiles"
PKGDIR="/var/cache/binpkgs"
FETCHCOMMAND="/usr/bin/aria2c -c -s10 -k8M -x10 -d \${DISTDIR} -o \${FILE} \${URI}"
RESUMECOMMAND="${FETCHCOMMAND}"
FEATURES="buildpkg binpkg-logs split-log split-elog clean-logs ccache"
PORTAGE_LOGDIR="/var/log/portage"
PORTAGE_ELOG_CLASSES="warn error log qa"
#PORTAGE_ELOG_CLASSES="info warn error log qa"
PORTAGE_ELOG_SYSTEM="save_summary:log,warn,error,qa echo save"
PORTAGE_LOGDIR_CLEAN="find \"\${PORTAGE_LOGDIR}\" -type f ! -name \"summary.log*\" -mtime +60 -delete"
# This sets the language of build output to English.
LC_MESSAGES=C
LINGUAS="en en_CA zh_CN"
L10N="en en_CA zh-CN"
#grub2
GRUB_PLATFORMS="efi-32 efi-64 pc"
# python
#PYTHON_TARGETS="python2_7 python3_6"
#PYTHON_SINGLE_TARGET="python3_6"
## (For mouse, keyboard, and Synaptics touchpad support)
INPUT_DEVICES="libinput synaptics"
## (For nVidia cards)
##VIDEO_CARDS="nouveau"
VIDEO_CARDS="intel i965 nvidia"
ALSA_CARDS="hda-intel"
## SDDM:Protect your changes from updates
#CONFIG_PROTECT="/usr/share/sddm/scripts/Xsetup"
## ccache
CCACHE_DIR="/var/cache/ccache"
#CCACHE_SIZE="8G"
## QEMU
QEMU_SOFTMMU_TARGETS="i386 x86_64"
QEMU_USER_TARGETS="i386 x86_64"
#中国
#GENTOO_MIRRORS="http://mirrors.163.com/gentoo/ http://mirrors.aliyun.com/gentoo/ http://gentoo.aditsu.net:8000/"
#加拿大
GENTOO_MIRRORS="ftp://mirror.csclub.uwaterloo.ca/gentoo-distfiles/ https://mirror.csclub.uwaterloo.ca/gentoo-distfiles/ http://mirror.csclub.uwaterloo.ca/gentoo-distfiles/ ftp://mirrors.tera-byte.com/pub/gentoo http://gentoo.mirrors.tera-byte.com/ rsync://mirrors.tera-byte.com/gentoo http://gentoo.gossamerhost.com rsync://gentoo.gossamerhost.com/gentoo-distfiles/"
CPU_FLAGS_X86="aes avx avx2 f16c fma3 mmx mmxext pclmul popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3"
USE="X"
file /etc/portage/package.use/tim
#禁用python2
*/* PYTHON_TARGETS: -python2_7
app-admin/conky bundled-toluapp curl hddtemp iostats imlib lua-cairo lua-imlib rss truetype
app-antivirus/clamav clamdtop
app-arch/p7zip rar
app-editors/vim python
app-emulation/libguestfs libvirt
app-emulation/libvirt lxc policykit virt-network
app-emulation/lxc examples
#app-emulation/lxc-templates verify-sig
app-emulation/qemu alsa -pin-upstream-blobs gnutls gtk nfs opengl pulseaudio sdl spice usbredir virgl xfs
app-emulation/spice gstreamer
app-emulation/virt-manager gtk policykit
#app-emulation/virtualbox pax_kernel
#app-emulation/vmware-workstation macos-guests vmware-tools-darwin vmware-tools-darwinPre15 vmware-tools-linux vmware-tools-winPre2k vmware-tools-winPreVista vmware-tools-windows
app-i18n/fcitx gtk2 opencc
#app-office/calligra okular
app-portage/layman sync-plugin-portage git
dev-lang/php apache2 cgi cjk curl gd fpm mysql mysqli pdo truetype
dev-libs/nss utils
#解决 gcompris 无声音问题
dev-qt/qtmultimedia alsa
dev-util/vulkan-tools cube
games-emulation/redream-libretro gles2
# cg 是Nvidia toolkit plugin, xmb rgui 是Menu Interface相关
games-emulation/retroarch -sdl2 cg xmb freetype rgui vulkan
games-sports/stuntrally editor
kde-apps/krdc vnc
#kde-plasma/plasma-meta legacy-systray gtk
mail-mta/postfix berkdb mbox
#解决qemu guest 没有声音的问题
media-libs/gst-plugins-base alsa
media-libs/libcaca opengl
media-libs/libsdl2 alsa opengl pulseaudio vulkan
media-libs/libwebp opengl
media-libs/mesa lm-sensors vaapi vdpau vulkan
#解决网易云音乐连接不上网络的问题
media-plugins/gst-plugins-meta http
media-tv/kodi upnp vaapi vdpau webserver
media-video/ffmpeg gnutls opengl openh264 openssl pulseaudio vaapi libass opus vdpau vulkan webp x265
media-video/mplayer aalib bidi fbcon libcaca rtmp
media-video/mpv libcaca pulseaudio vaapi vdpau vulkan
media-video/vlc bidi libass libcaca vaapi
#media-sound/bluez-alsa aac
net-fs/cifs-utils -acl -ads
#net-fs/nfs-utils nfsv41
net-fs/samba client
net-libs/glib-networking -gnome
net-misc/aria2 adns bittorrent ssh metalink xmlrpc
#net-misc/networkmanager bluetooth
net-print/hplip scanner snmp
net-wireless/bluez deprecated
sys-apps/kmod lzma zlib
#sys-apps/systemd cgroup-hybrid
sys-boot/grub truetype
sys-firmware/intel-microcode initramfs
#sys-kernel/genkernel-next plymouth
sys-kernel/gentoo-sources symlink
sys-kernel/linux-firmware initramfs
#www-client/firefox-bin -pulseaudio
www-client/w3m imlib
x11-base/xorg-server xnest
#PRIME Render Offload 需要 kms libglvnd
x11-drivers/nvidia-drivers compat gtk3 kms libglvnd uvm
#x11-drivers/nvidia-drivers compat gtk3 -kms -uvm
x11-drivers/xf86-video-intel dri3 xvmc
x11-libs/cairo opengl
#解决 media-gfx/gpicview 看不了jpeg的问题
x11-libs/gdk-pixbuf jpeg
x11-libs/libva opengl vdpau
x11-libs/libva-vdpau-driver opengl
#x11-misc/i3status -pulseaudio
x11-misc/lightdm -gnome
x11-misc/picom opengl
x11-misc/tint2 svg tint2conf
x11-terms/rxvt-unicode 256-color xft
x11-terms/xterm truetype
x11-wm/openbox imlib session startup-notification svg
#升级全世界 ^-^
root # emerge --sync
root # emerge -avuDN --with-bdeps=y --exclude xxxxxx @world
root # emerge --ask --verbose --update --deep --newuse --with-bdeps=y --exclude xxxxxx @world
#移除孤立依赖的软件包, 可以使用"emerge --noreplace "手动将添加到world集合,避免--depclean时删除包
root # emerge --ask --verbose --pretend --depclean
root # emerge --ask --verbose --depclean
#安装指定版本的软件包
root # emerge -av =xxxxx/xxxxx-xxxxx
#从指定repository安装软件包
root # emerge -av category/atom::repository-name
#安装 gentoolkit eix pfl
root # emerge -av gentoolkit eix pfl
#修复依赖项
root # revdep-rebuild
#删除distfiles
root # eclean -p distfiles
root # eclean distfiles
#查询软件
tim $ eix xxxxxx
tim $ eix -I xxxxxx
tim $ eix -C xxxxxx
#查询软件包有哪些文件
tim $ qlist xxxxxx
tim $ equery f xxxxxx
#查询依赖
tim $ equery d xxxxxx
tim $ equery g xxxxxx
#查询某个命令属于哪个软件包
tim $ e-file xxxxxx
tim $ equery b xxxxxx
#安装ccache
root # emerge -av dev-util/ccache
#旧方式
#激活ccache支持,修改/etc/portage/make.conf,增加:
root # echo 'FEATURES="ccache"' >> /etc/portage/make.conf
root # echo 'CCACHE_SIZE="8G"' >> /etc/portage/make.conf
#查看ccache统计数据
root # CCACHE_DIR="/var/tmp/ccache" ccache -s
#在非Portage编译中使用ccache,添加/usr/lib/ccache/bin到您PATH参数里靠前的位置(在/usr/bin之前)。这一点可以通过编辑在您用户主目录中的.bash_profile文件来实现
tim $ echo 'PATH="/usr/lib/ccache/bin:/opt/bin:${PATH}"' >> ~/.bashrc
#清空缓存:
root # CCACHE_DIR="/var/tmp/ccache" ccache -C
#新方式:201911
root # mkdir -p /var/cache/ccache
root # chown root:portage /var/cache/ccache
root # chmod 2775 /var/cache/ccache
root # echo 'FEATURES="ccache"' >> /etc/portage/make.conf
root # echo 'CCACHE_DIR="/var/cache/ccache"' >> /etc/portage/make.conf
tim $ vim ~/.bashrc
root # vim /var/cache/ccache/ccache.conf
file ~/.bashrc
export PATH="/usr/lib/ccache/bin${PATH:+:}$PATH"
export CCACHE_DIR="/var/cache/ccache"
file /var/cache/ccache/ccache.conf
# Maximum cache size to maintain
max_size = 13.0G
# Allow others to run 'ebuild' and share the cache.
umask = 002
# Preserve cache across GCC rebuilds and
# introspect GCC changes through GCC wrapper.
compiler_check = %compiler% -v
# dir level and compression.
cache_dir_levels = 3
compression = true
compression_level = 6
root # dispatch-conf
#当运行dispatch-conf的时候,程序会带你把每个改变了的配置文件挨个过一边。按u来用新配置文件更新(替换)现在的配置文件,然后继续处理下一个。按z来删除新配置文件,然后继续处理下一个。当处理完所有的配置文件之后,dispatch-conf就会退出。你也可以随时按q来退出。
#处理过的文件备份在/etc/config-archive
u #使用新的配置文件更新(替换)当前配置文件并继续
z #Zap(删除)新配置文件并继续
n #跳至下一个配置文件,保留原始配置文件和任何CONFIG_PROTECTed文件
e #使用EDITOR中定义的编辑器编辑新的配置文件
m #以交互方式合并当前和新的配置文件,按h或者?显示交互方式的帮助
ed #编辑然后同时使用两边的版本,各版本分别加上标头以识别
eb #编辑然后同时使用两边的版本
el 或 e1 #编辑然后使用左边的版本
er 或 e2 #编辑然后使用右边的版本
e #丢弃两者然后编辑新的版本
l 或 1 #使用左边的版本
r 或 2 #使用右边的版本
s #加上两边一样的行时不在输出上显示
v #加上两边一样的行时会在输出上显示
q #退出
l #查看预合并和合并配置文件之间的差异
t #在合并和预合并的配置文件之间切换(应使用u命令安装)
h #显示帮助屏幕
q #退出dispatch-conf
root # etc-update
#etc-update不保留你的配置文件的旧版本。一旦你更新了文件,旧版本就永远丢失了。所以要非常小心,因为使用etc-update与使用dispatch-conf相比明显的不安全
#在整合简单直观的更动后,系统会提示你一个需要更新的受保护的文件列表
#如果你输入-1,etc-update将直接退出且不执行任何变更。如果你输入-3或-5,所有列出的配置文件将被更新的版本覆盖。因此先选出无需自动升级的配置文件非常重要,而具体步骤也很简单,只需要输入在该配置文件左边显示的数字就可以了。
#如果你认为升级的配置文件可以正确无误的投入使用,输入1。如果你认为升级的配置文件是不必要的,或者它也没有提供任何新的或有用的信息,输入2。如果你想交互地升级你当前的配置文件,输入3。
#用交互方式配置时可以使用的命令
ed: #编辑并使用两种版本,每一个版本都加上一个不同的标题头
eb: #编辑并使用两个版本
el: #编辑并使用左边的版本
er: #编辑并使用右边的版本
e: #编辑一个新的版本
l: #使用左边的版本
r: #使用右边的版本
s: #包含相同的行
v: #包含相同的行,并列出来源
q: #退出
#当无法再找到任何可更新的配置文件时etc-update将退出
#建立文件夹
root # mkdir -p /usr/local/timoverlay
#旧方式
#建立make.conf文件
root # echo 'PORTDIR_OVERLAY="/usr/local/timoverlay ${PORTDIR_OVERLAY}"' >> /usr/local/timoverlay/make.conf
#建立repo_name文件
root # mkdir /usr/local/timoverlay/profiles
root # echo 'timoverlay' >> /usr/local/timoverlay/profiles/repo_name
#建立layout.conf文件
root # mkdir /usr/local/timoverlay/metadata
root # echo 'masters = gentoo' >> /usr/local/timoverlay/metadata/layout.conf
#修改/etc/portage/make.conf,加入
root # echo 'source /usr/local/timoverlay/make.conf' >> /etc/portage/make.conf
#制作ebuild并为 ebuild 创建校验记录
root # ebuild xxxxx digest
新方式: https://wiki.gentoo.org/wiki/Handbook:AMD64/Portage/CustomTree
#创建文件
root # mkdir -p /usr/local/timoverlay/{metadata,profiles}
root # chown -R portage:portage /usr/local/timoverlay
root # echo 'timoverlay' >> /usr/local/timoverlay/profiles/repo_name
root # cat > /usr/local/timoverlay/metadata/layout.conf << "EOF"
> masters = gentoo
> auto-sync = false
> EOF
root # cat > /etc/portage/repos.conf/timoverlay.conf << "EOF"
> [timoverlay]
> location = /usr/local/timoverlay
> EOF
#制作ebuild并为 ebuild 创建校验记录
root # ebuild xxxxx digest
#设置挂载,编辑/etc/fstab
root # echo 'tmpfs /var/tmp/portage tmpfs size=12G,uid=portage,gid=portage,mode=775,noatime 0 0' >> /etc/fstab
#设置大软件包不经过tmpfs
root # mkdir /etc/portage/env
root # echo 'PORTAGE_TMPDIR="/var/tmp/notmpfs"' > /etc/portage/env/notmpfs.conf
root # mkdir /var/tmp/notmpfs
root # chown portage:portage /var/tmp/notmpfs
root # chmod 775 /var/tmp/notmpfs
root # cat > /etc/portage/package.env << "EOF"
> www-client/chromium notmpfs.conf
> www-client/firefox notmpfs.conf
> dev-java/icedtea notmpfs.conf
> app-office/libreoffice notmpfs.conf
> EOF
#挂载tmpfs
root # mount /var/tmp/portage
#调整tmpfs的大小, N可以用后缀K或M或G,也可以用X%形式
root # mount -o remount,size=N /var/tmp/portage
#升级后选择想要使用的版本,N为数字
root # emerge -avu sys-devel/gcc
root # gcc-config --list-profiles
root # gcc-config N
root # env-update && source /etc/profile
#The following table gives the packages that, if installed, need to be rebuilt. 当编译软件出错时,可能需要重新安装几个软件
root # emerge -av -1 sys-apps/sandbox sys-devel/libtool sys-devel/binutils sys-libs/glibc sys-devel/llvm sys-devel/clang media-libs/mesa
#有可能还需要重新编译media-libs/mesa,不然3D会出错, 查看出错文件属于哪个软件包,用equery b xxxxxx
#当编译软件仍出错时,使用equery查看软件依赖情况,先安装此软件所依赖的软件
root # equery g xxxxxx
root # emerge -av xxxxx1 xxxxx2 xxxxx3
本文作者是一位开源理念的坚定支持者,所以本文内容遵照开源的精神发布。
无担保:本文作者不保证此文内容准确无误,亦不承担任何由于使用此文档所导致的损失。
自由使用:任何人都可以自由的阅读/链接/打印此文档,无需任何附加条件。
名誉权:任何人都可以自由的转载/引用/再创作此文档,但必须保留作者署名并注明出处。
其他作品
本文作者十分愿意与他人分享劳动成果,如果你对我的其他作品有兴趣,可以在如下位置查看现有的作品集:
Tim 作品集 [ https://tiimmm.com/ ]
联系方式
由于作者水平有限,因此不能保证此文内容准确无误。如果你发现了此文中的错误(哪怕是错别字也好),请来信指出,任何提高此文质量的建议我都将虚心接纳。
Email: tiimmm dot chen at gmail dot com
网站制作者:Author:tiimmm dot chen at gmail dot com, Welcome to email for discussion!