{"id":42387870,"url":"https://github.com/roimme65/gentoo-updater","last_synced_at":"2026-04-10T18:07:42.952Z","repository":{"id":331364202,"uuid":"1126333071","full_name":"roimme65/gentoo-updater","owner":"roimme65","description":"🐧 Automatischer System-Updater für Gentoo Linux mit emerge, eix-Integration, Kernel-Checks und Konfigurations-Prüfung","archived":false,"fork":false,"pushed_at":"2026-01-27T21:50:41.000Z","size":143,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-28T09:20:44.391Z","etag":null,"topics":["automation","gentoo-linux","update"],"latest_commit_sha":null,"homepage":"https://github.com/roimme65/gentoo-updater","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/roimme65.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-01T17:22:21.000Z","updated_at":"2026-01-27T21:50:39.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/roimme65/gentoo-updater","commit_stats":null,"previous_names":["roimme65/gentoo-updater"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/roimme65/gentoo-updater","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roimme65%2Fgentoo-updater","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roimme65%2Fgentoo-updater/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roimme65%2Fgentoo-updater/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roimme65%2Fgentoo-updater/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/roimme65","download_url":"https://codeload.github.com/roimme65/gentoo-updater/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roimme65%2Fgentoo-updater/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29178534,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-06T20:14:21.878Z","status":"ssl_error","status_checked_at":"2026-02-06T20:14:21.443Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","gentoo-linux","update"],"created_at":"2026-01-27T23:25:46.430Z","updated_at":"2026-02-06T22:00:33.893Z","avatar_url":"https://github.com/roimme65.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Gentoo System Updater\n\n**Languages:** 🇬🇧 [English](README.md) | 🇩🇪 [Deutsch](README.de.md)\n\nAutomated update solution for Gentoo Linux that simplifies and automates the entire system update process.\n\n## Features\n\n### 🚀 Performance \u0026 Optimization\n- ⚡ **Parallel Compilation** with automatic CPU detection (`--jobs` and `--load-average`)\n- 📊 **Intelligent Update Detection** - Rebuild kernel modules only when needed\n- 💾 **Disk Space Check** before updates\n- 🔄 **Automatic Retry** on manifest errors\n\n### 📦 Update Functions\n- 🔄 **Repository Synchronisation** (`emerge --sync`)\n- 📚 **eix Database Update** (optional)\n- 📦 **System Update** (full `@world` update)\n- 🔧 **Intelligent Kernel Module Recompilation** (NVIDIA, VirtualBox, etc.)\n- 🧹 **Automatic Cleanup** (`emerge --depclean`)\n- 🔧 **Dependency Repair** (`revdep-rebuild`)\n\n### 🛡️ Security \u0026 Reliability\n- 💾 **Automatic Backups** of important configuration files\n- 🔍 **Blocked Packages Check** before updates\n- ⚠️ **Critical Package Warning** (gcc, glibc, Python)\n- 📝 **Full Logging System** with JSON export\n- 🎯 **Robust Error Handling** with detailed logs\n\n### 📊 Monitoring \u0026 Reports\n- 📈 **Update Summary** with statistics\n- 🌍 **Mirror Logging** - Shows all configured Gentoo mirrors \u0026 primary mirror\n- 📧 **Email Notifications** (optional)\n- 📁 **Automatic Log Rotation**\n- 🎨 **Colored Output** with clear structure\n\n### ⚙️ Configuration\n- 📄 **JSON Configuration File** for customization\n- 🔧 **Flexible emerge Options**\n- ⚡ **Dry-Run Mode** for testing\n\n### 🆕 v1.4.0 Advanced Parameters\n- 🎛️ **--log-level** (DEBUG/INFO/WARNING/ERROR)\n- ⏭️ **--skip-*** options (sync, update, eix, cleanup, revdep)\n- 🎯 **--only-*** options (execute specific steps only)\n- 📦 **--max-packages N** (limit updates)\n- ⏱️ **--timeout SECONDS** (set emerge timeout)\n- 🔄 **--retry-count N** (automatic retries on failure)\n- 🔔 **--notification-webhook URL** (send notifications)\n- ⚙️ **--parallel-jobs N** (override job count)\n- 🌍 **Environment Variables** (GENTOO_UPDATER_*)\n\n## Requirements\n\n- Gentoo Linux\n- Python 3.6+\n- Root/sudo privileges\n- Optional: `eix` for faster package searches\n- Optional: `gentoolkit` for `revdep-rebuild`\n\n## Installation\n\n### Method 1: Automatic Installation\n\n```bash\ngit clone https://github.com/roimme65/gentoo-updater.git\ncd gentoo-updater\nsudo ./install.sh\n```\n\n### Method 2: Manual Installation\n\n```bash\n# Download script\ngit clone https://github.com/roimme65/gentoo-updater.git\ncd gentoo-updater\n\n# Make executable\nchmod +x gentoo-updater.py\n\n# Copy to /usr/local/bin (optional)\nsudo cp gentoo-updater.py /usr/local/bin/gentoo-updater\n```\n\n### Method 3: PyPI (Coming in v1.4.0+)\n\n```bash\npip install gentoo-updater\n```\n\n## Usage\n\n### Full System Update\n\n```bash\nsudo gentoo-updater\n```\n\n### Create Configuration\n\nOn first run, create default configuration:\n\n```bash\nsudo gentoo-updater --create-config\n```\n\nThis creates `/etc/gentoo-updater.conf` with options:\n- **emerge_jobs**: Number of parallel jobs (auto = CPU cores)\n- **emerge_load_average**: Maximum system load\n- **enable_backups**: Enable automatic backups\n- **backup_dir**: Backup directory\n- **enable_notifications**: Enable email notifications\n- **notification_email**: Email address\n- **min_free_space_gb**: Minimum free space required\n- **auto_depclean**: Enable automatic depclean\n- **auto_revdep_rebuild**: Enable automatic revdep-rebuild\n- **critical_packages**: List of critical packages\n- **log_retention_days**: Log retention in days\n\nExample config: see [gentoo-updater.conf.example](gentoo-updater.conf.example)\n\n### Dry-Run Mode\n\n```bash\nsudo gentoo-updater --dry-run\n```\n\n### Verbose Output\n\n```bash\nsudo gentoo-updater --verbose\n```\n\n### Advanced Parameters (v1.4.0+)\n\n```bash\n# Log level control\nsudo gentoo-updater --log-level DEBUG\n\n# Skip specific steps\nsudo gentoo-updater --skip-cleanup --skip-revdep\n\n# Execute only specific steps\nsudo gentoo-updater --only-sync      # Only repository sync\nsudo gentoo-updater --only-update    # Only system update\n\n# Limit packages\nsudo gentoo-updater --max-packages 50\n\n# Set timeout\nsudo gentoo-updater --timeout 3600\n\n# Retry on failure\nsudo gentoo-updater --retry-count 3\n\n# Override parallel jobs\nsudo gentoo-updater --parallel-jobs 8\n\n# Send webhook notification\nsudo gentoo-updater --notification-webhook \"https://example.com/webhook\"\n```\n\n### Environment Variables (v1.4.0+)\n\n```bash\n# Enable dry-run via environment variable\nGENTOO_UPDATER_DRY_RUN=true sudo gentoo-updater\n\n# Debug logging\nGENTOO_UPDATER_LOG_LEVEL=DEBUG sudo gentoo-updater\n\n# Set timeout\nGENTOO_UPDATER_TIMEOUT=3600 sudo gentoo-updater\n\n# Enable retry\nGENTOO_UPDATER_RETRY_COUNT=3 sudo gentoo-updater\n\n# Override parallel jobs\nGENTOO_UPDATER_PARALLEL_JOBS=4 sudo gentoo-updater\n```\n\n### Kernel Module Recompilation\n\nRecompile kernel modules (useful after manual kernel update):\n\n```bash\nsudo gentoo-updater --rebuild-modules\n```\n\nThis rebuilds external kernel modules:\n- NVIDIA drivers (`nvidia-drivers`)\n- VirtualBox modules (`virtualbox-modules`)\n- ZFS modules\n- Other external modules\n\n### Custom Configuration File\n\n```bash\nsudo gentoo-updater --config /path/to/my-config.conf\n```\n\n### Show Help\n\n```bash\ngentoo-updater --help\n```\n\n## What the Script Does\n\nThe script automatically executes these steps:\n\n1. **Repository Synchronisation**\n   - Reads GENTOO_MIRRORS from `/etc/portage/make.conf`\n   - Displays all configured mirrors\n   - Runs `emerge --sync` to update the Portage tree\n\n2. **eix Database Update**\n   - Runs `eix-update` to update eix database (if installed)\n\n3. **Update Check**\n   - Checks for available updates\n   - Shows list of packages to update\n\n4. **System Update**\n   - Runs `emerge @world --update --deep --newuse`\n   - Monitors for critical package updates\n   - Only rebuilds kernel modules if kernel was updated\n\n5. **Cleanup**\n   - Runs `emerge --depclean` to remove unused packages\n\n6. **Dependency Repair**\n   - Runs `revdep-rebuild` to fix broken dependencies (if gentoolkit installed)\n\n7. **Kernel Check**\n   - Shows available kernel versions\n   - Provides hints for manual kernel updates\n\n8. **Configuration Check**\n   - Searches for ._cfg files\n   - Alerts about pending configuration updates\n\n## Logs \u0026 Backups\n\n### Logs\nThe script automatically creates detailed logs:\n- Log file: `/var/log/gentoo-updater/update-YYYYMMDD-HHMMSS.log`\n- JSON summary: `/var/log/gentoo-updater/update-YYYYMMDD-HHMMSS.json`\n- Real-time output to terminal\n- Automatic log rotation (default: 30 days)\n\n### Backups\nBefore each update, these files are backed up:\n- `/etc/portage/make.conf`\n- `/etc/portage/package.use`\n- `/etc/portage/package.accept_keywords`\n- `/var/lib/portage/world`\n\nBackup directory: `/var/backups/gentoo-updater/YYYYMMDD-HHMMSS/`\n\n### Update Summary\nAfter each update:\n- 🌍 All configured Gentoo mirrors\n- 🌍 Primary mirror (first available)\n- Number of updated packages\n- Number of removed packages\n- Kernel update status\n- Module rebuild status\n- Errors and warnings\n- Total duration\n\n## Troubleshooting\n\n### \"Script requires root privileges\"\n\n```bash\nsudo gentoo-updater\n```\n\n### Manifest quarantine errors\n\nThe script automatically handles manifest errors by:\n1. Deleting the quarantine directory\n2. Automatic retry of sync\n\nIf problems persist:\n\n```bash\nsudo rm -rf /var/db/repos/gentoo/.tmp-unverified-download-quarantine\nsudo emerge --sync\n```\n\n### Missing kernel modules after kernel update\n\n```bash\nsudo gentoo-updater --rebuild-modules\n```\n\n### eix not found\n\n```bash\nsudo emerge --ask app-portage/eix\n```\n\n### revdep-rebuild not found\n\n```bash\nsudo emerge --ask app-portage/gentoolkit\n```\n\n## FAQ\n\n**Q: Why are kernel modules not rebuilt?**\n\nA: This is normal and correct! Modules are rebuilt only when:\n- ✅ A kernel update occurred during system update, OR\n- ✅ Running kernel ≠ Installed kernel (after manual kernel compilation)\n\nModules are NOT rebuilt when:\n- ❌ Kernel is already compiled for current version\n\nWhy? To make updates faster! (5-10 minutes faster)\n\n**Q: How do I force module rebuild?**\n\nA: Use `--rebuild-modules` option:\n```bash\nsudo gentoo-updater --rebuild-modules\n```\n\n**Q: How long does an update take?**\n\nA: Depends on update scope:\n- **Without kernel update**: 5-10 minutes (modules NOT recompiled)\n- **With kernel update**: 15-25 minutes (NVIDIA/VirtualBox modules recompiled)\n\n**Q: What if I manually update the kernel?**\n\nA: After manual kernel build:\n```bash\neselect kernel set \u003cnumber\u003e\ncd /usr/src/linux\nmake oldconfig \u0026\u0026 make \u0026\u0026 make modules_install \u0026\u0026 make install\ngrub-mkconfig -o /boot/grub/grub.cfg\n\n# Then:\nsudo gentoo-updater --rebuild-modules\n```\n\nThe script automatically detects kernel mismatch and rebuilds modules.\n\n## Differences from Other Distributions\n\nGentoo requires more manual steps than other distributions:\n- **Kernel Compilation** is manual (not automated)\n  - ✅ But: Kernel modules are automatically rebuilt!\n- **Configuration Updates** require `dispatch-conf` or `etc-update`\n- **Compilation** can take a long time (depends on hardware and USE flags)\n- **USE flag changes** may require recompilation\n\n## Common Use Cases\n\n### Complete Weekend Update\n```bash\nsudo gentoo-updater\n# Wait for completion...\n# Check kernel updates and configs\n# Reboot system\n```\n\n### Quick Module Rebuild After Manual Kernel Update\n```bash\n# After manual kernel build:\nsudo gentoo-updater --rebuild-modules\nsudo reboot\n```\n\n### Testing Without Changes\n```bash\nsudo gentoo-updater --dry-run\n```\n\n## License\n\nMIT License - See LICENSE file\n\n## Contributing\n\nContributions are welcome! Please create a pull request or open an issue.\n\n## Changelog\n\n### v1.4.0 (2026-02-06) - 🆕 Advanced Parameters\n- 🎛️ **New Parameters:** --log-level, --skip-*, --only-*, --max-packages, --timeout, --retry-count, --notification-webhook, --parallel-jobs\n- 🌍 **Environment Variables:** Full environment variable support (GENTOO_UPDATER_*)\n- 📝 **Documentation:** Updated help with examples and environment variable docs\n- ✨ **v1.4.0 Ready for PyPI:** All parameters fully implemented\n\n### v1.3.3 (2026-02-06) - 🌍 Mirror Logging\n- 🌍 **New Feature:** Mirror Logging\n  - Reads GENTOO_MIRRORS from `/etc/portage/make.conf`\n  - Displays all configured mirrors during repository sync\n  - Logs primary mirror to log file and JSON summary\n- 📊 Enhanced statistics with mirror information\n- 📝 Improved logging during repository sync\n\n## Author\n\nCreated for Gentoo Linux users\n\n## See Also\n\n- [Gentoo Wiki - Updating Gentoo](https://wiki.gentoo.org/wiki/Handbook:AMD64/Working/Portage#Updating_Gentoo)\n- [Gentoo Wiki - eix](https://wiki.gentoo.org/wiki/Eix)\n- [Gentoo Wiki - gentoolkit](https://wiki.gentoo.org/wiki/Gentoolkit)\n- [GitHub Repository](https://github.com/roimme65/gentoo-updater)\n- [Release Notes](https://github.com/roimme65/gentoo-updater/releases)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froimme65%2Fgentoo-updater","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Froimme65%2Fgentoo-updater","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froimme65%2Fgentoo-updater/lists"}