Debian: chroot 環境に不要な必須パッケージ

Debian: chroot 環境に不要な必須パッケージ

私はchroot環境(Android携帯では重要ではありませんが、この質問では重要ではありません)にDebian 8(jessie)を設定しましたが、そのサイズがかなり大きいことがわかりました。その後、必須ではなく、未使用のすべてのパッケージ(現在のsshとrsync)を削除しましたが、サイズはまだ約200 MBでした(deborphanプロセスで使用しすぎました)。

問題は、システムが引き続き機能するためにいくつかの必須パッケージを削除できるかどうかです(たとえば、コンソールログインや多くのデバイス管理機能は不要です)。

それとも、いくつかの重要なパッケージをより小さなパッケージに置き換える方法はありますか?

現在私の最大のパッケージは次のとおりです。

# dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -nr | head -n20

13509   coreutils
9047    libc6
7004    dpkg
5198    bash
5043    gnupg
4811    perl-base
3842    openssh-client
3078    apt
2946    libc-bin
2893    e2fsprogs
2732    login
2692    util-linux
2555    tar
2478    libapt-pkg4.12
2268    libssl1.0.0
2218    passwd
1579    libdb5.3
1563    findutils
1447    libpam-runtime
1434    libslang2

答え1

基本パッケージは通常のシステムに必要ですが、chrootは実際には通常のシステムではありません。 Androidが効果的に提供するinitやloginなどのシステムサービス(通常のLinuxシステムで実行できるすべてのことができない場合)を提供するパッケージは必要ありません。

dpkgコマンドラインオプションを使用して、必須とマークされたパッケージを削除できます--force-remove-essential

Debian jessieで重要とマークされているパッケージのうち、ユースケースには、、、、、およびおそらくinit必要ありません。これに加えて、debootstrapはデフォルトで必要とされない多くのパッケージをインストールします。たとえば、すべての文書(、、、)を削除することもできますが、パッケージがアップグレードされるたびにファイルが再作成されるのを避ける方法はありません。ncurses-basencurses-bindiffutilslogine2fsprogsperl-basebase-passwdbase-fileslocales/usr/share/doc/usr/share/man/usr/share/info

実際に必要とされないもう一つの大きな用語は、、、およびですcoreutils。便利なコマンドラインシェルを使用することに興味がなければ、それは必要ありません。debianutilsbsdutilsgzipmountutil-linuxbusyboxbash

スペースを節約し、SSHアクセスとrsyncだけが必要な場合は、Debianよりも小さいものを入手できます。必要なのはDropbear、rsync、必要なライブラリだけです。 DropbearはSFTPサーバーを提供していないため、必要に応じてOpenSSHからインストールする必要があります。デフォルトのインストールにbashやPerlが含まれておらず、すべてのドキュメントが別々のパッケージにあり、標準ライブラリがGlibcではなくuClibcなどのより小さな代替手段である組み込みシステム用に設計されたディストリビューションがたくさんあります。opkgまたは、パッケージマネージャを使用してディストリビューションを見つけますipkgオープンWRTそして軽いソフトウェア、または他の言及BusyBox製品リスト

答え2

./configure --enable-single-binarybusyboxのように、すべてのユーティリティ間でバイナリを共有するようにcoreutilsパッケージを再構築してみることができます。

関連情報