Skip to content
This repository was archived by the owner on Feb 18, 2026. It is now read-only.

scottlz0310-user/sysup

Repository files navigation

Warning

アーカイブ予定のお知らせ(2026-02-18) このリポジトリは近く GitHub 上で Archived(read-only)化します。既存ユーザー向けに理由と移行先を明記します。

理由

  • 本リポジトリの主要機能は devsync に統合済みのため。

移行先 / 代替手段

既存利用中の方は、必要に応じて devsync への移行をご検討ください。

sysup

システムと各種パッケージマネージャを統合的に更新するツール

Python 3.11+ License: MIT Code Coverage Code Quality

最新リリース: v0.10.0

概要

sysupは、複数のパッケージマネージャを一括で更新できるPython製のCLIツールです。 APT、Snap、Homebrew、npm、pnpm、Rustupなど、14種類のパッケージマネージャに対応しています。

特徴

  • 🚀 統合更新: 複数のパッケージマネージャを一度に更新
  • 🎨 美しい出力: Richライブラリによる見やすいターミナル表示
  • ⚙️ 柔軟な設定: TOML形式の設定ファイルで細かくカスタマイズ
  • 🔒 安全性: 多重実行防止、日次実行チェック、ドライランモード
  • 📊 統計情報: 更新結果のサマリー表示とログ保存
  • 🔔 デスクトップ通知: 更新完了時に通知を表示
  • 💾 バックアップ: 更新前にパッケージリストを自動バックアップ
  • ♻️ セルフアップデート: uv self update を自動実行し、uv 本体とツール双方を常に最新に維持
  • 🐧 WSL統合: WSL環境での自動実行設定
  • 並列更新: 複数のパッケージマネージャを同時に更新

対応パッケージマネージャ

Linux/macOS

  • APT - Debian/Ubuntu系パッケージマネージャ
  • Snap - Ubuntuスナップパッケージ
  • Flatpak - Linuxアプリケーション配布
  • Firmware - ファームウェア更新(fwupdmgr)
  • Homebrew - macOS/Linuxパッケージマネージャ

Windows

  • Scoop - Windowsパッケージマネージャ

クロスプラットフォーム

  • npm - Node.jsグローバルパッケージ
  • pnpm - 高速Node.jsパッケージマネージャ
  • nvm - Node Version Manager
  • pipx - Python CLIツール
  • uv tool - Python CLIツール(uvによる管理)
  • Rustup - Rustツールチェーン
  • Cargo - Rustパッケージ
  • Gem - Ruby gems

対応環境

  • Linux (Ubuntu, Debian, Fedora等)
  • macOS (Homebrew経由)
  • Windows (Scoop経由) ✨ v0.5.0で対応
  • WSL (Windows Subsystem for Linux)

インストール

前提条件

  • Python 3.11以上
  • uv または pipx
  • Linux、macOS、Windows、またはWSL環境

Windows環境での追加要件

  • Scoop: Windowsパッケージマネージャ
# Scoopインストール
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression

GitHubから直接インストール(推奨)

# uvで
uv tool install git+https://github.com/scottlz0310/sysup.git@v0.10.0

# pipxで
pipx install git+https://github.com/scottlz0310/sysup.git@v0.10.0

ローカル開発モード

git clone https://github.com/scottlz0310/sysup.git
cd sysup
uv venv --python 3.13
uv pip install -e .

使い方

クイックスタート

最初に設定ウィザードを実行してください:

# 対話型ウィザードで設定
sysup init

詳細は 設定ガイド を参照してください。

基本的な使い方

# 全ての有効な更新を実行
sysup update

# ドライラン(実際には更新しない)
sysup update --dry-run

# 今日既に実行済みでも強制実行
sysup update --force

# 利用可能なupdaterを一覧表示
sysup update --list

# ヘルプ表示
sysup --help

# WSL自動実行をセットアップ
sysup update --setup-wsl

新機能(v0.4.0)

品質向上

  • テストカバレッジ87.41%達成(目標80%超過)
  • 全公開APIにDocstring整備(Googleスタイル)
  • CodeQL自動スキャン導入
  • Secret Scanning + Push Protection有効化
  • Dependabot依存関係管理
  • SECURITY.md作成(脆弱性報告方針)
  • CI/CDカバレッジゲート有効化(80%閾値)

