Debian Jessie 설치에서 일부 패키지를 사용할 수 없는 이유는 무엇입니까?

Debian Jessie 설치에서 일부 패키지를 사용할 수 없는 이유는 무엇입니까?

나는 데비안 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

[참고: 해결책은 업데이트 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의 한 줄을 수정했지만 붙여넣은 내용에 이것이 실패한 유일한 항목인 것으로 나타났습니다. 이는 귀하의 주요 jessie 주요 기여 비자유 로컬 데이터베이스가 어떤 이유로 올바르게 업데이트되지 않았음을 의미합니다.

source.list를 수정하고 apt-get update다시 실행한 후 오류를 다시 찾아보세요. 분명히 적절한 패키지 데이터베이스를 업데이트할 수 없습니다.

[업데이트 2]작동 중이고 apt-get update오류가 표시되지 않고 최종 결과가 18.9MB 업데이트로 표시되고 붙여넣기가 표시되면 이는 문제가 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/ 디렉토리에서 제대로 작동할 것입니다.

기본 버전은 다음 위치에 설정되어 있습니다: /etc/apt/apt.conf.d/80Basics 고정 위치: /etc/apt/preferences.d/80Basics 귀하의 경우에는 /etc/apt/preferences에서 수정되었습니다.

기본적으로 당신은 안정에 고정하기 위해 적절하게 지시하고 그것은 당신이 지시한 것을 성실하게 수행할 것입니다. 당신은 소스에 안정이 없고 이제는 오래된 안정을 갖게 됩니다. 따라서 패키지에 대한 정보를 요청하면 apt는 jessie 소스 코드를 업데이트한 후 기본적으로 패키지를 찾을 수 없음을 정중하게 알려줍니다. 오류가 발생하지 않았고, 업데이트가 제대로 작동하고, 패키지 데이터베이스가 제대로 업데이트되었으며, 패키지에 업데이트된 모든 콘텐츠가 나열되어 있기 때문에 오류가 보고되지 않습니다. 그러나 불행하게도 그 중 어느 것도 확장(안정적) 데이터를 포함하지 않습니다. 실제 릴리스 이름 대신 "stable"을 사용하면 위험합니다. 왜냐하면 수행한 작업을 잊어버리기 쉽고 안정 버전이 이전 안정 버전이나 EOL 안정 버전으로 변경되면 더욱 혼란스럽기 때문입니다. 일반적으로 소스에서 sid/testing/stable을 사용할 수 있지만 테스트가 새 테스트로 롤오버될 때 때때로 실패할 수 있으며 안정이 이전 안정이 되기 때문에 실제 이름이 제가 선호하는 것입니다. 물론 결코 변하지 않는 sid입니다.

나는 이것이 해결책이라고 믿습니다. 보시다시피 재설치는 거의 해결책이 아니며 분명히 모든 것이 잘 작동하고 있기 때문에 잊어버린 어딘가에 무언가를 구성했을 것이라는 의심이 점점 더 커지고 있습니다.

나는 수정 사항이 /etc/apt/preferences에 있을 것이라고 믿습니다(preferences.d가 귀하의 jessie에 존재하지 않기 때문에).

APT 수정됨: https://wiki.debian.org/AptPreferences

따라서 나는 하이브리드 배포에 대해 보다 보수적인 "내가 그렇게 말할 경우에만" 접근 방식을 사용하고 다음과 같은 Pin 파일을 사용합니다.

패키지: * 핀: 릴리스 a=테스트 핀 우선순위: 900

패키지: * 핀: 릴리스 o=Debian 핀 - 우선순위: -10

따라서 모든 데비안 패키지의 우선 순위는 기본적으로 -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

기본 설정에 대한 확장 매뉴얼 페이지는 매우 명확합니다.

답변2

MySQL 클라이언트가 말합니다

이는 기본 MySQL 클라이언트 메타패키지에 의존하는 임시 MySQL 데이터베이스입니다. 안전하게 제거할 수 있습니다.

default-mysql-client 또는 default-mysql-client-core가 필요하다고 생각합니다.

전자는 말했다

MySQL은 빠르고 안정적이며 진정한 다중 사용자, 다중 스레드 SQL 데이터베이스 서버입니다. SQL(Structured Query Language)은 세계에서 가장 널리 사용되는 데이터베이스 쿼리 언어입니다. MySQL의 주요 목표는 속도, 견고성 및 사용 편의성입니다.

이 패키지는 클라이언트 바이너리의 기본 구현과 innotop 및 mysqlreport 추가 도구를 사용합니다.

후자는 말했다

MySQL은 빠르고 안정적이며 진정한 다중 사용자, 다중 스레드 SQL 데이터베이스 서버입니다. SQL(Structured Query Language)은 세계에서 가장 널리 사용되는 데이터베이스 쿼리 언어입니다. MySQL의 주요 목표는 속도, 견고성 및 사용 편의성입니다.

이 패키지는 Akonadi에서 사용하는 핵심 클라이언트 파일의 기본 구현에 따라 다릅니다.

답변3

/etc/apt/sources.list에서 ftp를 http로 바꾸십시오.적절한 거울조만간 당신은 이것을 해야 합니다. 루트로 작동하거나 sudo를 사용하십시오. 새로고침 dpkg --clear-availrm -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-availrm -f /var/lib/apt/lists/* 새로고침 후apt update && apt install mysql-client

답변4

이 명령을 실행할 수 있나요? 필요한 경우 apt policy실행할 수도 있습니다.apt policy mysql-clientapt policy mysql-client-5.5

또한 Pastebinit를 설치 apt install pastebinit한 후 다음 두 명령을 실행 해야 합니다.cat /etc/apt/sources.list | pastebinit -b paste.debian.net

apt policy및의 출력을 붙여넣을 수도 있습니다 .mysql-client-5.5apt policy mysql-client

적절한 수정 작업을 수행해야 할 수도 있지만 해당 문제는 저희가 처리해 드리겠습니다. 또한 캐시를 지우는 것을 잊지 마세요 apt clean.

관련 정보