Debian Jessieのインストールで一部のパッケージが利用できないのはなぜですか?

Debian Jessieのインストールで一部のパッケージが利用できないのはなぜですか?

私はDebian Jessie(AMD64そしてi386マルチアーキテクチャ)が私のシステムにインストールされました。ただし、インストールする必要がありますがインストールできないパッケージもあります。

インストールしようとしていますが、mysql-client次のエラーが発生します。

$ apt-get install mysql-client
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package mysql-client is a virtual package provided by:
mysql-client-5.5 5.5.57-0+deb8u1 [Not candidate version]
mysql-client-5.5 5.5.55-0+deb8u1 [Not candidate version]

E: Package 'mysql-client' has no installation candidate

インストールしようとすると、mysql-client-5.5次の情報が表示されます。

$ apt-get install mysql-client-5.5
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package mysql-client-5.5 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

私のsources.list外観は次のとおりです。

deb http://ftp.de.debian.org/debian/ jessie main contrib non-free
deb http://security.debian.org/ jessie/updates main contrib non-free
deb http://ftp.de.debian.org/debian/ jessie-updates main contrib non-free
deb https://dl.winehq.org/wine-builds/debian/ jessie main

この奇妙な動作をどのように解決できますか?

修正する

apt-cache search mysqlこのパッケージのみを印刷してください。これは私に合わないようです。

akonadi-backend-mysql - MySQL storage backend for Akonadi
libreoffice-base-drivers - Database connectivity drivers for LibreOffice
libmysqlclient18 - MySQL database client library
mysql-common - MySQL database common files, e.g. /etc/mysql/my.cnf
mysql-server-core-5.5 - MySQL database server binaries
php5-sqlite - SQLite module for php5
libqt4-sql-mysql - Qt 4 MySQL database driver
librdf0 - Redland Resource Description Framework (RDF) library
rsyslog - reliable system and kernel logging daemon

ベストアンサー1

[注:解決策はUpdate 2データで見つかり、下部に適切に固定されて説明されています。 ]

この問題を診断するには、エラーが発生した場所を確認する必要があります。

まず試してみてください。ソースコードに問題があるようです。したがって、これを次のコードに置き換えて、ジョブ設定が再び完了したら、逆にデバッグしてください。

https://packages.debian.org/search?keywords=mysql-client&searchon=names&suite=oldstable§ion=all

正確なヒットパッケージ mysql-client

jessie (oldstable) (database): MySQL database client (metapackage depending on the latest version)
5.5.57-0+deb8u1 [security]: all
also provided by: mysql-client-5.5

その他のクリックパッケージ mysql-client-5.5

jessie (oldstable) (database): MySQL database client binaries
5.5.57-0+deb8u1 [security]: amd64 arm64 armel armhf i386 mips mipsel powerpc ppc64el s390x

これは、問題のあるパッケージが以前のバージョンにあることを示します。 source.list を次に変更します。

#deb http://ftp.de.debian.org/debian/ jessie main contrib non-free
#deb http://security.debian.org/ jessie/updates main contrib non-free
#deb http://ftp.de.debian.org/debian/ jessie-updates main contrib non-free
# try these instead:
deb http://mirrors.kernel.org/debian jessie main contrib non-free
deb http://security.debian.org/ jessie/updates main contrib non-free
# and your wine repo
deb https://dl.winehq.org/wine-builds/debian/ jessie main

保存したら、次の操作を行います。apt-get update

それから:apt-cache search mysql

あなたのmysqlクライアントが現在表示されていない場合は、システムにデバッグするのが非常に困難な問題が発生しています。

また、全体の結果を表示してください。 apt-get updateは最後の行だけでなく内容全体を更新するため、欠落しているエラーが表示されることがあります。

次のように、お住まいの地域のアパートが何を知っているかをいつでも確認できます。

apt-cache show mysql-client

出力を再確認してください。

返品:apt-cache policy mysql-client

