複数の Linux ディストリビューション間で /usr/local を共有できますか?

複数の Linux ディストリビューション間で /usr/local を共有できますか?

Ubuntu 12.04 を試し、自分の理解に基づいて次のパーティションを作成しました。

  • 2GB スワップ (RAM は 2GB あります)
  • 1GB /boot、異なるカーネルバージョンをインストールするため(カーネル開発を開始しています)
  • 35GB/var
  • 40GB/usr/local
  • 407GB/home
  • 15GB /(ルート)

今、Ubuntu 12.04 と一緒に OpenSUSE 12.2 をインストールしたいと思っています。2 つの OS 間で共有できますか/var? /usr/local2 つの異なるディストリビューションでパッケージも異なることは知っていますが、ディスク領域を共有する方法はありますか? 両方の OS が同じパーティションに独自の領域を持つようにできますか/usr/local?

答え1

を共有できます/usr/local。 2 つのディストリビューションで利用できるライブラリのバージョンが異なる場合があり、どちらか一方またはそれ自体にいくつかのライブラリをインストールする必要がある場合があります/usr/local。 で各プログラムを 2 つインストールして維持する必要がないため、余分なライブラリをインストールする負担は相殺される可能性があります/usr/local

/usr/local片方のシステムでのみ使用したいプログラムがある場合は、別の方法を取ることができます。共有せ/usr/localずに、収納するリポジトリを作成し、/usr/local両方のシステムの にシンボリックリンクを作成します。

共有するために別のパーティションを置く必要はありません/usr/local。 1 つのシステムのシステム パーティションに保存し、他のシステムの任意の場所にマウントして、シンボリック リンクを作成できます。

を共有することはできません。ディレクトリの配置方法には若干の違いがあり、各ディストリビューションには独自のユーザー ID があります。メール スプールなど、/varの一部を共有できる場合があります。/var

35GB は/var巨大です。基本的なシステムには必要ありません。そこに大量のデータを置く場合 (たとえば、Web サーバーのルートがそこにある場合)、データに応じてファイルシステムのサイズを決めます。/varルート パーティションから分割しても意味がないので、それらを結合します。/usrリストには記載されていませんが、これもルート パーティションから分割する必要はありません。OS ごとに 1 つのシステム パーティションを作成し、共有 を追加します/home。インストールするプログラムを非常に慎重に行うのでない限り、システム パーティションには 15GB 以上が必要です。50GB のシステム パーティションを作成すれば問題ありません。

/bootシステム パーティションの暗号化などの追加要件がない限り、別のパーティションは必要ありません。

答え2

シンボリックリンクに加えて、以下も使用できますbind mountshttp://docs.1h.com/Bind_mounts

基本的に、1 つのパーティションに 1 つのファイルシステムを設定できます (Anthon の設定と同様)。この場合、ファイルシステムがマウントされていると仮定すると、Ubuntu インストールとSUSE インストールで同じ操作を実行/mnt/localするだけです。mount --bind /mnt/local/ubuntu /usr/localmount --bind /mnt/local/suse /usr/local

/usr/localこれを実行する利点の 1 つは、実際のディレクトリを破壊したり移動したりせずに、既存のディレクトリに対して実行できることです/usr/local

次に例を示します。

# mkdir foo
# touch foo/nowyouseeme
# mkdir bar
# touch bar/nowyoudont
# ls foo
nowyouseeme
# mount --bind ./bar ./foo
# ls foo
nowyoudont
# umount foo
# ls foo
nowyouseeme

答え3

/usr/local(つまり、ローカルでコンパイル/インストールされたソフトウェア)は問題なく動作するはずです。そこに存在するシステムライブラリが互換性がある限りこれは、ほぼ同時期の「デスクトップ用」ディストリビューションであれば、この方法でも問題ない可能性があることを意味します。たとえば、FedoraとRHEL/CentOSを混在させようとすると、全てglibcベースライブラリ(ほとんどの場合)は十分に後方互換性があるため、古いライブラリ(この場合はRHEL / CentOS)を含むディストリビューションで構築します。意思C++ で問題が発生することがあります (C++ ランタイムはバージョン間でかなり変更される傾向があります)。一部のグラフィック ライブラリではインターフェイスが勝手に変更されます。デスクトップ環境に関連するもの (KDE や Gnome など) は、おそらく問題外です。

答え4

マシンに複数のインストールを設定する方法は、これらのインストールでの作業スタイルによって異なります。また、実際のパーティションを使用して巧妙な仮想マシン作業を行わない限り、これら 2 つのインストールは同時に動作しないということも覚えておいてください。

私の経験では、/homeパーティションは大きな問題なく共有できるはずです。アプリケーション専用に作成されたユーザー ( dovecotfetchmail) ですが、どちらのシステムも通常、/home「通常のユーザー」のように の下に実際のディレクトリはありません。私は異なる Ubuntu バージョン間でログイン名を共有していますが、ホーム ディレクトリの設定ファイルが自動的に変換されるため、古いインストールに戻すときに問題が発生することがあります。このような問題を解決するために、 の下に異なるホーム ディレクトリを持つ同じログインを持ち/home、ユーザー ID とグループ ID は同じにしてデータを共有しています。互換性のない/元に戻せないアップグレードのリスクがない特定のサブディレクトリ (例: Music があるサブディレクトリ) 間にはいつでもリンクを作成できます。

私は 80 年代半ばに PDP 11/70 で作業して以来、別のパーティションを持っていませんので、あなたの友人がなぜそれを勧めたのかわかりません。さらに、いくつかのプログラムは、/usr/localソースからインストールする場合、デフォルトで にインストールされ、たとえばpipPython モジュールのインストールも同様です。そこで問題が発生するのを防ぐには、/mnt/local各マシンに を作成し、そこに指定されたパーティションをマウントし、そのパーティションに/usr/localディレクトリubuntuとを作成し、各マシンにソフト リンク ( ) を作成します。こうすることで、誤って上書きするリスクを冒すことなく、そのパーティション上のスペースを共有できます。明示的に共有したいものの間には、後でいつでもリンクを作成できます。suseln -s /usr/local /mnt/local/ubuntu

さらにお勧めしたいのは、インストールごとにインストールしたもののログを保存することです (私は emacs を changelog モードで使用し、マシンとディストリビューションとリビジョンの組み合わせごとにファイルを作成します)。そうすれば、アップグレードした場合にインストールをやり直すことができ、インストールした追加機能を覚えておく必要がなくなります。最近は、インストール後にリビジョン管理下にsetupnewsystem置くことなど、追加機能をすべて自動的に実行するスクリプトがあります。/etcmercurial

関連情報