PHPスクリプトで "apt-get -y Upgrade"が期待どおりに機能するようにするにはどうすればよいですか?

PHPスクリプトで

はい、無人アップグレードについて知っていますが、そのパッケージの制限は気に入らません。次の呼び出しを実行するPHPスクリプトがあります。

...
system("/usr/bin/apt-get update");
system("/usr/bin/apt-get -y upgrade 2>&1 > /tmp/apt_get.txt");
system("/usr/bin/apt-get autoremove");
system("/usr/bin/apt-get autoclean");
...

スクリプトはcronを介してスケジュールに従って自動的に実行されるように設定されます。すべてのコマンドをrootとして正しく実行しているようです。ただし、/tmp/apt_get.txt の出力に示すように、「apt-get -y Upgrade」は実際にはアップグレードしません。

Reading package lists...
Building dependency tree...
Reading state information...
The following packages will be upgraded:
  iproute
1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 444 kB of archives.
After this operation, 1,024 B of additional disk space will be used.
Get:1 http://us.archive.ubuntu.com/ubuntu/ precise-updates/main iproute amd64 20111117-1ubuntu2.3 [444 kB] Fetched 444 kB in 1s (374 kB/s)

「apt-get アップグレード」を手動で実行すると、パッケージがダウンロードされたがインストールされていないと表示されます。

Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be upgraded:
  iproute
1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/444 kB of archives.
After this operation, 1,024 B of additional disk space will be used.
Do you want to continue [Y/n]? n
Abort.

したがって、apt-getはパッケージを正常にダウンロードしましたが、実際にアップグレードを実行しませんでした。このスクリプトが期待どおりに機能するために何を変更する必要がありますか? 「apt-get -y update」自体のバグのように見えます。 (ここではUbuntu 12.04.4 LTSを実行します。)

ベストアンサー1

編集したプロファイルを上書き/保存/比較するかどうかを尋ねるとします。この場合、DEBIAN_FRONTEND=noninteractive を追加する必要があります。

DEBIAN_FRONTEND=noninteractive apt-get -y upgrade

おすすめ記事