Linuxリポジトリマネージャーが自分自身をどのように更新するかについてのデザイン原則ですか?

StackOverflow https://stackoverflow.com/questions/3944974

質問

他のアプリケーションもあることは知っていますが、Yum/Apt-Get/Aptitude/Pacmanを考慮すると、Linuxディストリビューションのコアパッケージマネージャーです。

今日、私は私のFedora 13ボックスで見ました:

(7/7): yum-3.2.28-4.fc13_3.2.28-5.fc13.noarch.drpm       |  42 kB     00:00     

そして、私はそのようなパッケージがどのように更新されるのだろうと思い始めましたか?プログラムが自らを更新できるようにするには、どのようなデザインが必要ですか?

おそらくこの質問はあまりにも一般的すぎますが、私はプログラマーよりも適切だと感じました。そのような質問は、それが本質的に技術的であるということです。この質問にもっと適切な場所がある場合は、お気軽にお知らせください。閉じることができたり、モデレーターが移動したりできます。

ありがとう。

役に立ちましたか?

解決

これらの特定のシステムがどのように機能するかはわかりませんが...

  • 最新のUNIXシステムは、一般に、しゃっくりなく実行可能な実行可能ファイルを上書きすることに耐えることができるため、理論的にはそれを行うことができます。
  • クルート刑務所でそれを行うことができ、システムが脆弱な時間を短縮するために移動することもできます。ジャーナリングファイルシステムを追加すると、これはもう少し安全です。

パッケージマネージャーは、パッケージアクセスデータベースをメモリ内に保持する必要があることがわかりました。繰り返しますが、Chroot Jail and Copyオプションは、より低いリスクの代替品として利用できます。

他のヒント

そして、私はそのようなパッケージがどのように更新されるのだろうと思い始めましたか?プログラムが自らを更新できるようにするには、どのようなデザインが必要ですか?

それは多くのことのようなものです。この問題を解決するために特に「設計」する必要はありません...しかし、特定の「ゴッチャ」に注意する必要があります。

たとえば、Unixは、「You」がまだ使用しているファイルを削除できるように、INODを参照することで役立ちます。問題ありません。しかし、これはあなたがしなければならないいくつかのことを意味します。たとえば、あなたがプラグインを持っている場合、あなたはそれらすべてをロードする必要があります トランザクションを開始します...プラグインがトランザクションの最後にのみ実行されている場合でも(最後に別のバージョンがある可能性があるため)。

また、古いファイルを削除する前に、新しいファイルを下に置くように、あなたが更新していることを確認するために必要なこともいくつかあります。古いファイルを切り捨てないでください。しかし、それらもあなたを助けます:)。

通信する外部問題を使用することは難しい場合があります(更新された後に古いバージョンの新しいコピーを実行できないため)。しかし、これはあまり完了しておらず、ダウンロードなどのものである場合は、更新前にやや簡単に実現できます。

Yum/APTのようなCMDラインクライアントには懸念されないものもあります。たとえば、2+の「更新」を実行するプログラムがある場合、最初の更新がパッケージにある場合に問題が発生する可能性がありますマネジャー。ダウングレードはこれをさらに楽しくします:)。また、デーモンのようなプロセスは、基本的にパッケージマネージャーを「ロード」することはありませんが、他のゴッチャと同様に...他の理由で、とにかくこれに従うことを望んでいます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top