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 )ごとに、さらにいくつかの追加サポートパッケージ(vim
、screen
、tmux
など)をインストールしました。
この投稿を書いているとき、私は新しくインストールされたsolaris-small-server
ゾーンの位置から両方の例を再作成しましたが、他の変更はありませんでした。上記で説明したFOSSの更新は、グローバルでのみ発生し、次の例を再実行してエラー出力をキャプチャするために使用されるゾーンでは発生しません。以下にリストされているコマンドは、デフォルトのゾーンAIマニフェストから作成された後、文字通りテストゾーンで実行される最初のコマンドです。
例1:常に必要なパッケージをグローバルにインストールせずに、動作中のGnomeデスクトップを非グローバルゾーンにインストールしようとしています。無駄のない清潔な状態を保つために。
zlogin zone pkg install --accept -v solaris-desktop
:driver/audio/audio-usb
がグローバルゾーンにもインストールする必要があると言っているため、失敗します。solaris-desktop
というカスタムバージョンのsolaris-desktop-zone
を作成し、すべてのdriver/*
パッケージと、グローバルに依存するパッケージを削除します(各パッケージでpkg contents -mr
を呼び出すスクリプトを介して削除し、feature/package/dependency/self
を参照するものを削除しました)。これをにインストールします。 pkg/mirror
のhttp://pkg.Oracle.com/solaris/release/
クローンである私のローカルリポジトリ。solaris-desktop-zone
パッケージで見つけたそれらの言及を削除しました。最終的にはソルバーステージを通過するバージョンが見つかるまで、パッケージをまとめて削除し、そこから逆方向に作業して1つのパッケージを特定し、最終的に原因を理解しました。ソリューション? x11/server/xorg/driver/xorg-video
依存関係を持つNVidiaドライバーに依存するfeature/package/dependency/self
。後から考えると、その自己依存関係を再帰的に検索することで、これをはるかに迅速に見つけることができました-つまり、solaris-desktop-zone
パッケージによって依存されているすべてのパッケージだけでなく、すべてのそれらの依存関係もチェックしてください。しかしもちろん、問題はPythonパッケージまたはそれらに依存するパッケージに関係しているとエラーから信じて、私はグラインドに巻き込まれました。
例2:gcc-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
はリポジトリに存在しないため、リポジトリの問題である可能性があります。
しかし、そうだとしても、他のまったく関係のない問題がある場合にのみこれらのエラーが表示されるのはなぜですか?それはレポの問題が原因のバグですか?
それが当てはまるかどうかを確認し、一般に、パッケージの依存関係の問題をデバッグおよび解決するための推奨される方法とツールについて詳しく知ることができれば幸いです。私が得たエラーを考えると、すべての依存パッケージのブルートフォースチェックに頼ることなく、これをより迅速に解決できたでしょうか?
前もって感謝します。
まず、一部の構成では、パッケージが非グローバルゾーンにインストールされている場合、グローバルゾーンにパッケージをインストールする必要があります。これは、別の返信で述べたように、「親」の依存関係を使用して行われます。 Solaris 11.3非グローバルゾーンが継承しないIPSファセットの変更(バージョンロック) ==
これは、solaris-desktopパッケージの依存関係に一般的に当てはまります。これは、ドライバー、NFS、またはその他の特定のサービスなど、グローバルゾーンのみが実行できるサービス(グローバルゾーンのみが実際のカーネルを持っているため)に依存しているためです。
「バージョンが見つかりません」エラーはかなり文字通りです。これは基本的に、パッケージの依存関係を満たすバージョンがconfigureリポジトリにないことを意味します。
残念ながら、一部の評価パッケージに問題が見つかったようです。あなたは何も悪いことをしていません、それはただ今はうまくいきません。これは、最初に内部で修正する必要があるものです。
ベース11.3リリースと評価パッケージの組み合わせをテストし、同時に「solaris-desktop」をインストールしようとした人はいないと思います。解決には時間がかかりますので、しばらくお待ちください。
それまでの間、デスクトップ構成のシステムが必要な場合は、評価パッケージの使用をしない試み、solaris-desktopをにインストールするのが最善の方法です。最初にグローバルゾーン、次に非グローバルゾーン。これが最も簡単なオプションです。
現時点でこれを回避する唯一の方法は、問題を引き起こしているパッケージを変更して再公開することですが、現時点ではそのプロセスをガイドすることはできません。言うまでもなく、変更する各パッケージでpkgrecv --rawを使用してから、pkgsendを使用して各パッケージを独自のローカルリポジトリに再公開する必要があります。