Gentoo Linux updater
Project description
Gentoo Updater
gentoo-update
is a tool that automates updates on Gentoo Linux.
By default it only installs security updates from GLSA,
but it can also be used to update all packages on the system, i.e. @world
.
This project originates from 2023 Google Summer of Code, more about it can be found in the blog post and Gentoo Forums.
gentoo-update
has 3 main modules - updater, parser and notifier. Updater runs the
update script and creates a log file. Parser reads the log file and composes a post-upgrade
report which notifier then sends via email, IRC bot or
mobile app.
Feature List
- updater
- update security patches from GLSA by default, and optionally update
@world
- insert additional flags to
@world
update - do not start the update if available disk space is lower than a certain threshold
- estimate update time
- show package list before the update
- update security patches from GLSA by default, and optionally update
- parser
- show update status (success/failure) in the report
- show package info after successful update: ebuilds, blocks, uninstalls etc.
- detect different errors during an update
- blocked packages
- USE flag conflicts
- issues with Licenses
- network issues during an update
- OOM during an update
- show disk usage before/after an update
- notifier
- send update report via IRC bot
- send update report via email using SendGrid
- send update report via email using local relay
- send update report via mobile app
- send a short report with only the update status instead of a full report
- general
- CLI: add option to choose from which log file to generate a report
- CLI: add emoji to console output like in k3s
- export report in machine readible output (JSON, YAML, TOML)
- comprehensive set of unit tests (test coverage > 50%)
Installation
gentoo-update
is in GURU
overlay, and can be installed using emerge
. First, enable the overlay:
emerge --ask app-eselect/eselect-repository
eselect repository enable guru
emerge --sync
All packages in GURU overlay need an ~arch
keyword.
For example, on amd64 architecture add it using:
echo 'app-admin/gentoo_update ~amd64' > /etc/portage/package.accept_keywords/gentoo_update
and then install it:
emerge --ask app-admin/gentoo_update
Alternatively, it can be installed with pip in a virtual environment:
python -m venv gentoo_update
source gentoo_update/bin/activate
python -m pip install gentoo_update
Usage
The updater creates a subdirectory in Portage's default PORTAGE_LOGDIR
located at /var/log/portage/gentoo-update
.
However, if this variable is set to a different value in make.conf
, it will use the new location instead of the default.
Here are some usage examples:
- Basic security update
gentoo-update update
- Full system update with extra update parameters
gentoo-update update -m full -a "--color=y --keep-going --exclude=glibc"
- Full system update, show elogs and news
gentoo-update update -m full -l -n
- Read last update report:
gentoo-update report
- Show the last 3 logs filenames, and generate a report for one of it:
# gentoo-update report -o 3
The last 3 log file filenames
log_2023-09-23-09-19
log_2023-10-02-20-19
log_2023-10-07-13-14
# gentoo-update report -r log_2023-10-02-20-19
==========> Gentoo Update Report <==========
update status: SUCCESS
......
- Send the last update report to an IRC channel:
export IRC_CHANNEL="#<irc_channel_name>"
export IRC_BOT_NICKNAME="<bot_name>"
export IRC_BOT_PASSWORD="<bot_password>"
gentoo-update report -s irc
- Send the last update report via email:
# install Sengrid library
# need to unmask these packages: dev-python/sendgrid, dev-python/python-http-client, dev-python/starkbank-ecdsa
emerge --ask dev-python/sendgrid
# export token and other info via env variables
export SENDGRID_TO='<to_address>'
export SENDGRID_FROM='<from_address>'
export SENDGRID_API_KEY='<api_key>'
# send the latest report, or a specific one
gentoo-update report -s email
gentoo-update report -r <log_name> -s email
Help
The detailed explanation of command flags can be found in CLI's help message:
gentoo-update --help
Information on testing can be found in tests directory readme.
To get help or request additional features feel free to create an issue in this GitHub repo. Or just contact me directly via email at labbrat_social@pm.me or on IRC. I am also in most of the #gentoo IRC groups and my nick there is #LabBrat.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file gentoo-update-0.2.4.tar.gz
.
File metadata
- Download URL: gentoo-update-0.2.4.tar.gz
- Upload date:
- Size: 22.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ac680eba02852aa87bcc45baaf05f5736860659c58e0a94e7d4cb6d5c3fd3f0c |
|
MD5 | 827df4cb195e686fe9d65377f258baf1 |
|
BLAKE2b-256 | 174668802957406b8c06b2649c1ccb4f63c54716b33a808a953a4bde47722800 |
File details
Details for the file gentoo_update-0.2.4-py3-none-any.whl
.
File metadata
- Download URL: gentoo_update-0.2.4-py3-none-any.whl
- Upload date:
- Size: 22.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 56e4b6020a5601fc5a2e4134d5ae4601e056f37f7df7ea8cd75598a8db12014a |
|
MD5 | ee2b8c9c08db66ceb69898016ea630b9 |
|
BLAKE2b-256 | 4b7771883d5ec1054b1c70701d390bb1268af2187d7b7d9a6cc800efb7337307 |