回答:
debian-administration.orgの記事によると、
アップグレードを実行するために新しいパッケージをインストールする必要があるように、インストールしたパッケージのいずれかで依存関係が変更された場合、「保持」としてリストされます。
慎重な解決策1:
パーパブロの答え、あなたが実行することができsudo apt-get --with-new-pkgs upgrade
、それが保管バックパッケージをインストールします。
これには、キープバックされたパッケージを「手動インストール」としてマークしないという利点があります。これにより、ユーザーの介入が強制される可能性があります(コメントを参照)。
Pabloのソリューションがうまく機能する場合は、賛成してください。そうでない場合は、問題点をコメントしてください。
慎重な解決策2:
慎重な解決策は実行することsudo apt-get install <list of packages kept back>
です。ほとんどの場合、これにより、正常にアップグレードするために必要なものがキープバックパッケージに提供されます。
積極的なソリューション:
より積極的な解決策は、実行することですsudo apt-get dist-upgrade
。これにより、これらの新しい依存関係が強制的にインストールされます。
しかしdist-upgrade
、非常に危険です。アップグレードとは異なり、パッケージを削除して複雑な依存関係の状況を解決する場合があります。あなたとは異なり、APTはこれらの追加や削除が破壊をもたらすかどうかを知るほど十分に賢いわけではありません。
ですから、「慎重な解決策は」動作しない場所で自分自身を見つける場合dist-upgrade
も動作する...しかし、あなたはおそらくインストールして除去することにより、APTについてもう少し学習し、「手で」依存関係の問題を解決する方がいいでしょうケースバイケースでパッケージ。
車を修理するようなものだと考えてください。時間があり、レンチを手元に置いておくと、自分で読んで修理をすることで安心できます。運がよければ、いとこdist-upgrade
と一緒に車を降ろして、彼女が自分のものを知っていることを願うことができます。
dist-upgrade
以下の他の回答の多くが指摘しているように、安定したシステムでの使用について警告するために更新する必要があります。個人的に私は昇進必要簡素/安全な答えがあると思います:<PKGSのリスト>インストールapt-getの
sudo apt-get dist-upgrade
も削除できることに注意してください。そのため、を実行するときは、同意する前に行われる変更のリストを常に検査するのが最善sudo apt-get dist-upgrade
です。
apt-get upgrade
パッケージを削除することさえできますか?そうしないと、バージョンの競合が発生する場合に常に実行されます。llvm3.6
対を考えてくださいllvm3.6v5
(「v5」はでコンパイルされたことを意味しますgcc 5
)。これら2つを共存させることはできません。どちらか一方のみをシステムに保持できます。そのdist-upgrade
ため、一部のパッケージも削除される場合がありますが、それだけdist-upgrade
ではありません。特定の状況でupgrade
は、同様に。
コマンドapt-get upgrade
からメッセージを受け取るたびに
The following packages have been kept back:
次に、ディストリビューションアップグレードを実行せずに、キープバックされたパッケージの1つまたはすべてをアップグレードするには(dist-upgrade
正しく覚えている場合はこれが行われます)、次のコマンドを発行します。
apt-get install <list of packages kept back>
これにより、未解決の問題が解決され、他の回答で説明されているように、追加パッケージなどのインストールが要求されます。
apt-get upgrade <list of packages>
でやり直した場合apt-get upgrade
、必要に応じて問題のパッケージがリストされ、apt autoremove
それらを削除するために使用できるようにapt-get upgrade
なります。控えめに...非常に奇妙な。何かご意見は?
apt-get install
ひどい依存関係の状況を解決するために必要なときにパッケージを削除しますか、またはapt-get remove
アップグレードプロセスのその部分を達成するために別のコマンドを実行する必要がありますか?
apt autoremove
次に、これらの未使用の依存関係を削除します。
sudo apt-get --with-new-pkgs upgrade
と思われる方は、パッケージがインストールされ、手動でマークする原因の影響を持っていない
apt-get dist-upgrade
安定した環境には危険です
ユースケース:カーネルのアップグレードを控え、単にカーネルをアップグレードしたいだけで、ディストリビューション全体をアップグレードしたくない。
保持されたパッケージを処理するより良い方法:
sudo aptitude
パッケージを保持している場合は、リストの上部にアップグレード可能なパッケージが表示されます。
保持されたバックパッケージがインストールされています。
apt-get dist-upgrade
に悪いリポジトリがある場合にのみ危険です/etc/apt/sources.list*
。すべてのパッケージをdist-upgrade
アップグレードすることに注意してください。ただし、デフォルトのリポジトリでは問題ありません。いない使用して、あなたがセキュリティアップデートを見逃す可能性があるため、危険である可能性があります。dist-upgrade
apt-get dist-upgrade
でき取り除くだけでなく、パッケージを追加するが、それは本当に危険ではありません。あらゆるパッケージのインストールコマンドは、重大な損傷を引き起こす可能性がありますあなたはあなたの中に問題がある場合はsources.list
、ファイルを!通常のapt-get upgrade
コマンドは、有効なソフトウェアソースからパッケージをインストールします。dist-upgrade
このように一意ではありません。さらに、バグ831768が修正されていないリリースでaptitude
は、少なくともamd64で何らかの操作を実行するために使用することは、実行するよりもはるかに危険です。apt-get dist-upgrade
sudo aptitude safe-upgrade
このUnix SEの答えを試さない理由:
sudo apt-get --with-new-pkgs upgrade
これにより、新しいパッケージをインストールできます。どのパッケージがインストールされるかを知らせ、実際にインストールを行う前にプロンプトを表示します。
apt
コマンド(優しい代替するにはapt-get
、このオプションを共有します)。
apt install <pkg>
代わりに使用すると、pkgが「手動でインストールされた」とマークされます!! 「自動インストール」として再度マークするには、使用しますapt-mark auto <pkg>
(サブコマンドも参照showmanual
)。この回答の詳細。
apt-mark auto <pkg>
パッケージを自動的にインストールされたものとしてマークするためにのみ必要です(ここではmanページ)。
sudo apt-get --with-new-pkgs upgrade
、パッケージが「保持された」とまだ表示されます。エラーメッセージはありません。
通常、このメッセージが表示される理由は2つあります。
プログラムを(を介してsudo apt-get upgrade
)アップグレードすると、パッケージが追加または削除される場合、プログラムは保留されます。sudo apt-get dist-upgrade
この場合は、追加のプログラムを追加または削除することを提案する場合に使用できます。
これは非常に一般的であり、通常は問題ではありません。時折(特にUbuntuアルファ版の場合)、dist-upgrade
他の多くのプログラムを削除するように提案されますが、その場合はおそらくキャンセルする必要があります。
プログラムが利用できないパッケージまたはバージョンに依存している場合、プログラムは保留されます。パッケージは基本的にアンインストール可能であるため、この状況で待つ以外に何もできません。これは、パッケージが順番どおりにリポジトリに追加されたとき、パッケージの名前が変更されたとき、またはパッケージが仮想パッケージの提供を停止したときに発生します。
apt-get dist-upgrade
をインストールすることさえ拒否しました。aptitudeでパッケージを検査したところ、利用できないパッケージに依存していることがわかりました。私は待つ必要があると思います。
また試すことができます:
sudo aptitude safe-upgrade
。
「full-upgrade
元々dist-upgradeという名前だった」よりも安全です。「パッケージは未使用でなければ削除されない」からです。
からman aptitude
:
安全なアップグレード
インストール済みパッケージを最新バージョンにアップグレードします。インストールされたパッケージは、使用されていない限り削除されません/.../現在インストールされていないパッケージは、-no-new-installsコマンドラインオプションが提供されない限り、依存関係を解決するためにインストールされます。
これらのパッケージをインストールすると依存関係の不整合が発生するため、ほとんどの場合、これらのパッケージは差し控えられています。これは、現在開発中のppasでアーカイブを使用しているため、または使用するミラーが完全に更新されていないために発生する可能性があります。
最後のケースでは、依存関係が解決されてから次回インストールされるのを待ちます。
編集:
別の可能性があります。パッケージが保留されている場合、またはパッケージが固定されている場合、パッケージが保留される可能性があります。
dist-upgrade
。そうする必要はまったくありません。それでもやりたい場合はdist-upgrade
、インストールする新しいパッケージと削除するパッケージを見てから先に進んでください。
apt-get install --reinstall <packages>
。
これは通常、パッケージに依存関係が追加されており、アップグレードでは許可なく依存関係が追加されないためです。
実行する場合:
sudo apt-get install gimp gimp-data libgegl-0.0-0 libgimp2.0
次に、新しいバージョンを新しい依存関係とともにインストールする必要があります。
これは私のために働いた
sudo aptitude full-upgrade
aptitude upgrade
私のためにさえ働いた。
Ubuntu 14.04
私は使用していますが、aptitude
コマンドラインはありません
apt-get dist-upgrade
同じメッセージをくれましたが、これで解決しました。別のパッケージのアップグレードを壊していたパッケージがありました。私はインストールしたものを必要としなかったので、aptitude full-upgrade
他のすべてをアップグレードできるようにそれを削除するオプションを与えました。
バージョンがわずかに異なる場合、aptitudeはパッケージのアップグレードでより良い仕事をすることがわかりました。私はこのような状況がありました:
me@compy:/etc/apt$ apt-cache policy gzip
gzip:
Installed: 1.3.5-15
Candidate: 1.3.5-15+etch1
Version table:
1.3.5-15+etch1 0
500 http://archive.debian.org etch/main Packages
*** 1.3.5-15 0
100 /var/lib/dpkg/status
これにより、apt-getは更新を保留しましたが、aptitudeはそれを問題なく更新しました。パッケージを更新する必要があるかどうかを判断するためにどのアルゴリズムが使用されているかわかりません。これら2つは同じバージョンで、異なる「修飾子」のみを持っていると思います。しかし、いずれにしても、apt-getは更新しませんが、aptitudeは更新します。
私の場合、保留されたパッケージは、linux-headersとkernelに関連したパッケージでした。通知領域に赤い感嘆符が付いていて、パッケージを更新できないという問題を解決しようとすることで、私はこれに至りました。
それを解決するために、dist-upgradeも手動のapt-get install xxxも使用する必要はありませんでした。
私がやったことや助けたことは、シンプルできれいです。
sudo apt-get update
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get upgrade
Grubの更新とその構成を手動で確認する必要がありました。
その後、しばらくの間コンピューターを操作したところ、最終的にカーネルと関連する「Ubuntuベース」セクションを含む標準の更新ダイアログが再び表示されました。更新は問題なく実行され、保留されたパッケージはもう表示されません。
また、カーネルの更新を含む* buntuの更新は休止状態に敏感であることを念頭に置くことが非常に重要です。この問題は何度か発生し、マシンを再起動して上記の手順を実行することで常に解決します。
おそらくこれで十分でしょうか?!
(ここに記載されている状況は、2015年12月末のXubuntu 15.10に関連しています)
これは、保持されたパッケージを再インストールする正しい方法のように見えます。
apt-get install --reinstall libjpeg-progs
少なくともこれはlibjpeg-progs
、Ubuntu 14.04から16.04にアップグレードした後にスタックしたときにうまくいきました。他の保存されたアプリ、例えばでも同じことができると確信していますgimp
。
ソース:https : //ubuntuforums.org/showthread.php?t=2321702&p=13476183#post13476183
--reinstall
でもできます。
私はすべての投稿を読みましたが、多くの興味深い説明があることがわかりました。私はそれらのすべてを試していましたが、完全に結果がありませんでした。mysql-utilitiesに問題があり、アップグレードできませんでした。更新はシステムによって提案されました。だから、私はそれを行うためのいくつかの手順を示したいです。もちろん、前述の投稿のすべてをしばらく繰り返します。ここに私の間違いがあります。はい、すでに存在する投稿で見つけましたが、次に何をすべきでしょうか?
次のステップは次のとおりです。
sudo apt-get --purge remove mysql-utilities
下の画像で確認できる結果。パッケージを削除し、コマンドでこれを確認します。
sudo apt-get -f install
結果-すばらしい!その後、この新しいバージョンのパッケージを正しくインストールしました。
このように、他のパッケージを使用して同じ手順を実行できるため、より多くの新しい人々に役立つと思います。
一度、他の投稿をいくつかの場所で繰り返したとき、すみません。
{}
し、エディターのボタンを押して適切にフォーマットします。
Ubuntu 18.04は、のapt
代わりに使用できる新しい、合理化された構文を提供しますapt-get
。
sudo apt full-upgrade
sudo apt upgrade
sources.list(5)で設定されたソースから現在システムにインストールされているすべてのパッケージの利用可能なアップグレードをインストールするために使用されます。依存関係を満たすために必要な場合、新しいパッケージがインストールされますが、既存のパッケージは削除されません。パッケージのアップグレードでインストール済みパッケージの削除が必要な場合、このパッケージのアップグレードは実行されません。
sudo apt full-upgrade
アップグレードの機能を実行しますが、システム全体をアップグレードする必要がある場合、現在インストールされているパッケージを削除します。