web-dev-qa-db-ja.com

Canonicalのますます貧弱なQAに対処する戦略?

Canonicalが最近アップデートをプッシュしてからプルバックしているため、私のinstalled (local or obsolete)カテゴリーがいっぱいになっています。これは最近の2つのカーネルで発生し、今朝cupsで再び発生しました。私は約3年間Ubuntuを使用していますが、今年ほど頻繁に起こっていることを覚えていません。

それで、合理的にこれに対処する方法は?

更新プログラムを週に1回だけインストールすることを考えましたが、その週にチェックする直前にプッシュされた悪い更新プログラムを取得することはできません。

週末にのみ更新プログラムをインストールするのは良い戦略ですか?週末にはシステムの更新が頻繁にプッシュされないようです。金曜日の午後に悪いアップデートをプッシュし、月曜日の朝にそれをプルできると思います。

または、何らかの理由で更新が一定期間(2日間など)プッシュされるまで、更新をインストールしないでください。自動化する方法はありますか?

編集:影響を受けるシステムの1つはlinux-genericカーネルでLubuntu 16.04を実行し、他のシステムはlinux-generic-hwe-16.04カーネルでLubuntu 16.04を実行します。どちらもcupsバージョン2.13-4ubuntu0.2の更新の影響を受け、2017年3月27日にプッシュアウトされてから引き戻されました。linux-genericマシンはカーネル更新バージョン4.4.0.67.12を受け取りましたその後引き戻されました。また、この更新はsnapdバージョン2.23.1を孤立させましたlinux-generic-hwe-16.04マシンはカーネルバージョン4.8.0.42.14を受け取りましたが、それはその後孤立しました。

12
Organic Marble

抜本的な選択肢は、* buntuまたはその派生物ではなく、Debian Stableに切り替えることです。これは、Debian Stableが完全なQAプロセスを完了しているのに対し、UbuntuはDebian Testingから派生しているためです。

ほとんどすべての知識は直接譲渡できますが、Debianは最新の化粧品「ベルとホイッスル」を提供しません。ただし、リポジトリにはさらにパッケージがあります...

私はDebianに切り替えました。KDEの場合、約5年前にKubuntuから来て、同様の問題を抱えていました。しかし、それは個人的な選択に帰着します。

1
tiger99

パッケージの更新を古いバージョンにロールバックする

バージョン番号またはターゲットリリースがある場合、apt-getは特定のバージョンまたはターゲットリリースの選択をサポートします。

  1. Aptitudeをインストールする

    Sudo apt-get install aptitude
    
  2. パッケージの古いバージョンを表示します。

    aptitude versions <package-name> | less # use less to display only the top of the list of versions
    
  3. 選択したパッケージを古いバージョンにロールバックします。

    Sudo apt-get -t=<target release> install <package-name>  # target release is old version
    
  4. 選択したパッケージの不正な更新をアンインストールします。

    Sudo apt-get -t=<target release> remove <package-name> # target release is new version
    
  5. apt-mark holdを使用して、ロールバックされたパッケージバージョンが自動的に更新されないようにします。 apt-mark holdを使用して、パッケージを保留状態としてマークします。これにより、パッケージが自動的にインストール、アップグレード、または削除されなくなります。

    Sudo apt-mark hold <package-name>  
    

カーネルの更新を古いバージョンにロールバックします

前のセクションと同じ手順に従いますが、破損したカーネルパッケージをアンインストールする前に動作するカーネルバージョンがインストールされていることをテストする追加の手順に従う必要があります。残念ながら、これにはシステムの再起動が必要です。複数のシステムを保守している場合、これは面倒で時間がかかることがわかっているので、再起動については申し訳ありません。


aptitude versions <package-name>は現在インストールされているすべてのカーネルバージョンを表示しませんが、次のコマンドで現在インストールされているすべてのカーネルバージョンを表示できます。

dpkg-query -W -f='${Package}\n' | grep -f <(ls -1 /boot/vmlinuz* | cut -d- -f2,3)  

このコマンドの結果には、アンインストールする必要があるすべての動作していないカーネルパッケージのパッケージ名が一覧表示されます。

動作していないカーネルバージョンに属するパッケージをアンインストールすると、次のメッセージが表示されます。

The link /vmlinuz.old is a damaged link
Removing symbolic link vmlinuz.old 
 you may need to re-run your boot loader[grub]

Vmlinuz.oldは削除されたファイルにリンクされているため、このメッセージが表示されます。したがって、次のコマンドを実行してgrubを更新する必要があります。

Sudo update-grub
0
karel