apt update更新できない理由が何であれ、問題か​​らいくつかの変数を削除するためにリポジトリに上記の変更を適用することをお勧めします。

【書き直す】あなたのコンテンツを更新するためにresources.listの1行を修正しましたが、貼り付けたものにこれが失敗した唯一のものであることがわかりました。これは、あなたの主要なjessieの主な貢献非自由ローカルデータベースが何らかの理由で正しく更新されていないことを意味します。

source.listを修正してapt-get update再実行した後、エラーをもう一度見つけてください。明らかに、適切なパッケージデータベースを更新できません。

[アップデート2]動作中にapt-get updateエラーが表示されず、最終結果が18.9 MBのアップデートとして表示され、貼り付けが表示されている場合、これは問題がapt自体と同じ方法でディスクにデータを書き込むことができないことを強く示唆しています。この失敗によってエラーメッセージが表示されることがわかりません。

確認:dmesg | grep apt-getエラーメッセージがあるかどうかを確認してください。df -hTaptが更新されたデータを書き込む/ varパーティションがいっぱいになっていないことを確認してください。 / varを含むパーティションでfsckを実行します。

再インストールしてもハードウェアエラーは解決されないため、問題を解決することを望んで再インストールするよりも、エラーの原因を特定する方が良いかもしれません。

aptデータベースの権限を変更した人はいますか?

以下を確認してください(特にファイルサイズに注意してください)。

ls -l /var/cache/apt
# the results should look like this:
drwxr-xr-x 3 root root   147456 Jul 22 16:50 archives
-rw-r--r-- 1 root root 32808269 Aug 13 16:15 pkgcache.bin
-rw-r--r-- 1 root root 32088021 Aug 13 16:15 srcpkgcache.bin

また、最後の変更日は、apt-get updateを実行するたびに変更する必要があります。

さらなる調査:

ls -l /var/lib/apt/lists/

すべてのリポジトリは、apt-get updateから取得した関連データとともに表示する必要があります。または、あなたの場合は明らかにインポートされたが、更新されていません。

検索を繰り返します。apt-cache search mysql-clientこれまでのように何も表示されないか、何かが表示されるはずです。

次へ:/ etc / aptで以前のリリースやその他の記憶されていないイベントを使用するための適切なデフォルト設定を設定していないことを確認してください。

