$ strawberry
17:50:33.254 INFO main:165 Strawberry is already running - activating existing window (1)
17:50:38.256 WARN unknown Connection timed out
17:50:38.256 ERROR main:168 Could not send message to primary instance.
어떤 이유에서인지 Strawberry는 인스턴스가 실행 중이라고 생각하고 연결 시간이 초과되었습니다. 아무것도 실행되고 있지 않기 때문입니다.
루트로 부팅을 시도했습니다(그러나 소리가 나지 않으며 루트로 실행하는 것은 어쨌든 해결책이 아닙니다).
Strawberry 자체를 포함하여 Strawberry와 관련된 모든 파일이 지워졌지만 새로 설치한 후에도 오류가 지속되었습니다.
$ strawberry --version
Strawberry 1.0.23
$ pgrep -f strawberry
(no output)
$ ps aux | grep '[s]trawberry'
(no output)
$ cat /etc/os-release command
NAME="Linux Mint"
VERSION="21.2 (Victoria)"
ID=linuxmint
ID_LIKE="ubuntu debian"
PRETTY_NAME="Linux Mint 21.2"
VERSION_ID="21.2"
VERSION_CODENAME=victoria
UBUNTU_CODENAME=jammy
코드에서 이 오류 메시지를 찾았지만 문제를 해결하는 데는 도움이 되지 않았습니다.
https://github.com/strawberrymusicplayer/strawberry/blob/master/src/main.cpp
CommandlineOptions options(argc, argv);
{
// Only start a core application now, so we can check if there's another instance without requiring an X server.
// This MUST be done before parsing the commandline options so QTextCodec gets the right system locale for filenames.
QCoreApplication core_app(argc, argv);
KDSingleApplication single_app(QCoreApplication::applicationName(), KDSingleApplication::Option::IncludeUsernameInSocketName);
// Parse commandline options - need to do this before starting the full QApplication, so it works without an X server
if (!options.Parse()) return 1;
logging::SetLevels(options.log_levels());
if (!single_app.isPrimaryInstance()) {
if (options.is_empty()) {
qLog(Info) << "Strawberry is already running - activating existing window (1)";
}
if (!single_app.sendMessage(options.Serialize())) {
qLog(Error) << "Could not send message to primary instance.";
}
return 0;
}
}
답변1
의심한 대로 스트로베리 는 잠금 파일을 어딘가에 배치했는데, 그 잠금 파일은 배치되지 않았습니다 /home/
./tmp/
이 두 파일을 삭제하는 중...
/tmp/kdsingleapp-username-strawberry
/tmp/kdsingleapp-username-strawberry.lock
...이 문제를 해결했습니다.