web-dev-qa-db-ja.com

「apt-get update」などのコマンドを定期的に実行する必要があるのはなぜですか?

私はUbuntuを初めて使用します。友人から、次のコマンドを頻繁に実行するように勧められました。

Sudo apt-get upgrade
Sudo apt-get update
Sudo apt-get autoremove
Sudo apt-get autoclean

彼は、これが何らかの形で私のシステムをきれいに更新し続けると言った。これらのコマンドが正確に何をするのかわかりません。それらを定期的に実行することは本当に便利ですか?

5
pecka

現在サポートされているすべてのバージョンのUbuntuでは、apt-getの代わりにaptを使用できます。出力をファイルにキャプチャする場合は、apt-getを使用しますが、そうでない場合は、出力が読みやすい(入力が好きな人は?)のでaptを使用します。

Sudo apt update

リポジトリから情報をダウンロードします 1 APTは、リポジトリの変更を反映するために、使用可能、インストール、およびアンインストールされたパッケージのdpkgデータベースをチェックおよび更新するように構成されています。これは、次のようなコマンドを使用してシステム上のデータベースを照会する場合を意味します

apt policy package-name
apt show package-name
apt search package-name

正確な情報を出力し、次のようなコマンドを実行すると

Sudo apt install package-name

利用可能な最新バージョンを取得します。

Sudo apt updateを実行すると、一部のパッケージがアップグレード可能であることがわかります。これは、リポジトリに新しいバージョンが追加されたことを意味します。多くの場合、新しいバージョンにはバグ修正とセキュリティ更新が含まれているため、インストールする必要があります。これは、コマンドで利用可能な新しいバージョンを持つすべてのパッケージをアップグレードすることで実行できます

Sudo apt upgrade

カーネルがアップグレードされた場合(linux-image-4.15.0-20-genericなどのパッケージ)、古いカーネルバージョンを削除するコマンドを実行する必要があります(新しいバージョンがバグの場合に備えて、予備として保持されている2番目に新しいバージョンを除く)。次のコマンドを使用できます。

Sudo apt autoremove

それをするために。このコマンドは、孤立したパッケージも削除しました。これらは通常、次のようなコマンドを使用する場合にのみ存在します

Sudo apt remove package-name

およびpackage-nameには自動的にインストールされた依存関係がありますが、他のパッケージには必要ありません。

autocleanについては、man apt-getを参照します

autoclean (and the auto-clean alias since 1.1)
       Like clean, autoclean clears out the local repository of retrieved
       package files. The difference is that it only removes package files
       that can no longer be downloaded, and are largely useless.

他の3つのコマンドは非常に重要であり、通常はシステムを安全に更新し、古いカーネルファイルでディスクをいっぱいにしないために定期的に実行する必要がありますが、autocleanを実行しても大きな違いは見られません。たまに削除される可能性のあるいくつかのファイルは、あまり多くありません。


1これらのリポジトリはデフォルトで設定されているため、通常は何もする必要はありません。これらは、ファイル/etc/apt/sources.listおよび/etc/apt/sources.list.dのファイルにリストされています。 APTは(セキュリティ上の理由から)これらのファイルの形式に厳格であり、構文に誤りがあるとエラーをスローします。システムにグラフィカル環境がある場合、設定でリポジトリを構成するオプションがあります。そのジョブを実行するには、root権限が必要です。

8
Zanna

ザンナの答え はこれらのコマンドの目的をカバーしていますが、2番目の部分に焦点を当てたいと思います。

それらを定期的に実行することは本当に便利ですか?

それらを実行するのは良いことですがしばしば十分です、私はそれらを文字通り定期的に実行する理由は見当たりません1週間、1か月に1回)。

  • これらのコマンドによって実行される更新タスクとクリーンタスクは、時間ベースでは作成されません。これらは、インストールされたパッケージの新しいバージョンがリポジトリで見つかると便利になり始めます。

  • apt-get updateコマンドは、デフォルトでシステムによって定期的に実行されます( 自動パッケージ更新AutomaticSecurityUpdates を参照)。 apt-get upgradeによってインストールされるセキュリティ更新プログラムも、無人アップグレードによって自動的にインストールされます。

  • 自動updateはすべてのパッケージに適用されます。 APTが自動的にインストールされない更新について知ると、システムはそれらを手動でインストールするように通知します(apt install <package>またはapt upgradeを使用してそれらをすべてアップグレードします)、例えば:

    • cLIログイン画面で:

      Welcome to Ubuntu 16.04.4 LTS (GNU/Linux 4.4.113-rt128+ x86_64)
      ...
      29 packages can be updated.
      6 updates are security updates.
      
    • APTコマンドの出力:

      $ Sudo apt update
      ...
      5 packages can be upgraded. Run 'apt list --upgradable' to see them.
      
  • autoremoveも実行するように通知されます。

    $ Sudo apt update
    ...
    The following packages were automatically installed and are no longer required:
      devilspie libturbojpeg:i386 libxrandr-ltsr2 language-pack-kde-en
    Use 'apt-get autoremove' to remove them.
    

それでも時間ベースでコマンドを実行する場合は、 cronそれらのタスク を作成できます。

2
Melebius