私は仕事のために新しいラップトップを買いましたが、私はめちゃくちゃになりました。
私はどのようにこのような状況に陥ったのですか?
私の毒の設定を除いて、すべてが完璧です。簡単に言うと、すべてを試したようですが、同僚が同じハードウェアを使用できるにもかかわらず、私のラップトップと2つの外部モニタで動作するようにDisplayLink設定を取得することはできません。最高の解像度でインターレースしかない画面があり、DisplayLinkが不要になったことがわかりました5.18.0-3-amd64
。フォローするこのガイド。 3番目のモニターでは機能しませんが、インターレースなしで最高の解像度を使用できるようになりました。それは私にとって十分です。
しかし、aptを使って何かをインストールしようとするたびにいくつかの問題が発生することがわかりました。ただDebianの不安定なソースのコメントを外してみたところ、効果がありました。
しかし今? apt は多くの削除を試みます。 0.5GBを削除しようとしています。私はそれをグーグルしてこれができないことを知りました、そしてそれを詳しく見ました。私はofcを中断し、それがカーネルアップグレードであることを知っていました(Debianが提供する最新バージョンがあるからです5.10.0-16-amd64
)
ダウングレードガイドを見つけようとしています。 " "を実行し、apt install --fix-broken
まだインストールされている古いカーネルで再起動しましたが、デスクトップ環境ではなくコンソールにあることがわかりました。そのパッケージはすべて削除されました。 :) 今はdpkgを含む何もインストールできません。 dpkgのデータベースが破壊されますか?
さらに:linux-headers-5.18.0-3-common_5.18.14-1_all.deb
VirtualBoxに必要であり、aptと連携させることができなかったため、dpkgを使用してすべての依存関係を手動でインストールしました。だから私は試してみましたがうまくいきました。これがどのように邪魔になるのかわかりません。
間違い
検索してみましたが、今何をすべきかわかりませんでした。インストール/アップグレードの観点から試したすべての結果は次のとおりです。
The following packages have unmet dependencies:
libtext-charwidth-perl: Depends: perlapi-5.34.0 but it is not installable
libtext-iconv-perl: Depends: perlapi-5.34.0 but it is not installable
perl: Breaks: perl-modules-5.24 but 5.24.1-3+deb9u7 is installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).
正直言って、私はそれが何を意味するのか分からない。調査するほど、混乱しています。今はGoogleに何をすべきかわかりません。
私が試したこと
ダウングレード。これが私がすべきことだと思いますが、どうすればいいのかわかりません。すべてのパッケージをインストール可能なバージョン(Debian 11リリースの標準など)にダウングレードすることを見つけましたが、それに近いものが見つかりませんでした。 「パッケージ=バージョン」と書かれたチュートリアルだけが見つかります。私はこのパッケージを検索し、perlapiは仮想パッケージPerl-baseでaptとwgetを介してバージョン5.34.0をインストールしようとしました。https://packages.debian.org/sid/amd64/perl-base/downloadそしてdpkg -i
しかし、アートはこう言いました。
E: Version '5.34.0' for 'perl-base' was not found
私は...インストールできないと言っていますが、一部のフォーラムソリューションでは手動でインストールするように求められています。なぜこのバージョンが必要なのかわかりません。私は標準の適切なソースと一緒にカーネル5.10を使用しています(追加のソースを追加および削除するすべてを試しました):
deb http://packages.hs-regensburg.de/debian/ bullseye main contrib non-free
deb-src http://packages.hs-regensburg.de/debian/ bullseye main contrib non-free
deb http://security.debian.org/debian-security bullseye-security main contrib non-free
deb-src http://security.debian.org/debian-security bullseye-security main contrib non-free
deb http://deb.debian.org/debian unstable main contrib non-free
deb-src http://deb.debian.org/debian unstable main contrib non-free
dpkgが言った。
dpkg: regarding perl-base_5.34.0-5_amd64.deb containing perl-base:
perl-base breaks libfile-spec-perl (<< 3.8000)
perl provides libfile-spec-perl and is present and installed.
dpkg: error processing archive perl-base_5.34.0-5_amd64.deb (--install):
instaling perl-base would break perl, and
deconfiguration is not permitted (--auto-deconfigure might help)
Errors were encountered while processing:
perl-base_5.34.0-5_amd64.deb
--自動設定解除は役に立ちません。
今は何が問題なのかよくわかりません。私は完全に迷子になった。 <:C 何もインストールできず、「Debianの再インストール」もオプションではないことに注意してください。私はいつもそれをやりません。必要なものがあればご要望いただければ提供するよう努力いたします。
修正する
私はWindowsでSSHとPuttyを介してテキストを送信できました(以前にすべてを入力したとき)。
追加情報は次のとおりです。 https://pastebin.com/XNKLMRkB
アップデート2
これらの依存関係の問題を解決するために、完了していないaptコマンドを考えました。
apt install libtext-charwidth-perl=0.04-10+b1 perl-base=5.32.1-4+deb11u2 libtext-iconv-perl=1.7-7+b1 perl=5.32.1-4+deb11u2 perl-modules-5.32=5.32.1-4+deb11u2
これが私が得るものです:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
perl is already the newest version (5.32.1-4+deb11u2).
perl-modules-5.32 is already the newest version (5.32.1-4+deb11u2).
perl-modules-5.32 set to manually installed.
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
perl : Breaks: perl-modules-5.24 but 5.24.1-3+deb9u7 is to be installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).
とにかくDebian 9 5.24が必要だと思います(Stephen Kittがすでに指摘したように、ありがとう)。簡単に最新バージョンを試してみましたが、詰まったこのバージョンが完成しました否定的な優先順位、削除または何らかの方法でバイパスそれ。何も動作しません:C私は一歩遅れていると思います。進む方法を知る必要があります。
削除試行中のdpkgエラー:
dpkg: dependency problems prevent removal of perl-modules-5.24:
libmailtools-perl depends on libnet-perl; however:
Package libnet-perl is not installed.
Package perl-modules-5.24 which provides libnet-perl is to be removed.
Package perl which provides libnet-perl is not configured yet.
libmailtools-perl depends on libtest-simple-perl; however:
Package libtest-simple-perl is not installed.
Package perl-modules-5.24 which provides libtest-simple-perl is to be removed.
Package perl which provides libtest-simple-perl is not configured yet.
libmailtools-perl depends on libnet-perl; however:
Package libnet-perl is not installed.
Package perl-modules-5.24 which provides libnet-perl is to be removed.
Package perl which provides libnet-perl is not configured yet.
libmailtools-perl depends on libtest-simple-perl; however:
Package libtest-simple-perl is not installed.
Package perl-modules-5.24 which provides libtest-simple-perl is to be removed.
Package perl which provides libtest-simple-perl is not configured yet.
libhttp-date-perl depends on libtime-local-perl (>= 1.28); however:
Package libtime-local-perl is not installed.
Package perl-modules-5.24 which provides libtime-local-perl is to be removed.
Package perl which provides libtime-local-perl is not configured yet.
dpkg: error processing package perl-modules-5.24 (--remove):
dependency problems - not removing
Errors were encountered while processing:
perl-modules-5.24
欠落しているすべてのパッケージを構成しようとすると、次のようになります。
dpkg: dependency problems prevent configuration of perl:
perl depends on perl-base (= 5.32.1-4+deb11u2); however:
Version of perl-base on system is 5.34.0-5.
perl-base (5.34.0-5) breaks perl (<< 5.34.0~) and is installed.
Version of perl to be configured is 5.32.1-4+deb11u2.
dpkg: error processing package perl (--configure):
dependency problems - leaving unconfigured
Errors were encountered while processing:
perl
答え1
私は状況を把握できた。
さまざまなフォーラムで提案されているように、期待どおりに特定のバージョンを指定してパッケージを手動でダウングレードする必要がありました。幸い、この場合、その金額はそれほど多くはありません。
しかし、1つのパッケージにはまだ問題があります:perl-modules-5.24
このため、aptとdpgkはパッケージのアップグレードや削除さえ拒否します。 Perl-モジュール-5.24実際にDebian 9に属しています。
したがって、削除しても安全ですが、削除することはできません。
ダウングレードもできず、アップグレードもできませんね。
ループに閉じ込められていますが、幸いなことにdpkgを強制することができます。
これが私が問題を解決した方法です。
最初のステップ: 祈り
次のステップ: 神の助けを借りて…この回答、私はその愚かなパッケージを削除しました:
dpkg -r --force-depends perl-modules-5.24
私は/etc/apt/sources.listが正しいことを確認しました。
deb http://packages.hs-regensburg.de/debian/ bullseye main
deb-src http://packages.hs-regensburg.de/debian/ bullseye main
deb http://security.debian.org/debian-security bullseye-security main
deb-src http://security.debian.org/debian-security bullseye-security main
# bullseye-updates, to get updates before a point release is made;
# see https://www.debian.org/doc/manuals/debian-reference/ch02.en.html#_updates_and_backports
deb http://packages.hs-regensburg.de/debian/ bullseye-updates main
deb-src http://packages.hs-regensburg.de/debian/ bullseye-updates main
その後、次のものをインストールできます。
apt install libtext-charwidth-perl=0.04-10+b1 perl-base=5.32.1-4+deb11u2 libtext-iconv-perl=1.7-7+b1 perl=5.32.1-4+deb11u2 perl-modules-5.32=5.32.1-4+deb11u2
(以前のパッケージの一部がこのバージョンにすでにインストールされていると聞いたため、このパッケージはすべて必要ではありませんが、この手順では確認しています。)削除されたパッケージのバックアップの
リストを見てください。インストール後、彼らは戻ってきました:
apt install $(cat apt-autoremove-list | awk 'BEGIN {ORS=" "}; {for(i=0;i<=NF;i++){print $i}}')
幸いなことに、aptとdpkgはもうDebian 9パッケージについて心配する必要はありません。何が彼らをこのような状況に導いたのかわかりません...
デスクトップ環境に再起動できました... "my"
gnomeを再インストールする必要がありましたが、一部のパッケージで再度問題が発生しました。
今回は「壊れた」ではなく、依然として不安定なパッケージの「新すぎる」パッケージを持っていました。だから、正しいバージョンを手動でインストールして、これらの問題を解決しました。
apt policy <package>
apt install <package>=<stable version>
そしてしかし、Puttyセッションでgnomeを再インストールし、インストール後に自分のラップトップに直接移動しました。
ホリー。 8時間が過ぎていよいよ寝る時間になりました。すべてを整理するのに数日かかりました。価値。 :)
あなたの貢献と迅速な答えに感謝します!
編集する:
最新バージョンのパッケージをインストールしようとするスクリプトを作成しました。今後は調整が必要になるかもしれませんが、私の役割は果たしました。
#!/bin/bash
installations=$(apt list --installed)
i="null"
packagesToInstall="";
# changable variables (don't change the ones above here)
debug=0
echo "Notice: Analyze this script's doings first, before you install anything, as apt still claims their CLI interface is not stable"
echo -e "\tAdjust this script if something goes wrong!!!\n\n"
getPackage() {
parray=(${1//// }) # replace slashes with spaces to convert it into an array
echo "${parray[0]}"
}
echo "collecting packages to install..."
for attribute in $installations; do
# skip "Listing... Done"
if [ "$i" == "null" ]; then
i=0
continue
fi
i=$(($i + 1))
# apt's output pattern upon developing this script:
#
# zlib1g-dev/stable,stable-security,now
# 1:1.2.11.dfsg-2+deb11u1
# amd64
# [installed]
# zlib1g/stable,stable-security,now
# 1:1.2.11.dfsg-2+deb11u1
# amd64
# [installed]
case "$i" in
"1")
package=$(getPackage "$attribute")
;;
"2")
oldVersion=$attribute
;;
"3")
architecture=$attribute
;;
"4")
status=$attribute
;;
"5")
i=1
unset "newVersion"
unset "correctVersion"
unset "correctVersions"
# get correct version
# https://serverfault.com/questions/1073939/debian-11-security-updates-deb-or-security-which-to-choose
# https://www.linuxheld.de/2021/11/08/upgrade-debian-buster-10-auf-debian-bullseye-11/
correctVersions=$(apt policy "$package" 2>/dev/null | grep " $(lsb_release -cs)/" -B 1)
correctVersion=$(echo "$correctVersions" | awk '{print $1}')
# if a version was found
if [[ "$correctVersion" != "*"* ]]; then
#echo "?$correctVersion?"
correctVersion=($correctVersion) # toArray
#echo "!$correctVersion!"
newVersion=${correctVersion[0]}
fi
if [ "$debug" == 1 ]; then
echo "package: $package"
echo "installed version: $oldVersion"
echo "architecture: $architecture"
echo "status: $status"
echo -e "new version: $newVersion\n"
#echo "$correctVersions"
fi
# do actions (install)
# if there is a new version available to install
if ! [ -z "$newVersion" ] && [ "$oldVersion" != "$newVersion" ]; then
packagesToInstall="$packagesToInstall"' '"'$package=$newVersion'"
fi
# continue
package=$(getPackage "$attribute") # 1 from case statement only gets executed the first time
unset "oldVersion"
unset "newVersion"
unset "correctVersion"
unset "correctVersions"
continue
;;
esac
#echo $install | awk '{print $2}'
done
echo -e "installing following packages with versions:\n"
for pti in $packagesToInstall; do
parray=(${pti//=/ })
if [ -z "$parray" ]; then
echo "$pti"
else
package="${parray[0]}"
version="${parray[1]}"
package=${package#*"'"}
version=${version%"'"*}
printf "$package:\t"
if [ "${#package}" -lt 7 ]; then
printf "\t\t\t\t"
elif [ "${#package}" -lt 15 ]; then
printf "\t\t\t"
elif [ "${#package}" -lt 23 ]; then
printf "\t\t"
elif [ "${#package}" -lt 31 ]; then
printf "\t"
fi
echo "$version"
fi
done
echo ""
read -p "Install all of these? [Y/n] " userWantsToInstall
userWantsToInstall=${userWantsToInstall,,} # https://stackoverflow.com/questions/1728683/case-insensitive-comparison-of-strings-in-shell-script
# ask before installation
if [ "$userWantsToInstall" == "y" ] || [ -z "$userWantsToInstall" ] || [ "$userWantsToInstall" == "yes" ]; then
if [ $(whoami) == "root" ]; then
echo "apt install --yes --force-yes $packagesToInstall"
else
echo "sudo apt install --yes --force-yes $packagesToInstall"
fi
else
echo -e "\nAborted"
exit
fi