![複数の Linux ディストリビューション間で /usr/local を共有できますか?](https://rvso.com/image/31643/%E8%A4%87%E6%95%B0%E3%81%AE%20Linux%20%E3%83%87%E3%82%A3%E3%82%B9%E3%83%88%E3%83%AA%E3%83%93%E3%83%A5%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E9%96%93%E3%81%A7%20%2Fusr%2Flocal%20%E3%82%92%E5%85%B1%E6%9C%89%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%81%8B%3F.png)
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/local
2 つの異なるディストリビューションでパッケージも異なることは知っていますが、ディスク領域を共有する方法はありますか? 両方の 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 mounts
。
http://docs.1h.com/Bind_mounts
基本的に、1 つのパーティションに 1 つのファイルシステムを設定できます (Anthon の設定と同様)。この場合、ファイルシステムがマウントされていると仮定すると、Ubuntu インストールとSUSE インストールで同じ操作を実行/mnt/local
するだけです。mount --bind /mnt/local/ubuntu /usr/local
mount --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
パーティションは大きな問題なく共有できるはずです。アプリケーション専用に作成されたユーザー ( dovecot
、fetchmail
) ですが、どちらのシステムも通常、/home
「通常のユーザー」のように の下に実際のディレクトリはありません。私は異なる Ubuntu バージョン間でログイン名を共有していますが、ホーム ディレクトリの設定ファイルが自動的に変換されるため、古いインストールに戻すときに問題が発生することがあります。このような問題を解決するために、 の下に異なるホーム ディレクトリを持つ同じログインを持ち/home
、ユーザー ID とグループ ID は同じにしてデータを共有しています。互換性のない/元に戻せないアップグレードのリスクがない特定のサブディレクトリ (例: Music があるサブディレクトリ) 間にはいつでもリンクを作成できます。
私は 80 年代半ばに PDP 11/70 で作業して以来、別のパーティションを持っていませんので、あなたの友人がなぜそれを勧めたのかわかりません。さらに、いくつかのプログラムは、/usr/local
ソースからインストールする場合、デフォルトで にインストールされ、たとえばpip
Python モジュールのインストールも同様です。そこで問題が発生するのを防ぐには、/mnt/local
各マシンに を作成し、そこに指定されたパーティションをマウントし、そのパーティションに/usr/local
ディレクトリubuntu
とを作成し、各マシンにソフト リンク ( ) を作成します。こうすることで、誤って上書きするリスクを冒すことなく、そのパーティション上のスペースを共有できます。明示的に共有したいものの間には、後でいつでもリンクを作成できます。suse
ln -s /usr/local /mnt/local/ubuntu
さらにお勧めしたいのは、インストールごとにインストールしたもののログを保存することです (私は emacs を changelog モードで使用し、マシンとディストリビューションとリビジョンの組み合わせごとにファイルを作成します)。そうすれば、アップグレードした場合にインストールをやり直すことができ、インストールした追加機能を覚えておく必要がなくなります。最近は、インストール後にリビジョン管理下にsetupnewsystem
置くことなど、追加機能をすべて自動的に実行するスクリプトがあります。/etc
mercurial