web-dev-qa-db-ja.com

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

システムに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
4
naitsirch

[注:解決策はUpdate 2のデータで発見され、下部で説明されています。

この問題を診断するには、障害が発生している場所を特定する必要があります。

まず、これを試してみてください。ソースの点で何か問題があるようです。これらをソースに置き換えて、設定が再び機能するようになったら、逆方向にデバッグします。

https://packages.debian.org/search?keywords=mysql-client&searchon=names&suite=oldstable&section=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ページはかなり明確です。

4
Lizardx

Mysql-クライアントは言う

これは、デフォルトのMySQLクライアントメタパッケージに依存する移行MySQLデータベースです。安全に取り外すことができます。

Default-mysql-clientまたはdefault-mysql-client-coreが必要だと思います

前者は言う

MySQLは、高速で安定した真のマルチユーザー、マルチスレッドSQLデータベースサーバーです。 SQL(構造化クエリ言語)は、世界で最も人気のあるデータベースクエリ言語です。 MySQLの主な目標は、速度、堅牢性、使いやすさです。

このパッケージは、クライアントバイナリのデフォルト実装と、追加のツールinnotopおよびmysqlreportに依存します。

後者は言う

MySQLは、高速で安定した真のマルチユーザー、マルチスレッドSQLデータベースサーバーです。 SQL(構造化クエリ言語)は、世界で最も人気のあるデータベースクエリ言語です。 MySQLの主な目標は、速度、堅牢性、使いやすさです。

このパッケージは、Akonadiで使用されるコアクライアントファイルのデフォルト実装に依存しています。

1
user8779

/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

0
user192526

_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_を消去することを忘れないでください。

0
MarkoShiva