sysupを定期的に自動実行する方法を説明します。
WSL環境では、起動時に自動実行する設定が便利です。
WSL起動時に自動的にsysupを実行します。
# uvでインストール
uv tool install git+https://github.com/scottlz0310/sysup.git
# または pipxで
pipx install git+https://github.com/scottlz0310/sysup.git# .bashrcを編集
vim ~/.bashrc
# 以下を末尾に追加
# sysup自動実行(WSL起動時)
if [[ -n "$WSL_DISTRO_NAME" ]]; then
# 今日まだ実行していない場合のみ実行
if command -v sysup >/dev/null 2>&1; then
# バックグラウンドで実行
(sysup --auto-run 2>&1 | logger -t sysup) &
disown
fi
fisource ~/.bashrcWindows側からWSLを定期実行します。
C:\Scripts\run-sysup.ps1を作成:
# WSLでsysupを実行
wsl -d Ubuntu -u $env:USERNAME -- bash -c "sysup --auto-run"- タスクスケジューラを開く
- 「基本タスクの作成」
- トリガー: 毎日、午前9時
- 操作: プログラムの開始
- プログラム:
powershell.exe - 引数:
-ExecutionPolicy Bypass -File C:\Scripts\run-sysup.ps1
- プログラム:
ネイティブUbuntu環境では、cronまたはsystemdタイマーを使用します。
# uvでインストール
uv tool install git+https://github.com/scottlz0310/sysup.git
# または pipxで
pipx install git+https://github.com/scottlz0310/sysup.gitcrontab -e
# 以下を追加(毎日午前9時に実行)
0 9 * * * /home/$USER/.local/bin/sysup --auto-run >> /home/$USER/.local/share/sysup/cron.log 2>&1注意: パスは環境に応じて調整してください。
tail -f ~/.local/share/sysup/cron.logより柔軟な設定が可能です。
~/.config/systemd/user/sysup.serviceを作成:
[Unit]
Description=System Package Update Service
After=network-online.target
Wants=network-online.target
[Service]
Type=oneshot
ExecStart=%h/.local/bin/sysup --auto-run
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=default.target~/.config/systemd/user/sysup.timerを作成:
[Unit]
Description=Run sysup daily
Requires=sysup.service
[Timer]
OnCalendar=daily
OnBootSec=5min
Persistent=true
[Install]
WantedBy=timers.target# systemdをリロード
systemctl --user daemon-reload
# タイマーを有効化
systemctl --user enable sysup.timer
# タイマーを開始
systemctl --user start sysup.timer
# 状態確認
systemctl --user status sysup.timer
systemctl --user list-timers# サービスログを確認
journalctl --user -u sysup.service -f
# 最新の実行ログ
journalctl --user -u sysup.service -n 50ラップトップなど、常時起動していないマシンに適しています。
sudo apt install anacronsudo vim /etc/anacrontab
# 以下を追加(1日に1回実行)
1 5 sysup.daily /home/$USER/.local/bin/sysup --auto-run自動実行では対話的にパスワードを入力できないため、sudo権限の設定が必要です。
sudo visudo
# 以下を追加(60分間有効)
Defaults timestamp_timeout=60セキュリティリスクがあるため、慎重に検討してください。sysupが実行するコマンドに絞って許可する例です。
# /etc/sudoers.d に専用ファイルを作成(構文チェック付き)
sudo visudo -f /etc/sudoers.d/apt-snap-nopasswd
# 以下を追加(YOUR_USERNAMEを実際のユーザー名に置換)
# sudoers内では$USERは展開されません
YOUR_USERNAME ALL=(ALL) NOPASSWD: /usr/bin/apt update, /usr/bin/apt upgrade -y, /usr/bin/apt autoremove -y, /usr/bin/apt autoclean, /usr/bin/snap refresh補足:
- sysupは
aptを使用します。apt-getを使う運用なら、同様に/usr/bin/apt-get ...を追加してください。 - ファイルの権限は
0440が推奨です(visudo -fで作成すれば問題ありません)。
WSL起動時にsudo認証を行います。
# .bashrcに追加
if [[ -n "$WSL_DISTRO_NAME" ]]; then
# sudo認証(バックグラウンドで)
sudo -v
fi自動実行用の設定ファイルを作成することをお勧めします。
# 設定ディレクトリ作成
mkdir -p ~/.config/sysup
# 設定ファイル作成
cat > ~/.config/sysup/sysup.toml << 'EOF'
[updaters]
apt = true
snap = true
flatpak = true
pipx = true
uv = true
npm = true
nvm = true
rustup = true
cargo = true
gem = true
brew = true
firmware = true
scoop = true
[logging]
dir = "~/.local/share/sysup"
level = "INFO"
[general]
dry_run = false
cache_dir = "~/.cache/sysup"
EOF# sysupのパスを確認
which sysup
# パスが正しいか確認
ls -la ~/.local/bin/sysup# 実行権限があるか確認
ls -la $(which sysup)
# 必要に応じて権限付与
chmod +x ~/.local/bin/sysup# sysupのログを確認
tail -f ~/.local/share/sysup/sysup_*.log
# systemdの場合
journalctl --user -u sysup.service -f
# cronの場合
tail -f ~/.local/share/sysup/cron.log# sudo権限をテスト
sudo -n true && echo "OK" || echo "NG"
# sudoタイムアウトを確認
sudo -l | grep timestamp_timeout# 日次実行チェックをリセット
rm ~/.cache/sysup/daily_run
# 強制実行
sysup --force- テスト実行: 自動実行設定前に手動で
sysup --auto-runをテスト - ログ監視: 初回は数日間ログを確認
- 通知設定: 重要な更新は通知を設定(今後実装予定)
- バックアップ: 重要なシステムは定期的にバックアップ
- 段階的導入: まずドライランモードでテスト