こちら Google Chromeのサイレント自動更新を有効にする方法を読みました。ただし、Spotify、Dockyなど、サイレントアップデートを有効にしたい他のリポジトリがあります。
Ubuntu 10.04システムでこれを実行しようとしています。しかし、この質問はすべてのUbuntuバージョンに当てはまります。 無人アップグレードパッケージがインストールされています。
これどうやってするの?
まず、gksu
をインストールします。
Sudo apt-get install gksu
システムで無人アップデートを有効にする最も簡単な方法は、50unattended-upgrades
内の/etc/apt/apt.conf.d/
ファイルをお気に入りのテキストエディターで編集することです。次に例を示します。
gksu gedit /etc/apt/apt.conf.d/50unattended-upgrades
その中で、Allowed Originsブロックのコメントセクションをコメントアウトする必要があります
変化する
Unattended-Upgrade::Allowed-Origins {
"${distro_id} ${distro_codename}-security";
// "${distro_id} ${distro_codename}-updates";
// "${distro_id} ${distro_codename}-proposed";
// "${distro_id} ${distro_codename}-backports";
};
に
Unattended-Upgrade::Allowed-Origins {
"${distro_id} ${distro_codename}-security";
"${distro_id} ${distro_codename}-updates";
// "${distro_id} ${distro_codename}-proposed";
// "${distro_id} ${distro_codename}-backports";
};
更新したいUbuntuリポジトリにないソフトウェアの場合、Originおよびarchiveを追加する必要がありますファイルに。 PPAに対応するものを見つけるには、/var/lib/apt/lists/
フォルダーを開きます。これは、各パッケージリソースの状態情報の保存領域です。探しているのは、名前がReleaseで終わるファイルです。
テキストエディタ、つまりGoogle Chromeで開きます:
gedit /var/lib/apt/lists/dl.google.com_linux_chrome_deb_dists_stable_Release
Origin: Google, Inc.
Label: Google
Suite: stable
Codename: stable
Version: 1.0
Date: Thu, 17 Nov 2011 19:09:01 +0000
Architectures: i386 AMD64
Components: main
Description: Google chrome-linux repository.
Originは明らか(Origin: Google, Inc.
)で、アーカイブは行の下にあるものSuite(Suite: stable
)になります。
Origin
またはSuite
のいずれかが欠落している場合、それらは空の文字列になります。ただし、bothが欠落している場合、おそらく、同じソースの他のソースを含めない限り、そのソースを無人アップグレードで使用することはできません。
これらの2行を書き留めたら、50unattended-upgrades
ファイルを編集し、この例の"<Origin>:<archive>";
の"Google\, Inc.:stable";
の形式を使用して行を追加する必要があります。
Google ChromeのOriginには、エンドポイントとカンマが含まれていますが、ほとんどのReleaseファイルは読みやすくなります。
別の例として、 Node JS source は、アーカイブではなくオリジン(Node Source
)を指定します。 "Node Source:";
と一致させることができます。
Allowed Originsは、シェルスタイルのワイルドカードを使用して一致します(より具体的には、Pythonの fnmatch() )。競合するソースを含めないように十分に注意していれば、"Node *:*";
のようなものを書くことができます。
編集する前に50unattended-upgrades
ファイルのバックアップを作成することを忘れないでください。Sudo cp /etc/apt/apt.conf.d/50unattended-upgrades /etc/apt/apt.conf.d/50unattended-upgrades.bak
を使用してください。
ファイルで行われた変更をテストするには、Sudo unattended-upgrades
をパラメーター--dry-run
および--debug
とともに使用できます。
--dry-run
は無人アップグレードサイクルを実行しますが、実際にはアップグレードをインストールせず、すべてが正常であることを確認および検証するだけです。
--debug
は詳細モードを有効にします。
unattended-upgrades
で/var/log/unattended-upgrades/unattended-upgrades.log
のログをいつでも確認できます。
ファイル/etc/apt/apt.conf.d/10periodic
を編集することにより、無人アップグレードの構成を変更できます。構成のオプションは/etc/cron.daily/apt
スクリプトヘッダーにあります。それらを読んで、無人アップグレードの頻度を設定してください。
@Bruno Pereiraの回答の自動化されたアプローチ:(回答が役立つ場合は、githubリポジトリにスターを付けることを検討してください。)
コードリンク: https://github.com/abhigenie92/unattended_upgrades_repos
追加するリポジトリを確認します。
$ python automatic_upgrade.py
Add repos:
"Ubuntu:xenial";
"LP-PPA-kubuntu-ppa-backports:xenial";
"LP-PPA-tuxonice:xenial";
"LP-PPA-webupd8team-sublime-text-3:xenial";
Skipping files due to not present Origin or suite. Or Origin being a url.:
packagecloud.io_slacktechnologies_slack_debian_dists_jessie_InRelease
tiliado.eu_nuvolaplayer_repository_deb_dists_xenial_InRelease
次に/etc/apt/apt.conf.d/50unattended-upgrades
を編集してそれらを含めます:
// Automatically upgrade packages from these (Origin:archive) pairs
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
"${distro_id}:${distro_codename}-updates";
"${distro_id}:${distro_codename}-proposed";
"${distro_id}:${distro_codename}-backports";
"Ubuntu:xenial";
"LP-PPA-kubuntu-ppa-backports:xenial";
"LP-PPA-tuxonice:xenial";
"LP-PPA-webupd8team-sublime-text-3:xenial";
};
....
....
それらが含まれているかどうかを確認します。
$ Sudo unattended-upgrade --dry-run --debug
Initial blacklisted packages:
Initial whitelisted packages:
Starting unattended upgrades script
Allowed origins are: ['o=Ubuntu,a=xenial-security', 'o=Ubuntu,a=xenial-updates', 'o=Ubuntu,a=xenial-proposed', 'o=Ubuntu,a=xenial-backports', 'o=Ubuntu,a=xenial', 'o=LP-PPA-kubuntu-ppa-backports,a=xenial', 'o=LP-PPA-tuxonice,a=xenial', 'o=LP-PPA-webupd8team-sublime-text-3,a=xenial']
pkgs that look like they should be upgraded:
Fetched 0 B in 0s (0 B/s)
fetch.run() result: 0
blacklist: []
whitelist: []
No packages found that can be upgraded unattended and no pending auto-removals
/etc/apt/apt.conf.d/50unattended-upgrades
を編集して、次を追加します。
Unattended-Upgrade::Origins-Pattern {
"Origin=*";
};
これにより、すべてのパッケージの無人アップグレードが可能になります。
次の link で、cronに自動更新を開始させるための再実行を強制する手順があります。 cronを停止する手順はこちら
Sudo service anacron stop
Sudo service cron stop
Sudo rm -rf /var/run/unattend* /var/run/cron* /var/run/anacron*
Sudo rm -rf /var/lib/apt/periodic/*
cronを再起動して自動更新をすぐに(または少なくとも数時間以内に)実行するには
Sudo service cron start
Sudo anacron -fn
仕組み
いくつかのことがトリガーになります。
Cronによる/etc/cron.daily
の実行、特に/etc/cron.daily/apt
から実行されます。 Cronは/etc/cron.daily
を午前6時25分に実行します(/etc/crontab
を参照)
Anacronは新興企業から実行されますか?そして、5分のアップタイム後に/etc/cron.daily
を起動します(/etc/anacrontab
を参照)
注APT::Periodic::RandomSleep
は/etc/apt/apt.conf.d/10periodic
で設定できますが、デフォルトは1800秒(30分)であるため、/etc/cron.daily/apt
の実行後30分まで更新は行われません。
ログ
機能する場合は、/var/log/unattended-upgrades
というフォルダーにログが記録されます。