web-dev-qa-db-ja.com

リポジトリのサイレント自動更新を有効にする方法は?

こちら Google Chromeのサイレント自動更新を有効にする方法を読みました。ただし、Spotify、Dockyなど、サイレントアップデートを有効にしたい他のリポジトリがあります。

Ubuntu 10.04システムでこれを実行しようとしています。しかし、この質問はすべてのUbuntuバージョンに当てはまります。 無人アップグレードパッケージがインストールされています。

これどうやってするの?

41
nik90

まず、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.)で、アーカイブは行の下にあるものSuiteSuite: 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スクリプトヘッダーにあります。それらを読んで、無人アップグレードの頻度を設定してください。

65
Bruno Pereira

@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
    
13
Abhishek Bhatia

/etc/apt/apt.conf.d/50unattended-upgradesを編集して、次を追加します。

Unattended-Upgrade::Origins-Pattern {
        "Origin=*";
};

これにより、すべてのパッケージの無人アップグレードが可能になります。

5
Zachary West

次の 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というフォルダーにログが記録されます。

3
Eleanor Ellis