cd /etc/apt
cat apt.conf apt.conf.d/* preferences preferences.d/*

これにより、次のファイルに設定されているすべての設定が返されるはずです(例:)。

APT::Default-Release "buster";
APT::Get::AutomaticRemove "0";
APT::Get::HideAutoRemove "1";

[アップデート3 - 解決しましたか? ]

上記の/etc/apt catのユーザー設定は問題を示しています。すぐに明らかでしたが、推測することはできませんでしたが、Stretchの新しい安定版以降、Jessieの以前の安定版を実行するためのヒントは次のとおりです。追加のテストがなくても修正するかどうかを確認するのに十分なはずです。

// Use apt bandwidth limit feature, this example limits the download
// speed to 70kb/sec
//Acquire::http::Dl-Limit "70";
// Pre-configure all packages with debconf before they are installed.
// If you don't like it, comment it out.
DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt || true";};
Package: *
Pin: release a=stable [***** my emphasis]
Pin-Priority: 900

Package: *
Pin: release o=Debian
Pin-Priority: -10
cat: preferences.d/*: No such file or directory

今これは意味があります。技術的な問題やハードウェアの問題はありませんが、aptにはパッケージが表示されません。なぜ?システムは安定した状態で固定されているため、jessieではなく拡張されています。

ピンを変更するには、まずピンを含むファイルを見つけます。

grep -snR 'Pin: release a=stable' /etc/apt

その後、「stable」を「jessie」に変更すると、すべてが正常に戻ります。

しかし、これを次のように変更する必要があると思います(aの代わりにnを参照してください。nはバージョン名です)。

Pin: release n=jessie

おそらくこの行を/etc/apt/apt.confに追加するかもしれませんが、あなたの場合は必要ありません。

APT::Default-Release "jessie";

https://manpages.debian.org/stretch/apt/apt_preferences.5.en.html

Jessieはまだすべての.dディレクトリを持っていないと思うので、ファイルがどこにあるべきかを覚えていません。おそらく.d/ディレクトリで正常に動作します。

デフォルトのバージョンは次の場所に設定されています。

基本的に、あなたは安定に固定するために適切に指示し、それはあなたが指示したことを誠実に行います。あなたはソースに安定がなく、今は古い安定を持っています。したがって、パッケージに関する情報を要求すると、aptはjessieソースコードを更新した後、デフォルトでパッケージが見つからないことを丁寧に伝えます。エラーが発生せず、更新が正常に機能し、パッケージデータベースが正しく更新され、パッケージに更新されたすべてのコンテンツが一覧表示されているため、エラーは報告されません。しかし、残念ながら、それらのどれも拡張(安定)データを含みません。実際のリリース名の代わりに「stable」を使用すると危険です。これは、実行した作業を忘れやすく、安定版が以前の安定版またはEOL安定版に変更された場合、さらに混乱するためです。通常、ソースでsid / test / stableを使用できますが、テストが新しいテストにロールオーバーされたときに失敗することがあり、安定が以前の安定になるため、実際の名前が私の好みです。もちろん決して変わらないsidです。

私はこれが解決策だと思います。見てわかるように、再インストールはほとんど解決策ではなく、明らかにすべてがうまく機能しているので、忘れてしまったどこかに何かを構成しただろうという疑問がますます大きくなっています。

私は修正が/etc/apt/preferencesにあると思います(preferences.dがあなたのjessieには存在しないため)。

APT修正済み: https://wiki.debian.org/AptPreferences

したがって、私はハイブリッド展開のためのより保守的な「私がそう言う場合にのみ」アプローチを使用し、次のPinファイルを使用します。

パッケージ:*ピン:リリースa =テストピン優先順位:900

パッケージ: * ピン: リリース o=Debian ピン - 優先順位: -10

したがって、すべてのDebianパッケージの優先順位はデフォルトで-10であり、テストには900ポイントが補償されます。これにより、次の動作が呼び出されます。

apt_preferences(5)から

500<P<=990: 対象バージョンに属する利用可能なバージョンがないか、インストールされているバージョンが最新バージョンでない限り、バージョンをインストールします。 [...] P < 0 : そのバージョンがインストールされないようにします。

[...]

P < 0:このバージョンのインストールを防ぎます。

ご覧のとおり、基本的にすべての不安定な項目(-10)を無視し、安定した項目(900)のみを使用するようにaptに指示したので、aptは指示どおりに行いました。

これがSIDやテストインストールではなく安定したインストールであることを考えると、通常は固定に-10を使用せず、100または200などの値を使用します。しかし、私は実際にはさまざまなプール(StretchとJessie、またはsidとテストなど)を実行するときにのみ固定を使用します。 Jessieだけを使用する場合は使用する必要はなく、適切な固定はデフォルトで無視され、基本バージョンは次のとおりです。たとえば、テストを900に固定しましたが、デフォルトバージョンに設定すると、apt-cacheポリシーに次のように表示されます。

apt-cache policy nano
nano:
  Installed: 2.7.4-1
  Candidate: 2.8.6-1
  Version table:
     2.8.6-2 300
        300 http://mirrors.kernel.org/debian unstable/main i386 Packages
     2.8.6-1 990
        990 http://mirrors.kernel.org/debian buster/main i386 Packages
 *** 2.7.4-1 100
        100 /var/lib/dpkg/status

ご覧のとおり、固定値は990です。これは私がしたことではなく、基本リリースを明示的に宣言するときにaptがすることです。

https://manpages.debian.org/stretch/apt/apt_preferences.5.en.html

デフォルト設定の拡張マニュアルページは非常に明確です。

おすすめ記事