私はコードを書き直さずに(インターフェース、GNOME、KDEなどを除く)、すべてのLinuxインストールで実行できるアプリケーションを書くことを計画しています。
私はディストリビューション間の違いの詳細な経験がなく、プロジェクトに関する詳細を提供することはできません。計画段階に入るだけで、カーネル内でできるだけ対話することを除いて、プロジェクトに関する詳細を提供することはできません。できるだけコンピュータのハードウェアを使用してください。
答え1
開発時の注意点
- 標準ビルドシステムの使用
ハードコーディングライブラリのパスを防ぐpkg-config
代わりに、外部パッケージの検索などのツールを使用してください。wxWidgets
アプリケーションにGUIがある場合は、実行している場所に基づいてデフォルトのUI要素をレンダリングできるフレームワークなどを使用してください。- 他のディストリビューションで実行されないパッケージで依存関係を生成しないでください。
アプリケーションがすべてのディストリビューションで動作するかどうかを完全に確認する唯一の方法は、アプリケーションを実際に実行してテストすることです。これを達成する 1 つの方法は、各デプロイメントに仮想マシンを作成することです。これには VirtualBox を使用できます。このタイプのテストのために、私のボックスには約8つのVMがあります。
すべてのディストリビューションはパッケージをインストールするためにさまざまな方法を使用しているため、アプリケーションのデプロイメントをあまり一般化できないと思います。 Debian はdeb
Fedora を使用しますrpm
。
答え2
私の2cですが、公式リポジトリにパッケージに付属しているアプリやソースからコンパイルされたアプリについては、あまり面倒なことはありません。サードパーティのバイナリとしてデプロイされたアプリケーションは、いくつかの依存関係の問題に遭遇する傾向があります。通常、これらの問題を追跡して手動で解決する必要があります。
したがって、Linuxアプリをリリースするには、パッケージ化して公式リポジトリに入れます。それ以外の場合は、ソースコード形式でデプロイし、ユーザーが自分のシステムに合わせてコンパイルするようにします。
答え3
非埋め込みLinux用のコードを書くときに覚えておくべき最も重要なことは、ディストリビューションごとにライブラリバージョンセットが異なることです。したがって、十分に古いベースラインを設定する必要があります。 Debian は更新速度が遅いため、安定した Debian (またはリリース後数ヶ月以内に存在する古い安定) が合理的な選択であることがよくあります。
各ディストリビューションを別々にパッケージ化する必要があります。アプリがオープンソースで完全に成功した場合は、誰かがアプリをインポートしてパッケージ化するのに役立ちますので、これは必須の技術ではありません。パッケージングを控えて、ディストリビューション間の違いは、主に開発や日常的な使用ではなく、システム管理に影響します。
カーネルにパッチを適用する場合は、より多くのディストリビューションでテストする必要があります。各ディストリビューションには独自のパッチがあり、非互換性が発生する可能性があり、各ディストリビューションは使用可能なユーザースペース設定の他のカーネルインターフェイスセットに依存する可能性が高いためです(たとえば、次の項目が必要です)。モジュールではありません)。
アプリケーションを組み込みシステム(ここではサーバー、デスクトップ、またはラップトップ以外のシステムを意味します)で実行する場合は、上記の内容が正しくないことに注意してください。 Linuxカーネルを実行しても、一般的に使用されるライブラリはありません。 、始める...glibc賛成して忌避したμClibc、フードライブラリ、バイオニック、等。
答え4
ディストリビューションの主な違いは、パッケージングとアプリケーションのデフォルト/構成です。決定されたアーキテクチャで実行されるすべてのコードは、そのアーキテクチャのすべてのリリースで実行する必要があります。さらに、KDEでGNOMEアプリケーションを簡単に実行でき、その逆も可能です。