システムにDebian Jessie(AMD64withi386 multiarch)がインストールされています。ただし、インストールは可能ですが、インストールできないパッケージもあります。
インストールしようとしています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
[注:解決策は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
これは、問題のパッケージが古い安定版であることを示しています。 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
# 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-clientが表示されなくなった場合、システムでデバッグが非常に困難なものが破損していると思います。
また、次の結果全体を表示します。apt-getupdateは、最後の行だけでなく、全体が欠落しているエラーを示している可能性があります。
次のような方法で、ローカルのaptが知っていることをいつでも確認できます。
apt-cache show mysql-client
出力を注意深く調べます。
また:apt-cache policy mysql-client
apt update
が何らかの理由で更新に失敗していることは明らかです。上記のリポジトリの変更により、質問からいくつかの変数を削除することをお勧めします。
[Updated]注、sources.listの1行を修正しましたが、貼り付けた場合、失敗したのはこのアイテムだけでした。つまり、主なジェシーです。 main contrib non-freeローカルデータベースは、何らかの理由で正しく更新されていません。
Sources.listを変更し、apt-get update
をもう一度実行して、エラーを再度探します。 aptパッケージデータベースが更新に失敗していることは明らかです。
[Update 2]apt-get update
が機能していてエラーが表示されていない場合、および最終結果が表示された場合:貼り付けによる18.9 MBの更新最後に示すように、これは、問題がディスクへのデータの書き込みの失敗であり、apt自体がその失敗によるエラーメッセージを表示するために認識できない方法であることを強く示唆しています。
チェック:dmesg | grep apt-get
でエラーメッセージも確認します。 df -hT
を使用してシステムをチェックし、/ varパーティションaptが更新データを書き込んでいることを確認してください。/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で以前のディストリビューションまたはその他の覚えられていないイベントを使用するように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";
[UPDATE 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はパッケージを表示していません。どうして?あなたのシステムはジェシーではなくストレッチである安定に固定されているからです。
ピン留めを変更します。まず、そのピン留めが含まれているファイルを見つけます。
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 /ディレクトリでうまくいくでしょう。
Default-Releaseは/etc/apt/apt.conf.d/80Basicsに設定されています。Pinningは/etc/apt/preferences.d/80Basicsにあります。この場合、Pinnningは/ etc/apt/preferencesにあります。
基本的に、安定版にピン留めするようにaptに指示しました、そしてそれはあなたがそれをするように指示したことを忠実に実行しています、あなたのソースに安定版がないだけで、あなたは古い安定版を持っています。したがって、パッケージについて質問する場合は、jessieソースを更新した後、基本的にパッケージが見つからないことを忠実に通知してください。エラーが発生せず、更新が正常に機能し、パッケージデータベースが正常に更新され、パッケージにすべての更新がリストされているため、エラーは報告されませんが、残念ながら、ストレッチ(安定した)データが含まれていません。これは、実際のディストリビューション名の代わりに 'stable'を使用するリスクであり、実行したことを忘れがちであり、安定して古い安定版またはEOL安定版に変更するとさらに混乱します。通常はソースでsid/testing/stableを使用できますが、テストが新しいテストにロールし、stableがold stableになると失敗することがあるので、実際の名前はもちろん、変更されないsid。
ご覧のように、これが解決策であると私は信じています。再インストールはほとんど解決策ではありません。また、すべてが機能しているように見えるので、忘れていた場所に何かを設定したことを疑うようになり始めています。
固定は/ etc/apt/preferencesに行われると思います(jessieにpreferences.dが存在しなかったため)。
APTピニング:https://wiki.debian.org/AptPreferences
その結果、私は次のようなPinファイルを使用して、混合ディストリビューションに対してより保守的な「そう言った場合のみ」のアプローチを使用します。
パッケージ:*ピン:リリースa =テストピン優先度:900
パッケージ:*ピン:release o = Debianピン優先度:-10
したがって、すべてのdebianパッケージはデフォルトで優先度-10に設定され、テストは900ポイントのボーナスを受け取ります。これは振る舞いを呼び出します:
Apt_preferences(5)から
500 <P <= 990:ターゲットリリースに属する利用可能なバージョンがないか、インストールされているバージョンがより新しいものでない限り、バージョンがインストールされます[...] P <0:バージョンのインストールを禁止します
[...]
P <0:バージョンがインストールされないようにします
ご覧のとおり、安定していないものはすべて無視し(-10)、安定版(900)のみを使用するようにaptに指示したので、aptは指示どおりに動作しました。
これがsidやテストインストールではなく安定していることを考えると、一般的には-10ピン留めを使用せず、100や200のようなものを使用します。ただし、実際にさまざまなプールを実行している場合にのみ、ピン留めを使用しますストレッチとジェシー、またはsidとテスト。Jessieだけを使用している場合、それを使用することで混乱するほどの意味はありません。それでも、aptは基本的にピン留めを無視し、とにかくデフォルトリリースを使用します。たとえば、私のテストがあります。 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です。これは私が行ったものではなく、default-releaseを明示的に宣言したときにaptが行うことです。
https://manpages.debian.org/stretch/apt/apt_preferences.5.en.html
プリファレンスのストレッチmanページはかなり明確です。
Mysql-クライアントは言う
これは、デフォルトのMySQLクライアントメタパッケージに依存する移行MySQLデータベースです。安全に取り外すことができます。
Default-mysql-clientまたはdefault-mysql-client-coreが必要だと思います
前者は言う
MySQLは、高速で安定した真のマルチユーザー、マルチスレッドSQLデータベースサーバーです。 SQL(構造化クエリ言語)は、世界で最も人気のあるデータベースクエリ言語です。 MySQLの主な目標は、速度、堅牢性、使いやすさです。
このパッケージは、クライアントバイナリのデフォルト実装と、追加のツールinnotopおよびmysqlreportに依存します。
後者は言う
MySQLは、高速で安定した真のマルチユーザー、マルチスレッドSQLデータベースサーバーです。 SQL(構造化クエリ言語)は、世界で最も人気のあるデータベースクエリ言語です。 MySQLの主な目標は、速度、堅牢性、使いやすさです。
このパッケージは、Akonadiで使用されるコアクライアントファイルのデフォルト実装に依存しています。
/etc/apt/sources.list ftpをhttpに置き換えます。 apt-mirrors 遅かれ早かれ、これを行う必要があります。 rootとして、またはSudoを使用してフォローします。 dpkg --clear-avail
およびrm -f /var/lib/apt/lists/*
その後更新apt update && apt install mysql-client
ミラーにアクセスできません。多分 関連
ping -c 4 http://mirrors.kernel.org/
ping: unknown Host http://mirrors.kernel.org/
/etc/apt/sources.list
deb http://http.us.debian.org/debian/ jessie main contrib non-free
deb http://security.debian.org/ jessie/updates main contrib non-free
deb http://http.us.debian.org/debian/ jessie-updates contrib non-free main
dpkg --clear-avail
およびrm -f /var/lib/apt/lists/*
その後更新apt update && apt install mysql-client
_apt policy
_コマンドを実行できますか?_apt policy mysql-client
_が必要な場合は_apt policy mysql-client-5.5
_も実行できますか
また、pastebinit _apt install pastebinit
_をインストールしてから、この2つのコマンドを実行する必要があります_cat /etc/apt/sources.list | pastebinit -b paste.debian.net
_
また、_apt policy
_および_mysql-client-5.5apt policy mysql-client
_の出力を貼り付けたい場合もあります。
おそらく少し適切な固定を行う必要がありますが、これを解決します。また、キャッシュ_apt clean
_を消去することを忘れないでください。