Skip to main content

It is Python wrapper tool for emerge (Gentoo package manager - Portage). It can mount RAM disk of defined size and compile packages inside it

Project description

image Python CI Coverage Status Codacy Badge License Downloads
image BCH compliance Maintainability Rating pyerge


It is small python wrapper tool for emerge (Gentoo package manager - Portage). It can mount RAM disk of defined size and compile packages inside it. Pyerge provide various tools to check and show emerge/portage status for conky.

Sponsored by Jetbrains Open Source Support Program

logo logo

Table of Contents


It should be called PYMERGE for PYthon and eMERGE, but when I create repository I missspelled the name, and I keep it like that.


  • Python-3.6+
  • app-portage/eix


Copy ebuild from GitHub Releases into your local repository (i.e. /usr/local/portage/dev-python/portage) and run as root:

cd /usr/local/portage/app-portage/portage
ebuild pyerge-0.7.2.ebuild manifest
echo "app-portage/pyerge ~amd64" >> /etc/portage/package.accept_keywords
emerge app-portage/portage

Ebuild is good quality as RepoMan sez: "If everyone were like you, I'd be out of business!"

Main usage

Pyerge API/CLI parameter are not stable yes and are subject to change. Main pyerge script is called pye and has two main actions: check and emerge

pye check

sudo pye check

It basicly run:

  • sync portage eix-sync
  • sudo emerge -pvNDu --nospinner --with-bdeps=y --color n @world (and save output to log_file_1)
  • Estypete time for runing ememrge @world genlop -pn (and save to log_file_2)

Some useful switches:

  • -l, --local - run everthing without eix-sync
  • -q, --quiet - no output from pyerge itself only form other tools like eix, or emerge
  • -v, --verbose - be more verbose

pye emerge

sudo pye -w emerge

It basicly run:

  • check if emerge isn't runnig
  • set envirinment variable PORTAGE_TMPDIR to /var/tmp/portage
  • mount 4G RAM disk to /var/tmp/portage
  • run emerge -NDu --nospinner --with-bdeps=y --keep-going=y @world
  • unmount RAM disk

Some useful switches:

  • -d, --clean-print - after running emerge -pvNDu @world it will show output from deep clean - emegre -pc
  • -c, --clean-run - after running emerge -pvNDu @world it will run deep clean - emerge -c (imply -d)

After emerge action you can pass any ememrge parameter, it will be passed directly into emerge. So, you can build:

sudo pye -s 1G emerge -a app-admin/conky

It will mount only 1G RAM disk and ask while comipling app-admin/conky package.

  • -s, --size - size of RAM disk with postfix i.e. 1024K, 512M, 2G

Tools for Conky

Those tools are crated especialy for Conky monitoring. i.e. part of my .conkyrc:

color0 5b6dad
color1 7f8ed3
 ${color0}CPU1: ${color1}${hwmon 0 temp 2}°C ${color0}CPU2: ${color1}${hwmon 0 temp 3}°C
 ${color0}md126 (root): ${color1}${execi 60 e_raid -n md126}   ${color0}md127 (swap): ${color1}${execi 60 e_raid -n md127}
${color0}File Systems:
 ${color0}root ${color1}${fs_used /}/${fs_size /} ${color1}${fs_bar /}
 ${color0}boot ${color1}${fs_used /boot}/${fs_size /boot} ${color1}${fs_bar /boot}
 ${color0}portage ${color1}${fs_used /var/tmp/portage}/${fs_size /var/tmp/portage} ${color1}${fs_bar 6 /var/tmp/portage}
 ${color0}Last Sync: ${color1}${execi 120 e_sync}
 ${color0}Progress:  ${color1}${execibar 30 e_prog}
 ${color0}Package:   ${color1}${execi 30 e_curr}
 ${color0}ETA:       ${color1}${execi 30 e_eta}
 ${color0}Status:    ${color1}${execi 30 e_sta}
 ${color0}Update:    ${color1}${execi 30 e_upd}
 ${color0}Download:  ${color1}${execi 30 e_dl}
 ${color0}EUT:       ${color1}${execi 30 e_eut}
 ${color0}Live:      ${color1}${execi 5400 e_live all}
${color0}Gentoo Linux Security Advisories:
${color1}${execi 5400 glsa list -e 25}
${color0}Affected GLSA:
${color1}${execi 5400 glsa test -e 40}



Print date of last emerge syc eix-sync



Run after pye check print size of downloads of @world i.e. output - 3,239,589 KiB



Run during sudo pye emereg or sudo emerge - print current building (lastly builded) package



Run after pye check - print estimated update time from genlop -pn i.e. output - 2 days 10h 36min



Run during sudo pye emereg or sudo emerge - print estimetet left time to end of compilation, based on genlop



Run after pye check - print content of next @world update



Status of emerge/portage. Possible values: Compiling, Cleaning, Autoclean, Completed, Finished, Synced, Syncing, Unmerging, Merging, Unmerge



Run during sudo pye emereg or sudo emerge - print current progress of emerge as float i.e. output - if emerge is buildeing (5 of 6) package it will return 83.3333 You can use it in conky as: ${execibar 30 e_prog}



Run after pye check - print types of next @world update. Possible values: U, N, NS, R, Un, D, B i.e. output - 19 U, 2 R, 1 Un, 2 D - it means 19 upgrades, 2 reinstals, 1 uninstall, 2 downgrades


e_raid <raid dev>

Print RAID status form /proc/mdstat i.e. output for e_raid md126L: [UUU]


e_live <action>

Print names and number of live ebuild to rebuild i.e. output for e_live all: cvechecker,openmw (2 of 3)


glsa -e 5 list 

List last 5 of GLSA enrties output:

202107-55: SDL 2: Multiple vulnerabilities
202107-54: libyang: Multiple vulnerabilities
202107-53: Leptonica: Multiple vulnerabilities
202107-52: Apache Velocity: Multiple vulnerabilities
202107-51: IcedTeaWeb: Multiple vulnerabilities
glsa -e 40 test 

Check system against last 40 of GLSA. output:

System is not affected by any of listed GLSAs

or list of IDs:


Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyerge-0.7.2.tar.gz (25.9 kB view hashes)

Uploaded source

Built Distribution

pyerge-0.7.2-py3-none-any.whl (13.8 kB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page