パッケージの更新/インストールに失敗しました-スペースの問題-inodeを解放します

まず最初に、これは私のルートパーティションの特性による特定のエラーであり、通常のインストールでは通常発生しないことをコメントします。 

まず、問題がどのように発生したか、そしてどのように解決するかについて説明します。

私のチームは ソニーヴァイオm120ALネットブック 私は3GBのハードドライブを共存させて約320年間持っています Windows 7, チャクラ 、私の作業パーティション Xubuntuの12.04、スワップパーティション、/ホームパーティション、および情報を共有する追加の情報パーティション ウィンドウズ。

これらの理由から、両方のシステムのルートパーティションは、ほとんどの標準でかなり小さいですが(それぞれ約6GB)、必要なすべてのパッケージに対して十分すぎるため、問題が発生することはありません。

さて、特定の状況に入り、数日前にいくつかの更新を適用します Xubuntuの (新しいカーネルが含まれていました)更新マネージャーは、linux-image-3.2.0-51-genericをインストールしようとしているが、その依存関係はlinux-headers-3.2.0-51であるというエラーを示しています。インストールされません。エラーを詳細に確認すると、dpkgが使用可能なスペースがないと文句を言っていることに気付きました。

私がそれを書き留めなかったので同一ではありませんが、エラーはこのスタイルの何かを言いました:

`/usr/src/linux-headers-3.2.0-43/arch/xtensa/include/asm/coprocessor.h.dpkg-new 'を作成できませんでした(処理中` ./usr/src/linux-headers -3.2.0-43 / arch / xtensa / include / asm / coprocessor.h '):デバイスにスペースが残っていません

以前にも同じことが起こったことがありますが、古いカーネルを削除せずに蓄積させていたためですが、今回は確認したところ、600Mbが利用可能でした。 コンキー 私は理解していませんが、それが私がそれをどのように構成したか、または同様のものにエラーがあるかどうかを確認するために、私は実行します df -h:

df -h

しかし、私はまだ/にスペースがあります!

だから私は間違っていません、そしてそれはアップデートを実行するのに十分なスペースです(私はXubuntuにいたので長い年の間に何度もこのようにそれをしました)とにかく私はsudoをします apt-get clean ダウンロードしたパッケージをクリーンアップして再試行しますが、結果は同じです。

私はまだそれが奇妙だと思いますが、とにかく私はいつも使用している/アイコンのテーマから移動しようとしますそして私はたくさん変更しました(ファエンツァ y 覚醒)より多くのスペースを解放し、最終的に更新を実行して、/に戻すために再度続行します。

しかし、問題は他の場所に行かなければならないという考えが頭に残っていましたが、どちらかはわかりませんでした。 数時間後、いくつかの追加パッケージをインストールしようとすると、前述のエラーが再び発生し、もう一度十分なスペースがあったので、調査を行います。

インターネット検索は、のフォーラムのいくつかのスレッドに私を導きます ubuntu-is、しかし、一部の個人の答えは常に同じです。ファイルを削除したり、ルートパーティションを拡張したりするのに十分なスペースがありませんが、見つけたさまざまなスレッドに共通する何かに気づきました。常に空きスペースのあるルートパーティションですが、それは私のもの(〜600-900 Mb)に似ていて、パーティションのサイズが10 Gbを超えることはなかったので、問題は別のものでなければならないことを自分自身に納得させました。 ESTA ページでは、問題はルートパーティションで100%のinodeが使用されていることです。

inodesの使用はコマンドで見ることができます df-i:

100%使用済みinodes

100%使用済みinodes

そして今、説明が来ます。

イノデはデニス・リッチーの言葉です:

ファイルへのアクセス情報をディスク上のフラットリストとして保存し、ディレクトリのすべての階層情報を脇に置いたファイルシステムのやや変わった構造によるインデックス。

したがって、特定のファイルシステムでは、ファイルを格納するための空き領域がまだある場合がありますが、システム内に多数のファイルがあり、新しいファイルを作成できないため、インデックスを作成するために使用できるinodeがありません。

重要なのは、パーティション内のinodeの数です 外部4 変更できません(次のような他のタイプのシステムがあります JFX o XFS これは動的であるため制限ではありません)これは、パーティションがmkfs.ext4で作成されたときに計算される固定数であり、サイズに応じて、 /etc/mke2fs.conf。

