システム変更

システム変更

(pseudo-)packageがA(pseudo-)packageに依存しているとしますB

A私は「一人でインストールすると得られないもの、インストールすれば何が得られますかB?」という質問に答えるために合理的に体系的な方法を探しています。

A最も抽象的な用語で、とBの依存関係グラフの違いを確認したいと思います。

標準ツールを使用してこれを行う便利な方法はありますかdpkg*apt*aptitude*


私はできるだけ一般的な回答に興味があるので、具体的な例を挙げることは消えますが(これらの例は一般的な場合には適用されず、例にのみ適用される答えにつながる傾向があります)、必然的に誰かが去ります。具体的な例を尋ねるコメントは次のとおりです。

Aそうかもしれないし、task-xfce-desktopおそらくBそうだろうxfce4

それともAそうかもxfce4しれBませんxfdesktop4


編集:説明(Stephen Kittの答えへの答え):私は実際にシステムの現在の状態に関係なく絶対依存関係グラフの違いに興味があります。

ベストアンサー1

2 つの方法、つまりシステムに適用される変更を分析する方法と、依存関係ツリー全体を分析する方法について詳しく説明します。

システム変更

「絶対」依存関係チェーンではなく、現在のシステムの変更に興味があると仮定すると、次の2つのパッケージのインストールをシミュレートして結果を比較できます。

(comm -3 <(apt-get -s install A | awk '/^Inst / { print $2 }' | sort) <(apt-get -s install B | awk '/^Inst / { print $2 }' | sort)) 2>/dev/null

これを行うには、インストールをapt-getシミュレート()し、インストールされるパッケージのリストをフィルタリングする必要があります(で始まる行の2番目の項目)。両方のリストを並べ替えて比較し、すべての公開パッケージを削除します。 )。最終リダイレクトでは、無関係な出力がある場合は削除します(ただしエラーは表示されません)。-sAInstBcomm-3stderr/dev/nullapt-get

xfce4たとえば、andを使用すると、xfdesktop4次のような結果が得られます(私のシステムには両方がインストールされていません)。

gtk2-engines-xfce
libkeybinder-3.0-0
libxfce4panel-2.0-4
libxfce4ui-2-0
libxfce4ui-utils
orage
pavucontrol
thunar
thunar-volman
xfce4
xfce4-appfinder
xfce4-notifyd
xfce4-panel
xfce4-pulseaudio-plugin
xfce4-session
xfce4-settings
xfwm4
xscreensaver
xscreensaver-data

一番左の列には1つの列しかないため、これはインストールxfce4時にインストールするパッケージに加えて、自分のシステムにインストールするパッケージのリストですxfdesktop4A両方ともB互いに依存しないを選択すると、2つの列が表示されます。最初の列には固有のA依存関係が表示され、2 番目の列には固有の依存B関係が表示されます。

完全な依存関係ツリー

を使用して、依存関係ツリー全体で機能するように調整できますapt-rdepends。パッケージAが依存するすべての固有パッケージを取得するには(直接または事前の依存関係を含む間接的に)、次のようにします。

apt-rdepends A | awk '/^  .*Depends/ { print $2; }' | sort -

これはすべてのバージョン制限を無視しますが、この場合はあまり発生しないはずです。

したがって:

comm -3 <(apt-rdepends A | awk '/^  .*Depends/ { print $2; }' | sort -u) <(apt-rdepends B | awk '/^  .*Depends/ { print $2; }' | sort -u)

AとBのすべての依存関係を一覧表示し、一意の依存関係を一覧表示します(左の列はAに固有、右の列はBに固有)。

xfce4やり直すxfdesktop4

adwaita-icon-theme
dconf-gsettings-backend
dconf-service
desktop-file-utils
glib-networking
glib-networking-common
glib-networking-services
gsettings-backend
gsettings-desktop-schemas
gtk2-engines-xfce
hicolor-icon-theme
libasyncns0
libatk-bridge2.0-0
libatspi2.0-0
libcairo-gobject2
libcap2
libcolord2
libcroco3
libdconf1
libdrm2
libegl1-mesa
libepoxy0
libflac8
libgbm1
libgnutls30
libgtk-3-0
libgtk-3-bin
libgtk-3-common
libgudev-1.0-0
libhogweed4
libical1a
libidn11
libjson-c2
libjson-glib-1.0-0
libjson-glib-1.0-common
libkeybinder-3.0-0
liblcms2-2
libnettle6
libogg0
libpolkit-gobject-1-0
libpopt0
libproxy1v5
libpulse0
libpulse-mainloop-glib0
librest-0.7-0
librsvg2-2
librsvg2-common
libsndfile1
libsoup2.4-1
libsoup-gnome2.4-1
libsqlite3-0
libstdc++6
libudev1
libupower-glib3
libvorbis0a
libvorbisenc2
libwayland-client0
libwayland-cursor0
libwayland-egl1
libwayland-egl1-mesa
libwayland-server0
libwrap0
libxaw7
libxcb-dri2-0
libxcb-dri3-0
libxcb-present0
libxcb-randr0
libxcb-shape0
libxcb-sync1
libxcb-xfixes0
libxfce4panel-2.0-4
libxfce4ui-2-0
libxfce4ui-utils
libxkbcommon0
libxkbfile1
libxklavier16
libxmu6
libxpm4
libxshmfence1
libxt6
libxtst6
orage
thunar
tzdata
x11-xkb-utils
xfce4-appfinder
xfce4-panel
xfce4-pulseaudio-plugin
xfce4-session
xfce4-settings
xfdesktop4
xfwm4
xkb-data

apt-rdepends推奨事項や提案を含める場合は、オプションを調整できます(-fオプションを参照)。

おすすめ記事