Tim's Web Home

Gentoo portage on the T website

Gentoo portage 相关内容:

记录 portage 相关无关的内容,杂七杂八的旧记录.

  • Default Gentoo ebuild repository location change, As of portage v2.3.66, which was released on 2019-04-29, the default locations changed for the portdir, distdir, repo_name, repo_basedir directories.
      #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"
    
  • portage 常用配置文件
      #配置文件夹: /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
    
  • 使用emerge
      #升级全世界 ^-^
      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
    
  • 安装portage辅助工具
      #安装 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
      #安装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
    
  • 使用dispatch-conf处理配置文件更改
      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
    
  • 使用etc-update处理配置文件更改
      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将退出
    
  • 创建本地overlay仓库, 相关ebuild文件可在以下网址搜索下载修改 http://gpo.zugaina.org 或者 https://cgit.gentoo.org . 如果下载的ebuild,在创建校验记录时出现xxxxxx.eclass could not be found by inherit()的ERROR错误,还需要下载相关的xxxxxx.eclass放到/usr/local/timoverlay/eclass下
      #建立文件夹
      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
    
  • Portage TMPDIR on tmpfs
      #设置挂载,编辑/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
    
  • 升级GCC
      #升级后选择想要使用的版本,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
    
  • 解决被mask的文件
    按/usr/portage/profiles/package.mask 或者 /var/db/repos/gentoo/profiles/package.mask 里mask的文件的格式写入/etc/portage/package.unmask可解除锁定
    如安装文件时有被加了小括号的USE(一般是相关的软件已被mask),则:查找/usr/portage/profiles 或者 /var/db/repos/gentoo/profiles 下所有 use.mask(包含各子文件夹)相关的记录,并修改,可解除锁定

版权声明

本文作者是一位开源理念的坚定支持者,所以本文内容遵照开源的精神发布。
无担保:本文作者不保证此文内容准确无误,亦不承担任何由于使用此文档所导致的损失。
自由使用:任何人都可以自由的阅读/链接/打印此文档,无需任何附加条件。
名誉权:任何人都可以自由的转载/引用/再创作此文档,但必须保留作者署名并注明出处。
其他作品
本文作者十分愿意与他人分享劳动成果,如果你对我的其他作品有兴趣,可以在如下位置查看现有的作品集:
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!



T站勉强运行341天1时37分20秒
多伦多时间:2024-05-20 Monday 00:10:35 AM