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

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

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

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

私はUbuntu 12.04でOpenSUSE 12.2をインストールしたいと思います。 2つのオペレーティングシステム間で合計を共有できますか/var/usr/localパッケージが2つの異なるディストリビューションであることを知っていますが、ディスク容量を共有する方法はありますか?では、どちらのOSも/usr/local同じパーティションに独自のOSを持つことができますか?

答え1

共有できます/usr/local。場合によっては、両方のディストリビューションで異なるバージョンのライブラリを使用する可能性があるため、一方または他方またはそれ自体にいくつかのライブラリをインストールする必要があります/usr/local。奇妙な追加ライブラリをインストールする負担は/usr/local

/usr/localシステムの1つにのみ特定のプログラムをインストールしたい場合は、/usr/local共有する代わりに別の方法で構成できます。お店/usr/local両方のシステムにリポジトリを保存し、シンボリックリンクを確立します。

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

共有できません/var。ディレクトリは少し異なるように配置されており、各展開には一意のユーザーIDがあります。/varメールプールなどの一部のコンテンツを共有できます。

35GBは/varたくさんあります。基本システムの場合は必要ありません。ここに多くのデータを保存する場合(たとえば、Webサーバーのルートがここにあるため)、データに応じてファイルシステムのサイズを変更します。/varルートパーティションから分割することは意味がないので、マージします。リストに記載されていません/usr。ルートパーティションを分割する必要もありません。各オペレーティングシステムのシステムパーティションと共有パーティションを作成するだけです/home。インストールするプログラムを非常に保守的に使用しない限り、システムパーティションには15 GB以上が必要です。 50GBのシステムパーティションを作成するだけです。

/boot他の要件(システムパーティション暗号化など)がない場合は、別のパーティションは必要ありません。

答え2

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

デフォルトでは、パーティションとファイルシステムを持つことができます(Anthonの設定に似ています)。この場合は、ファイルシステムがすでにインストールされていると仮定し、/mnt/localubuntumount --bind /mnt/local/ubuntu /usr/localインストールとmount --bind /mnt/local/suse /usr/localsuseインストールでこれを実行してください。

これの利点の1つは、/usr/local物理/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

コンピュータに複数のインストールを設定する方法は、これらのインストールを使用するスタイルによって異なります。覚えておくべきもう1つのことは、物理パーティションを使用して素晴らしい仮想マシンタスクを実行する必要がない限り、両方のインストールが同時に機能しないことです。

私の経験では/home、パーティションは特に問題なく共有できなければなりません。アプリケーション(dovecot、)用に特別に作成されたユーザーですが、システムには通常「一般ユーザー」などの実際のディレクトリはfetchmailありません。/home異なるUbuntuバージョン間でログインを共有しますが、ホームディレクトリの設定ファイルが自動的に変換されるため、以前のインストールに戻るときに問題が発生することがあります。これらの問題を解決するために、同じログインに異なるホームディレクトリを使用していますが、/home同じユーザーIDとグループIDを使用してデータを共有しています。特定のサブディレクトリ(音楽を含むディレクトリなど)間にいつでもリンクを作成できるため、互換性がない、または元に戻せないアップグレードが発生する危険はありません。

私は80年代半ばにPDP 11/70を使用して以来、別のパーティションを作成したことがないのですが、なぜ友達がこれをお勧めするのかわかりません。また、ソースからインストールする場合、一部のプログラムはデフォルトでインストールされます/usr/local。たとえば、pipPythonモジュールをインストールしても同じことが行われます。問題を回避するために、/mnt/local各コンピュータで指定されたパーティションをマウントし、/usr/localそのパーティションにディレクトリubuntususeソフトリンク()を作成しますln -s /usr/local /mnt/local/ubuntu。マシン。これにより、誤って上書きする危険なしに、そのパーティションのスペースを共有できます。後で特別に共有したいコンテンツの間にいつでもリンクを作成できます。

私が提案できるもう1つの方法は、各インストールと共にインストールされたエントリのログの種類を維持することです(私は変更ログモードでemacsを使用し、各コンピュータリリースの組み合わせのファイルを生成します)。追加の項目をインストールしたことを覚えておく必要があります。これで、インストール後のリビジョン管理をsetupnewsystem含むすべての追加タスクを実行するスクリプトがあります。/etcmercurial

関連情報