Debian:aptが何をしているのかについての説明が必要です

Debian:aptが何をしているのかについての説明が必要です

私は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

多くのパッケージが削除されるのはなぜですか?

適切にパッケージとその依存関係をインストールすると、パッケージが削除されると不要になり、自動的に削除されます。

APTは不要になったパッケージを教えてくれます。

時間の経過とともに自動的にインストールされた一部のパッケージは、そのパッケージに依存するパッケージが不要になるため、不要になります。同じライブラリの最新バージョンを使用している場合、別のライブラリに切り替えたこと、または作業を自分で完了することもできます。


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

Devuan JessieからAsciiにアップグレード

関連情報