詳細は CHANGELOG を参照してください。

v0.3.0の機能

WSL自動実行設定

WSL環境でログイン時に自動的にシステム更新を実行できます:

# WSL自動実行をセットアップ
sysup --setup-wsl

詳細は WSL自動実行設定ガイド を参照してください。

デスクトップ通知

更新完了時にデスクトップ通知を表示します(Linux/macOS)。

[notification]
enabled = true
on_success = true
on_error = true
on_warning = false

バックアップ機能

更新前にパッケージリストをJSON形式でバックアップします。

[backup]
dir = "~/.local/share/sysup/backups"
enabled = true

バックアップは ~/.local/share/sysup/backups/ に保存されます。

並列更新

複数のパッケージマネージャを同時に更新して高速化:

[general]
parallel_updates = true

ログローテーション

古いログファイルを自動的に削除します:

[logging]
retention_days = 30  # 30日以上古いログを削除

設定ファイル

設定ファイルは ~/.config/sysup/sysup.toml に配置します。

# 設定ディレクトリを作成
mkdir -p ~/.config/sysup

# サンプルをコピー
cp config/sysup.toml.example ~/.config/sysup/sysup.toml

# 編集
vim ~/.config/sysup/sysup.toml
[updaters]
# Linux専用
apt = true
snap = true
flatpak = true
firmware = true

# Windows専用
scoop = true

# クロスプラットフォーム
pipx = true
npm = true
pnpm = true
nvm = true
rustup = true
cargo = true
gem = true
brew = true

[logging]
dir = "~/.local/share/sysup"
level = "INFO"

[general]
dry_run = false
cache_dir = "~/.cache/sysup"

設定ファイルのサンプルは config/sysup.toml.example を参照してください。

実行例

$ sysup --dry-run

╔════════════════════════════════════════╗
║     sysup システム更新                ║
╚════════════════════════════════════════╝

=== システムチェック ===
ℹ ディスク容量: 923.7GB 利用可能
ℹ ネットワーク接続: OK

=== パッケージ更新 ===
ステップ 1/7: APTを更新中 (14%)
ℹ APT パッケージリストを更新中...
✓ APT パッケージリスト更新完了
...

=== 更新サマリー ===
✓ 成功: 7 件
ℹ 実行時間: 45秒
✓ 全ての更新が正常に完了しました

トラブルシューティング

sudo権限が必要

一部のupdater(APT、Snapなど)はsudo権限が必要です。事前にsudo -vで認証しておくとスムーズです。

Cargoパッケージの更新ができない

Cargoパッケージを更新するにはcargo-updateが必要です:

# 依存関係をインストール(Ubuntu/Debian)
sudo apt install build-essential pkg-config libssl-dev

# cargo-updateをインストール
cargo install cargo-update

libgit2.so.1.9 が見つからないエラー

cargo install-update -a 実行時に error while loading shared libraries: libgit2.so.1.9: cannot open shared object file が表示される場合、libgit2 の共有ライブラリが不足しています。Ubuntu/Debian 系であれば以下で解決できます:

sudo apt install libgit2-1.9

nvmが検出されない

nvmをgit経由でインストールすることを推奨します:

# 公式インストールスクリプト
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash

# シェルを再起動
source ~/.bashrc

特定のupdaterを無効化したい

設定ファイル(~/.config/sysup/sysup.toml)で該当するupdaterをfalseに設定してください。

ログの確認

ログは ~/.local/share/sysup/ に保存されます。

開発

開発環境のセットアップ

git clone https://github.com/scottlz0310/sysup.git
cd sysup
uv venv --python 3.13
uv pip install -e ".[dev]"

テスト実行

uv run pytest

コード品質チェック

# Linter
uv run ruff check .

# Formatter
uv run ruff format .

# 型チェック
uv run basedpyright

ライセンス

MIT License - 詳細は LICENSE を参照してください。

貢献

貢献を歓迎します!詳細は CONTRIBUTING.md を参照してください。

関連ドキュメント

作者

scottlz0310

謝辞

元のBashスクリプト up.sh からPython版への移行プロジェクトです。

About

システムと各種パッケージマネージャを統合的に更新するツール

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors