web-dev-qa-db-ja.com

Solaris IPS:pkg依存関係エラーは、実際の問題とは関係ありません/依存関係の失敗を診断する最善の方法IPS

Solaris 11.3を実行しています(現在、非契約リリースリポジトリから)。私はSolaris10の経験が豊富ですが、11の初心者であり、IPSに自信を持って取り組むことに取り組んでいます。

私の問題は、pkg installの出力が実際の問題とは関係がないように見えるため、パッケージの依存関係の失敗の診断に深刻な問題があることに定期的に気付くことです。実際、最後に説明するように、これが何らかのバグまたはリポジトリの問題によって引き起こされているのかどうか疑問に思っています。

以下は、失敗したpkgコマンドの出力が実際の問題とはまったく関係がないように見える、私が直面した最近の問題の2つの例です。最初の例では、これにより、私は文字通り何日もかけて赤いニシンを追いかけ、最終的に必要な修正に出くわしました。

グローバルバージョンはOracleSolaris 11.3.1.5.1(pkg/entireバージョン0.5.11-0.175.3.1.0.5.1)です。グローバルはUSBテキストインストーラからインストールされ、それ以降、デフォルトでグローバルにインストールされたすべてのFOSSパッケージのバージョンロックを解除して更新しました( Oracle docs here )ごとに、さらにいくつかの追加サポートパッケージ(vimscreentmuxなど)をインストールしました。

この投稿を書いているとき、私は新しくインストールされたsolaris-small-serverゾーンの位置から両方の例を再作成しましたが、他の変更はありませんでした。上記で説明したFOSSの更新は、グローバルでのみ発生し、次の例を再実行してエラー出力をキャプチャするために使用されるゾーンでは発生しません。以下にリストされているコマンドは、デフォルトのゾーンAIマニフェストから作成された後、文字通りテストゾーンで実行される最初のコマンドです。

例1:常に必要なパッケージをグローバルにインストールせずに、動作中のGnomeデスクトップを非グローバルゾーンにインストールしようとしています。無駄のない清潔な状態を保つために。

  1. zlogin zone pkg install --accept -v solaris-desktopdriver/audio/audio-usbがグローバルゾーンにもインストールする必要があると言っているため、失敗します。
  2. solaris-desktopというカスタムバージョンのsolaris-desktop-zoneを作成し、すべてのdriver/*パッケージと、グローバルに依存するパッケージを削除します(各パッケージでpkg contents -mrを呼び出すスクリプトを介して削除し、feature/package/dependency/selfを参照するものを削除しました)。これをにインストールします。 pkg/mirrorhttp://pkg.Oracle.com/solaris/release/クローンである私のローカルリポジトリ。
  3. 変更したパッケージをインストールすると、依存関係の失敗の長いリストが表示されます このPastebin内 、これは主にPythonパッケージに関連しているようです。
  4. 私は文字通り1日かけてこれらのエラーを処理しました。さまざまなPythonパッケージとその依存関係を手動で再帰的に分析し、solaris-desktop-zoneパッケージで見つけたそれらの言及を削除しました。最終的にはソルバーステージを通過するバージョンが見つかるまで、パッケージをまとめて削除し、そこから逆方向に作業して1つのパッケージを特定し、最終的に原因を理解しました。

ソリューション? x11/server/xorg/driver/xorg-video依存関係を持つNVidiaドライバーに依存するfeature/package/dependency/self。後から考えると、その自己依存関係を再帰的に検索することで、これをはるかに迅速に見つけることができました-つまり、solaris-desktop-zoneパッケージによって依存されているすべてのパッケージだけでなく、すべてのそれらの依存関係もチェックしてください。しかしもちろん、問題はPythonパッケージまたはそれらに依存するパッケージに関係しているとエラーから信じて、私はグラインドに巻き込まれました。

例2gcc-5

zlogin testdesktop pkg install --accept -nv gcc-5この出力 を生成します。

ここでも、奇妙なPythonエラーの同じリストがあり、解決策はまったく関係ありません。GCCに関連するいくつかのバージョンのロックを解除する必要があります。

pkg change-facet version-lock.system/library/gcc/gcc-c-runtime=false \
version-lock.system/library/gcc/gcc-c++-runtime=false \
version-lock.system/library/gcc/gcc-gfortran-runtime=false \
version-lock.system/library/gcc/gcc-gobjc-runtime=false

これはありがたいことにGoogle経由ですぐに見つけました( ここではUnix StackExchange )。しかし、それに答えた人によって説明された診断が私が見たものと一致しなかったので、私はまだ困惑していました-彼の投稿にリストされたpkgエラーは問題の理解できる説明を与えました(Reason: This version is excluded by installed incorporation..)。私の場合、これらの無関係なPythonエラーが再び発生します!

これを書いているときに、Solaris 11.3リリースリポジトリで現在何か奇妙なことが起こっているのではないかと思っています。おそらく、契約を結ぶまでアクセスできないSRUによって修正されています。たぶんそれが、理解可能でデバッグ可能なエラーではなく、これらの奇妙なエラーが発生する理由ですか?

その点で、Dbus Pythonに関連する何かが間違っている可能性があることに注意してください-両方の例で見られるエラーの1つは、python-dbus-27に関連しています。これは、現在、 dbus-python-27への依存。ただし、dbus-python-27はリポジトリに存在しないため、リポジトリの問題である可能性があります。

しかし、そうだとしても、他のまったく関係のない問題がある場合にのみこれらのエラーが表示されるのはなぜですか?それはレポの問題が原因のバグですか?

それが当てはまるかどうかを確認し、一般に、パッケージの依存関係の問題をデバッグおよび解決するための推奨される方法とツールについて詳しく知ることができれば幸いです。私が得たエラーを考えると、すべての依存パッケージのブルートフォースチェックに頼ることなく、これをより迅速に解決できたでしょうか?

前もって感謝します。

3
TheBloke

まず、一部の構成では、パッケージが非グローバルゾーンにインストールされている場合、グローバルゾーンにパッケージをインストールする必要があります。これは、別の返信で述べたように、「親」の依存関係を使用して行われます。 Solaris 11.3非グローバルゾーンが継承しないIPSファセットの変更(バージョンロック) ==

これは、solaris-desktopパッケージの依存関係に一般的に当てはまります。これは、ドライバー、NFS、またはその他の特定のサービスなど、グローバルゾーンのみが実行できるサービス(グローバルゾーンのみが実際のカーネルを持っているため)に依存しているためです。

「バージョンが見つかりません」エラーはかなり文字通りです。これは基本的に、パッケージの依存関係を満たすバージョンがconfigureリポジトリにないことを意味します。

残念ながら、一部の評価パッケージに問題が見つかったようです。あなたは何も悪いことをしていません、それはただ今はうまくいきません。これは、最初に内部で修正する必要があるものです。

ベース11.3リリースと評価パッケージの組み合わせをテストし、同時に「solaris-desktop」をインストールしようとした人はいないと思います。解決には時間がかかりますので、しばらくお待ちください。

それまでの間、デスクトップ構成のシステムが必要な場合は、評価パッケージの使用をしない試み、solaris-desktopをにインストールするのが最善の方法です。最初にグローバルゾーン、次に非グローバルゾーン。これが最も簡単なオプションです。

現時点でこれを回避する唯一の方法は、問題を引き起こしているパッケージを変更して再公開することですが、現時点ではそのプロセスをガイドすることはできません。言うまでもなく、変更する各パッケージでpkgrecv --rawを使用してから、pkgsendを使用して各パッケージを独自のローカルリポジトリに再公開する必要があります。

2