私はjessie debianシステム(より正確に言えばdevuan)を使用しています。これで、jessie-backportsとjessie-securityのバージョンからパッケージをインポートしようとしています。
しかし、私はaptが何をしているのかわかりません。
これが私が本当に見つけようとしていることです。ここで私に話す適切なものは何ですか?
私はASCIIに強制アップグレードする方法を知っています。私は今、私のシステムにjessie-backportsを使用するように管理しました。以下の説明では、aptが私に何を言おうとしているのかはまだわかりません。
私はaptの問題が何であるかを調べようとしています。なぜなら、今後も同じ問題が現れると確信しているからです(実際、他のシステムでこの問題を経験しました)。だから私よりも知っている人がいるなら、何が起こるのか説明してください...
私はgccで始まります:
# apt-cache policy libgcc1 gcc-4.9-base
libgcc1:
Installed: 1:4.9.2-10
Candidate: 1:4.9.2-10+deb8u1
Version table:
1:6.3.0-18+deb9u1 0
500 http://de.mirror.devuan.org/merged/ ascii/main amd64 Packages
1:4.9.2-10+deb8u1 0
991 http://de.mirror.devuan.org/merged/ jessie-security/main amd64 Packages
*** 1:4.9.2-10 0
600 http://de.mirror.devuan.org/merged/ jessie/main amd64 Packages
100 /var/lib/dpkg/status
gcc-4.9-base:
Installed: 4.9.2-10
Candidate: 4.9.2-10+deb8u1
Version table:
4.9.2-10+deb8u1 0
991 http://de.mirror.devuan.org/merged/ jessie-security/main amd64 Packages
*** 4.9.2-10 0
600 http://de.mirror.devuan.org/merged/ jessie/main amd64 Packages
100 /var/lib/dpkg/status
ご覧のとおり、一部が固定されています。私が理解したのは、「991」は、このパッケージが新しいものである限り、このパッケージを使用するという意味だと思います。私の完全な固定構成は次のとおりです。
/etc/apt/preferences.d# cat *
Package: *
Pin: release a=jessie-backports
Pin-Priority: 991
Package: *
Pin: release a=jessie-security
Pin-Priority: 991
Package: *
Pin: release a=stable
Pin-Priority: 600
Package: *
Pin: release a=ascii
Pin-Priority: 550
Package: *
Pin: release a=jessie-updates
Pin-Priority: 560
また、aptが「jessie-security」から少し新しいパッケージに切り替えられることを示す「candidate:」行をリンクします。
最初の驚きは次のとおりです。
# apt-get install -s gcc-4.9-base
The following packages have unmet dependencies:
libgcc1 : Depends: gcc-4.9-base (= 4.9.2-10) but 4.9.2-10+deb8u1 is to be installed
上記のようにaptを変更すると、jessie-securityからlibgcc1が自動的にインポートされ、上記の未満たされた依存関係が解決されると思います。
どうなりますか?
次の質問:
# apt-get install -s libgcc1 gcc-4.9-base
The following packages were automatically installed and are no longer required:
antiword crda cups-pk-helper eclipse-cdt-jni eclipse-platform-data
espeak-data fastjar firebird2.5-common firebird2.5-common-doc
fonts-freefont-ttf fonts-opensymbol gir1.2-atk-1.0 gir1.2-atspi-2.0
gir1.2-freedesktop gir1.2-gdkpixbuf-2.0 gir1.2-glib-2.0
...
何してるの?
これは確かに真実ではありません。明らかに私はここで何かを全く理解していません。より悪い:
The following extra packages will be installed:
cpp-4.9 gettext-base lib32gcc1 lib32stdc++6 libatomic1 libegl1-mesa-drivers
libgfortran3 libgomp1 libitm1 libobjc4 libosgi-compendium-java libquadmath0
libsoxr0
Suggested packages:
gcc-4.9-locales libosgi-compendium-java-doc
The following packages will be REMOVED:
adwaita-icon-theme ant ant-optional apt apt-file apt-listchanges
apt-show-versions apt-transport-https apt-utils aptitude aspectj aspell
aspell-de aspell-en astyle build-essential ca-certificates-java chromium
claws-mail claws-mail-i18n claws-mail-pdf-viewer claws-mail-pgpinline
...
したがって、この "apt-get install"コマンドは私のシステムの半分を削除します。
ここで何が起こっているのか分からない...
誰かがこれを説明できますか?
編集:誰かが混合バージョンを使用してはいけないと言いました。私はこれが私の問題とは関係がないと思います。しかし、一つは確かです。すべてのASCIIソースを削除し、すべてのASCII関連の修正を削除し、持っていたいくつかのパッケージをASCIIからJESSIEに再ダウングレードしました。これらすべてが一つのことを変えるわけではありません。実行すると
apt-get install -s libgcc1 gcc-4.9-base
aptは私のシステムの半分を削除すると報告します。
なぜ?
そして質問の最初の部分:aptを使用すると、libgcc1への依存関係が自動的に解決されないのはなぜですか?
apt-get install -s gcc-4.9-base
答え1
混在したソースのリストがあります:Jessieとascii(拡張)。
ファイルからASCIIを削除します。sources.list
ファイルから次の行を削除しますpreferences
。
Package: *
Pin: release a=ascii
Pin-Priority: 550
ランニング:
apt-get update
apt-get dist-upgrade
何ですか満たされていない依存関係?
パッケージのインストール中に特定の依存関係が満たされない場合、インストールは失敗します。これはv = 6.3.0-18 + deb9u1の正確なバージョンlibgcc1 (1:6.3.0-18+deb9u1)
によって異なります。gcc-6-base
現在インストールされているバージョンは6.3.0-18
満たされていない依存関係を解決するには?
あなたの場合、以前の安定版にピンの優先順位を付けると、1001
パッケージはjessieにアップグレード/ダウングレードされます。
Package: *
Pin: release a=jessie-security
Pin-Priority: 1001
Package: *
Pin: release a=stable
Pin-Priority: 1001
Package: *
Pin: release a=jessie-updates
Pin-Priority: 1001
その後、パッケージをアップグレードします。
apt-get update
apt-get dist-upgrade
場合によっては、インストールするパッケージの正確なバージョンで満たされていない依存関係の問題を解決する必要があります。
apt-get install gcc-4.9-base=4.9.2-10+deb8u1
apt-get install libgcc1
多くのパッケージが削除されるのはなぜですか?
適切にパッケージとその依存関係をインストールすると、パッケージが削除されると不要になり、自動的に削除されます。
時間の経過とともに自動的にインストールされた一部のパッケージは、そのパッケージに依存するパッケージが不要になるため、不要になります。同じライブラリの最新バージョンを使用している場合、別のライブラリに切り替えたこと、または作業を自分で完了することもできます。
devuanをasciiにアップグレードするには、/etc/apt/sources.list
次の行だけを追加して編集してください。
deb http://pkgmaster.devuan.org/merged ascii main
deb http://pkgmaster.devuan.org/merged ascii-updates main
deb http://pkgmaster.devuan.org/merged ascii-security main
deb http://pkgmaster.devuan.org/merged ascii-backports main
/etc/apt/preferences
ファイルを削除して実行してください。
apt-get upgrade devuan-keyring
apt-get update
apt-get dist-upgrade