システムをインストールするときは、通常、inode = 16384の関係を含むデフォルトの設定を使用します。これは、小さなパーティションの場合、大きすぎて十分に作成されない可能性があります(私の場合のように)。 パーティションを変更する唯一の方法は、パーティションを作成/フォーマットし、オプションで指定することです。 -i.

ただし、inodeは既存のファイルの数に関連していることはすでに述べたので、これは私にとってオプションではありませんでした。次のbashスクリプトを使用してください。 stackoverflowの そして、前に述べたページにリンクされて、ルートパーティション内のどのディレクトリがより多くのファイルであるかを見つけます。

スクリプトが呼び出された場所からディレクトリを分析することを知っておくことが重要です。つまり、私の場合のように、分析に興味がありました。 / さて、最初にターミナルで私は一緒に移動する必要があります CD / 次に、スクリプトを呼び出すかどうか
#!/bin/bash
# count_em - count files in all subdirectories under current directory.
echo 'echo $(ls -a "$1" | wc -l) $1' >/tmp/count_em_$$
chmod 700 /tmp/count_em_$$
find . -mount -type d -print0 | xargs -0 -n1 /tmp/count_em_$$ | sort -n
rm -f /tmp/count_em_$$

これにより、次の結果が得られます。

そして、ここに犯人がいます!

そして、ここに犯人がいます!

左側に表示される数字は存在するファイルの数を示し、パスは関連するディレクトリを示します。下のXNUMX行にはディレクトリ/ var / lib / dpkg / infoが表示されますが、いつものようにここでパッケージを削除することはありません。 。

ただし、XNUMXつの問題を認識した場合、最初の問題と、catpuraでは上昇しませんが、さらにいくつかのエントリにアイコンが含まれています。 覚醒、したがって、それらをyesまたはyesに移動する必要があります。また、移動時にルートパーティションから多くのinodeを解放したため、パッケージを更新できた理由も説明されていますが、再配置すると問題が再発しました。

そして第二に、次に多いエントリはいくつかの古いカーネルのヘッ​​ダーに関連付けられています。古いカーネルを削除するために常に使用する手順では、ヘッダーが削除されないことに気付きました。私が通常使用するのは、次のとおりです。 :

dpkg --get-selections | grep Linux イメージ

カーネル-rec

インストールされているカーネルが表示され、次に使用します。

sudoapt-パージパッケージを取得

ここで、packageは問題のカーネルの名前ですが、これでは関連するヘッダーが削除されないため、次のようにします。

dpkg --get-selections | grep Linux

古いヘッダー

次に、次の方法で古いヘッダーを削除します。

sudoapt-getパージlinux-headers-3.2.0-41linux-headers-3.2.0-44 linux-headers-3.2.0-45linux-headers-3.2.0-48

そしてvoilà、しかしもちろんアイコンの問題もありました 覚醒 そこで、それらを〜/ .iconsに移動し、システム全体で使用できるようにすることにしました。/usr/share/iconsにシンボリックリンクを作成します。これは、 df-i ヘッダーを削除し、アイコンを移動した後のXNUMX番目です。

ヒープからリリースされたイノデ!

ヒープからリリースされたイノデ!

これで問題は解決し、問題なくパッケージをインストール/更新できます。この投稿が誰かの助けになるか、小さなパーティションへのインストールに関する将来の参照に役立ち、不足しているフォーラムによって広まったトピックをわかりやすく説明することを願っています。スペースの。


コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:MiguelÁngelGatón
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。

  1.   フェルナンドバウティスタ

    こんにちは、ubuntu tweakを使用してください( http://ubuntu-tweak.com )はWindowsの調整のようなもので、多くのゴミを取り除き、その過程で古いカーネルを安全にアンインストールしますが、前のカーネルを起動したままにします。最後のカーネルが機能しなかったため、システムに入ることができました。それらをすべて削除しないようにします。

    1.    レイヨナン式

      私は彼を長い間知っていましたが、私はいつも自分のやり方でそれを行い、物事がどのように機能するかを理解することを好みました。いずれにせよ、問題のある古いヘッダーのペアがなくても、多かれ少なかれ同じように表示されたでしょう。アイコンのテーマ、そして私が述べたように、それはスペースの不足の問題ではなく、使用されるinodeの問題です。

  2.   モーリシャス

    これを共有していただきありがとうございます。 私が使用しているディスクはすべてLinux形式であり、ウィンドウがないため、これまでのところその問題は発生していません。コンピューターにそのシステムがないためです。

    ですから、いつかこの問題に出くわした場合に備えて、これを心に留めておきます。

    1.    レイヨナン式

      この問題は、Windowsでパーティションを作成すること(私の場合の特殊性です)ではなく、インストーラーがmke10fs(パーティションをフォーマットするもの)のデフォルトオプションを使用する2Gb未満の小さなルートパーティションを使用することで発生します。サイズに応じて少数のinodeが残り、通常はほぼ標準であるように、すべてのパーティションはEXT4にあり、作成時にこの数を設定し、後で変更することはできません。

  3.   ジェラルドH

    ご覧のとおり、これは人々をLinuxから遠ざけ、最終的にWindowsに戻るようなものですが、この状況の一般的なユーザーが問題をどのように解決できると思いますか?
    これらの種類のものを修正して構成し、生産的な時間を無駄にする時間を無駄にする必要はありません。
    Miguel de Icazaは彼の言ったことに正しかったので、彼はMacに切り替えることにしました。なぜなら、すべてがそこで機能するからです。

    1.    エラヴ

      それでおしまい。 OS Xでは、すべてが美しく機能します..現時点では、投稿コメントの作成者が何をしたのかを説明するのは無意味です。このコメントをフィードしないでください。 それは炎で終わります。

      1.    エリオタイム3000

        私の場合、Debianは私のPCですべてを動作させ、SqueezeからWheezyにアップグレードするための追加のリポジトリとしてDVDを使用したことがわかりました。 したがって、誰でも更新できます。

    2.    ファビアン

      それでは、あなたはWindowsユーザーの心を持っています。
      GNU / Linuxはあなたにとって大きなものです。
      よろしく

  4.   ジーク84

    これは面白い。

  5.   ホルヘ

    このエラーは、gentooを小さなディスクにインストールするときに非常に頻繁に発生するため、空き領域の60%が残っていても、多くの小さなソースファイルとパーティションのinodeが不足します。 少なくともハンドブックは、mke2fs -j -T small / dev / sdaXと入力することでそれを解決します。おそらく、ubuntuで実行されます。 変な設定をする前に😛

    1.    レイヨナン式

      正確には、前に述べたように、-iオプションを使用してinodeバイト比を指定できますが、-Tは、構成ファイル内の/etc/mke2fs.confという名前のデフォルトモードの1024つを使用するというオプションもあります。この場合、smallは、ブロックサイズ= 128、inodeサイズ= 4096、バイト-inods比= XNUMXを適用します。

  6.   MSX

    素晴らしい!
    それがどこから来たのかを理解するまで、長い間頭を食べるのは典型的な問題です。
    説明は+10😀

    1.    レイヨナン式

      あなたが言うように、あなたは私の頭を殺すのに楽しい時間を過ごしました!あなたが名誉であると同じくらい知っている誰かからのコメントをありがとう!

  7.   アンソニー

    すばらしい!!、私は何か他のことを学びました、そしてそれは私が古いヘッダーを取り除くことによって19Mbかそこらを回復するのを助けました、そしていくつかのinodeを回復しました。 これで、インストールするスペースが増えました。 私はLinuxの初心者なので、大丈夫だと思われる場合は、最大数のinodeを取得するためのフォーマット方法と、ディスク情報を保持しながら実行できるかどうかについて投稿することをお勧めします。
    挨拶と感謝

    1.    レイヨナン式

      エントリの冒頭の指示で述べたように、これは非常にまれな問題であり、私の場合のように小さなルートパーティション(<10GB)に関連しており、他のサイズでは発生する可能性は低いです。 さて、inodeの数の変更については、エントリでも述べたように、パーティションタイプEXT4でフォーマットせずに行うことはできないため、事前のバックアップを行わずにディスクに情報を保持して、バイト比を変更することはできません。 inodeは、mke2fsコマンドの-iオプション、または-Tに関連付けられたオプションのXNUMXつ(小さい、大きい、大きいなど)を使用します。

  8.   マリオ

    優秀な! 問題の説明、それが起こった理由の説明、その基礎、そして解決のステップ! 私はこれを素晴らしい貢献と呼んでいます! Rayonantに感謝します!

  9.   ダイアナ・ベドヤ

    記事をありがとう、それは私を大いに助けました。 私はこのエラーを克服するためにあらゆることを試みましたが、古いヘッダーとその依存関係を適切に削除することで、プログラムを再インストールして更新を行うことができました。 ありがとうございました!

  10.   ジャスコ

    同じ問題が私にも起こりました、何も起こりませんでした、そしてそれは私を逆さまにしましたハハハ。 私の場合、ルートパーティションにはかなりの空きメモリがありましたが、100%inodeが使用されていました。 重要なのは、同じディストリビューションを長い間使用していて、古いカーネルを長期間削除しない場合、バックログがひどいということです。 私の場合、問題を解決することができましたが、sudo apt-get removeまたはpurgeが機能せず、使用されなくなったカーネルファイルを削除できるようにするための鍵は、sudo dpkg –removeおよび–purgeを使用することでした。そして一つ一つ、inodesをリリースすることができました。 あなたが学ぶすべて。 問題がもっと早く解決されたので、このエントリをもっと早く見つけていたらよかったのにと思います。 inodeのそれが何であるかを少しスケッチしてくれてありがとう、私はあまり考えていませんでした。
    素晴らしいブログ、ご挨拶!

  11.   レオ

    あなたはグロソで、面倒ですがよく理解されています。 私は手紙にすべてをしましたが、私ができないことは以前のlinux-headersを削除することです、それは私を許しません、それは私を置きます
    E:dpkgが中断されました。問題を修正するには、「sudo dpkg –configure-a」を手動で実行する必要があります。
    私はそれが私に言うことを実行し、それは私を作ります
    オープンショットの設定(1.4.0-1ubuntu1)..。
    トレースバック(最後の最後の呼び出し):
    ファイル "/ usr / sbin / update-python-modules"、行478、
    package.install(py_installed)
    ファイル "/ usr / sbin / update-python-modules"、行112、インストール中
    os.symlink(ファイル名、destpath)
    OSError:[Errno2]そのようなファイルまたはディレクトリはありません
    sys.excepthookのエラー:
    トレースバック(最後の最後の呼び出し):
    ファイル "/usr/lib/python2.7/dist-packages/apport_python_hook.py"、行128、apport_excepthook
    os.O_WRONLY | os.O_CREAT | os.O_EXCL、0o640)、 'w')
    OSError:[Errno 28]デバイスにスペースが残っていません: '/ var / crash / _usr_sbin_update-python-modules.0.crash'

    元の例外は次のとおりです。
    トレースバック(最後の最後の呼び出し):
    ファイル "/ usr / sbin / update-python-modules"、行478、
    package.install(py_installed)
    ファイル "/ usr / sbin / update-python-modules"、行112、インストール中
    os.symlink(ファイル名、destpath)
    OSError:[Errno2]そのようなファイルまたはディレクトリはありません
    dpkg:openshotの処理中にエラーが発生しました(–configure):
    インストール後のスクリプトをインストールしたスレッドがエラー終了コード1を返しました
    dpkg:エラー:データベースステータスを書き込むために `/ var / lib / dpkg / status 'を開くことができませんでした:デバイスにスペースが残っていません
    問題は、私は何を着ているのかということです。

  12.   パブロ

    どうもありがとう! この投稿は私を大いに助けてくれました。

  13.   激痛

    オレ!!!

    トリッキーな問題を解決するだけでなく、その過程で私は学び(そして楽しんで)います

  14.   フアン·カルロス

    こんにちは。 まず、投稿ありがとうございます...

    第二に、残念ながらそれは私を助けませんでした。 パッケージが壊れているという問題で彼のところに来ましたが、スペースが足りないためにシステムで解決できませんでした。実際には、ここで説明したのはノードiでした。

    提案されているように、古いカーネルを削除しようとしましたが、システムで次のことができません。
    juan @ juan-P29G:〜$ sudoapt-getパージlinux-image-3.2.0-29-generic-pae
    パッケージリストを読んでいます...完了
    依存関係ツリーの作成
    ステータス情報の読み取り...完了
    「apt-get-finstall」を実行して修正することをお勧めします。
    次のパッケージには、満たされていない依存関係があります。
    tzdata-java:依存:tzdata(= 2014i-0ubuntu0.12.04)ですが、2014e-0ubuntu0.12.04がインストールされます
    E:依存関係が満たされていません。 パッケージなしで「apt-get-finstall」を試してください(または解決策を指定してください)。

    そして、私がシステムのアドバイスに従うとき:
    juan @ juan-P29G:〜$ sudo apt-get -f install
    パッケージリストを読んでいます...完了
    依存関係ツリーの作成
    ステータス情報の読み取り...完了
    依存関係の修正...完了
    次の追加パッケージがインストールされます。
    ツデータ
    次のパッケージが更新されます。
    ツデータ
    1が更新され、0がインストールされ、0が削除され、23が更新されません。
    1が完全にインストールまたは削除されていません。
    0 B / 461kBのファイルをダウンロードする必要があります。
    この操作の後、31,7kBが解放されます。
    [Y / n]を続行しますか? s
    パッケージの事前設定..。
    (データベースの読み取り…現在インストールされている893468ファイルまたはディレクトリ。)
    tzdata 2014e-0ubuntu0.12.04を置き換える準備をしています(…/ tzdata_2014i-0ubuntu0.12.04_all.debを使用)…
    tzdata交換品の開梱..。
    dpkg:エラー処理/var/cache/apt/archives/tzdata_2014i-0ubuntu0.12.04_all.deb(–unpack):
    `./usr/share/zoneinfo/posix/America/Santo_Domingo 'のsymlinkをバックアップできません:デバイスにスペースが残っていません
    エラーメッセージはエラーがディスクいっぱいであることを示しているため、「apport」レポートは書き込まれませんでした
    処理中にエラーが発生しました:
    /var/cache/apt/archives/tzdata_2014i-0ubuntu0.12.04_all.deb
    E:サブプロセスは/ usr / bin / dpkgがエラーコード(1)が返さ

    悪循環…とにかく、何ができるか見ていきます。

    ご挨拶。

  15.   フアン·カルロス

    こんにちは…私は悪循環を断ち切る方法を知っています。

    このコマンドを使用して、最も古いカーネルのイメージを削除します。
    sudo dpkg –linux-image-3.2.0-29-generic-paeを削除します

    これで、壊れたパケットを修復するのに十分な4389個のiノードを取得し、投稿に示されているように古いカーネルヘッダーを削除します。

    そして今、私は古いカーネルの束を削除することによって、より多くのiノードを回復します...

    おかげで、挨拶、フアンカルロス。

  16.   匿名の

    彼は私にヘッダーを削除させませんでした

    入力しました
    須藤ノーチラス

    そして、私は/ usr / srcフォルダーに行きました
    そこで私は「ヘッダー」ファイルを見ました、そして私はそれらを削除しました
    それで彼はすでに私に自動削除注文をさせてくれました

  17.   匿名の

    ありがとうございました!! 投稿は少し古いかもしれませんが、それでも非常に便利で、inodesで問題が解決しました

  18.   ルイス

    Rayonant:例示的な説明。
    私の場合、(Gpartedを使用して)パーティションを拡張する必要がありましたが、あなたの投稿は問題を理解するのに役立ちました。 そして、あなたの方法に従った後、私は(パーティションを拡張した後の)90%の占有されたinodeからわずか28%になりました。
    どうもありがとう。 これからは、古いカーネル(およびヘッダー)を削除するために使用します。
    Juan Carlosにも感謝します(私も同じ問題を抱えていました)。
    抱擁。

  19.   ヒラリウス

    興味深い投稿、
    私の場合、100%の使用から9%に減少しました

    root @ pi:/ home / pi#apt-きれいにする
    ルート@pi:/ホーム/ pi#df -i
    S.ファイルノード-iNUsados NLibres NUso%Mounted on
    / dev / root 1915424 1915288 136 100%/

    後で、ntopngの嵐が私の鼻に触れていることに気づき、それらを排除して...

    root @ pi:/ home / pi#rm -rf / var / tmp / ntopng /

    タチャン!!!

    ルート@pi:/#df -i
    S.ファイルノード-iNUsados NLibres NUso%Mounted on
    / dev / root 1915424 160408 1755016 9%/

    ありがとう