ルートパーティションに十分なスペースがないコンピュータがあります。十分な空き容量がある別のディスクがあります。別のディスク/ディレクトリにパッケージをインストールするようにapt-getを設定する方法は?
答え1
あなたはそうしたくありません。まず、ルートの下のスペースを回収することです。これは可能かもしれません。まずcdと/var/cache/apt/archives
入力してくださいdu -hs
。これにより、適切にキャッシュされた deb パッケージが使用するスペースの量がわかります。手動で削除するか、を使用できますapt-get clean
。
未使用の大きなパッケージを削除するツールもあります。たとえば、wajig
(apt-get install wajig
)をインストールして使用できますwajig large
。これにより、サイズが増加する順序でパッケージのリストが提供されます。
それでも問題が解決しない場合(および解決する必要がある場合)、ルートファイルシステムを増やすことを検討してください。 LVMを使用していますか?とにかく、あなたが望むのは、ルートファイルシステムをより大きく拡張することです。 LVMを使用すると、別のディスクに簡単に拡張できますが、まずルームファイルシステムをアンマウントする必要があります。 LVMを使用しない場合は、さらに難しいかもしれません。私は長い間LVMだけを使ってきたので、どのオプションがあるのかわかりません。
より具体的な情報が必要な場合は、この結果をdf -h
質問に貼り付けてください。
答え2
apt-get(8) にはインストールディレクトリを変更する直接的なオプションはありません。 dpkg(1) は動作しますが、chroot 環境で動作します。
正常にインストールしたら、アプリケーションファイルを移動して元の場所から新しい場所にシンボリックリンクを設定できます。これはすべてのアプリケーションで機能しない可能性があります。また、プロセスを元に戻さないと、アンインストール後に問題が発生する可能性があります。
最善の方法は、/rootパーティションをクリーンアップしてスペースを解放することです。 / usrまたは他のディレクトリ(/ rootパーティションの下にある場合)を空きディスクに移動し、それをルートの下にマウントして他のディスクの空き容量を使用します。ルートパーティションを拡張するか、パッケージを再構築して別の場所にインストールしてください。
答え3
まず、大量のスペースを占める大量のログファイルまたは類似のファイルがあるかどうかを確認できます(sudu
をfind
参照)。
何らかの方法でスペースを回復できない場合(たとえば、大容量apt-get clean
ファイルがあるかどうかを確認するdu -sh /*
などdu -sh /bigger_directory/*
)、/ usrを同じディスクまたは別のディスクの新しいパーティションに移動できます。これは通常、すべてのパッケージがインストールされるディレクトリなので、移動してディスク領域の大部分を回復する必要があります。
私はこれを数回実行し、同様の方法を使用してシステム全体を移行しました(たとえば、ラップトップのオペレーティングシステムを新しいSSDディスクに移動)。私が取ったステップ:
- システムとデータをバックアップします(常に変更する前に)。
- ディスクにパーティションを準備してフォーマットします(私たちはそれを/ usrとして使用します)。
- LIVECDまたはUSBスティックLinuxディストリビューションを使用してシステムを再起動します。
- Live CDにいる間、ターミナルを起動してルートになります。
- RAMディスクに一時パーティションを作成したら、そのパーティションにローカルPCディスクをマウントして使用してください。
- 必要なコマンドを実行して、/ usrデータを新しいディスクにコピーします。私の記憶を復活させるには(大丈夫だと思います):
sudo su - root mkdir /temp ### Assuming / is /dev/sda1 : mount -t ext4 /dev/sda1 /temp cd /temp mv /temp/usr /temp/usr.OLD mkdir /temp/usr chown root:root /temp/usr chmod 755 /temp/usr ### Assuming your new partition is /dev/sda6 mount -t ext4 /dev/sda6 /temp/usr ### Copy the entire old /usr to the new disk rsync -avz /temp/usr.OLD/* /temp/usr ### Edit your fstab to automount /usr from the new location vim /temp/etc/fstab ### (add an entry like: /dev/sda6 /usr ext4 defaults 1 2) cd / umount /temp/usr umount /temp/ rmdir /temp exit
- これで、/usrデータを新しいパーティションにコピーし、空の/ usrディレクトリを作成し、システムが起動したときにこの新しいパーティションから/ usrをマウントするように/ etc / fstabファイルを変更しました。
- これでシステムを起動し、正常に動作していることを確認できます。
- システムが正常に動作していることを確認したら、/usr.OLDを削除し、/usrで使用されているすべてのディスクを復元できます。
何らかの問題が発生した場合は、常に同じ方法(livecdで起動、/ tempに/マウント、/ etc / fstabエントリを削除する、/ usr、mv / usrを削除)を使用して古いusrを復元できることに注意してください。 /などOLD私たち)。
免責事項:これは非常に高度なプロセスではありませんが、非常に注意してすべてのステップを完全に理解する必要があります。このプロセスで動作するかどうかをテストする前に何も削除されませんが、このプロセスを実行する前にすべてを確認してください。最初にテストするには、サンプルパーティション(例:/ opt)を使用して練習できます。
答え4
異なるパーティションに異なるパッケージをインストールすることは技術的に可能ですが、困難です。使用できる共同設置すべてを通常の場所に表示しながら、新しくインストールされたパッケージとパッケージのバージョンを別のファイルシステムに送信するのは過剰です。
別の場所に新しいパッケージをインストールする代わりに、大きなディレクトリツリーを選択して別のファイルシステムに移動し、シンボリックリンクを作成します。たとえば、マウントされた新しいファイルシステムを作成し、この新しいファイルシステムに/LARGE
移動することを決定した場合:/usr/share/doc
mv /usr/share/doc /LARGE/doc
ln -s /LARGE/doc /usr/share/doc
その後、システムを通常どおり使用します。
理想的には、ルートファイルシステムを拡張する必要があります。 LVMで主流のファイルシステム(ext4、btrfsなど)を使用している場合は、システムの実行中に次のことができます。 LVMボリュームを増やします(物理ボリュームに空き容量を確保してから実行lvextend
)。次に、システムのファイルを増やしてボリュームを埋めます(resize2fs
または実行btrfs filesystem resize
)。 LVM を使用していない場合、ルートパーティションを拡張するには、ライブシステムで再起動する必要があります。