ubuntu-sdk 14.04 のアップデート後に依​​存関係が壊れる

ubuntu-sdk 14.04 のアップデート後に依​​存関係が壊れる

今日やろうとしたsudo apt-get dist-upgradeところ、この状態になりました:

$ sudo apt-get upgrade 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
  phablet-tools ubuntu-sdk
0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.

わかりました。ubuntu-sdk保留/保留されています。依存関係のためにインストールする新しいパッケージがある可能性があります。そのため、次を試しますdist-upgrade

$ sudo apt-get dist-upgrade 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following NEW packages will be installed:
  intltool
The following packages have been kept back:
  ubuntu-sdk
0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
Need to get 52.0 kB of archives.
After this operation, 245 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://dk.archive.ubuntu.com/ubuntu/ trusty/main intltool all 0.50.2-2 [52.0 kB]
Fetched 52.0 kB in 0s (872 kB/s)  
Selecting previously unselected package intltool.
(Reading database ... 343935 files and directories currently installed.)
Preparing to unpack .../intltool_0.50.2-2_all.deb ...
Unpacking intltool (0.50.2-2) ...
Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
Setting up intltool (0.50.2-2) ...

うーん...intltoolそこにインストールしただけなのでubuntu-sdk、もう一度試してみましょう。

$ sudo apt-get upgrade 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
  phablet-tools ubuntu-sdk
0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.

うーん…dist-upgradeまた?

$ sudo apt-get dist-upgrade 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
  ubuntu-sdk
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

まだ抑えられています...もう少し強制してみましょうsudo apt-get install...:

$ sudo apt-get install phablet-tools ubuntu-sdk
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 ubuntu-sdk : Depends: ubuntu-device-flash but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

それでは試してみましょうubuntu-device-flash:

$ sudo apt-get install ubuntu-device-flash
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 ubuntu-device-flash : Depends: click-ubuntu-policy but it is not installable
                       Depends: ubuntu-snappy-cli but it is not installable
E: Unable to correct problems, you have held broken packages.

とりあえず試してみましょうclick-ubuntu-policy。今のところあまり期待はしていませんが:

$ sudo apt-get install click-ubuntu-policy
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package click-ubuntu-policy is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'click-ubuntu-policy' has no installation candidate

素晴らしいですね。どうやらclick-ubuntu-policyリポジトリにはもう存在しないようですが、ubuntu-device-flashパッケージにはまだ依存関係が残っています。

この場合、どのような対処法が推奨されますか?

答え1

apt-getmanページより

dist-upgrade はアップグレード機能を実行するだけでなく、パッケージの新しいバージョンとの依存関係の変更もインテリジェントに処理します。apt-get には「スマート」な競合解決システムがあり、必要に応じて、重要度の低いパッケージを犠牲にして最も重要なパッケージをアップグレードしようとします。そのため、dist-upgrade コマンドは一部のパッケージを削除する場合があります。/etc/apt/sources.list ファイルには、必要なパッケージ ファイルを取得する場所のリストが含まれています。

dist-upgradeアップグレードするために新しいパッケージをインストールしようとしますが (do とは反対にupgrade)、そのパッケージが/etc/apt/sources.listファイルにリストされている場所のいずれかで利用可能であることがわかった場合にのみインストールできます。リポジトリにパッケージがない場合、どうやって見つけるのでしょうか。パッケージが見つからない場合は、アップグレードされず、パッケージが保留されます。

これがあなたのケースで起こったことです。click-ubuntu-policyパッケージは信頼できる公式リポジトリでは利用できません(そして、これまでも利用できませんでした)。ここpackages.ubuntu.comで確認してください) は、 の新しいバージョンが に依存しており、 の既知のリポジトリでは が利用できないubuntu-device-flashため、アップグレードされません。click-ubuntu-policyapt

click-ubuntu-policyただし、のPPA またはリポジトリ ソースを追加するとtrusty、パッケージをアップグレードできますubuntu-device-flash。ただし、これはお勧めしません。

私の提案としては、Ubuntu には の新しいバージョンが含まれているので、リポジトリでもすぐに利用できるようになるのではないかubuntu-device-flashと思います。click-ubuntu-policy

関連情報