Linuxディストリビューションで実行されるアプリケーションを作成する場合、何に注意する必要がありますか?


15

Linuxのインストールでコードを書き直すことなく実行できるようにしたいアプリを書く予定です(インターフェイス、GNOME対KDEなどを除く)。

私はディストリビューション間の違いの詳細についてはあまり経験がありません。また、対話するためにカーネルの奥深くを突っ込む以外は計画段階に入ったばかりなので、プロジェクトの詳細を提供することもできませんできるだけ多くのコンピューターのハードウェアで。


オープンソースまたはプロプライエタリ?コンパイルまたは解釈?
xenoterracide

オープンソースでコンパイル済み。

オラクルが行うようによくして、あなたは、あなたのプログラムを再リンクしますいくつかの小さなアプリ/メイクファイルか何かを、書くことについて心配する必要はありません
xenoterracide

回答:


10

開発する際に留意すべき点、

  1. 標準ビルドシステムを使用する
  2. ライブラリパスのハードコーディングを避ける
  3. pkg-config代わりに、外部パッケージを見つけるなどのツールを使用してください。
  4. アプリケーションにGUIがある場合、wxWidgets実行場所に応じてネイティブUI要素をレンダリングできるフレームワークを使用します。
  5. 他のディストリビューションでは実行されないパッケージで依存関係を作成しないでください。

アプリケーションがすべてのディストリビューションで動作することを完全に保証する唯一の方法は、実際に実行してテストすることです。これを行う1つの方法は、ディストリビューションごとに仮想マシンを作成することです。VirtualBoxを使用してこれを行うことができます。この種のテストのために、私のマシンには約8台の仮想マシンがあります。

ディストリビューションごとにパッケージのインストール方法が異なるため、アプリケーションのデプロイについてあまり一般化することはできないと思います。Debianはdeb、fedoraを使用しrpmます。


3
ハードコーディングパスを避けてください。すべてのディストリビューションの最大の違いは、パッケージマネージャーと、どこに物を置くかです。彼らはすべてのファイルとディレクトリをあなたとは異なる場所に置くと仮定します。
xenoterracide

2

ちょうど私の2cですが、公式リポジトリにパッケージが付属しているアプリケーションまたはソースからコンパイルされたアプリケーションで頭痛がしなくなりました。サードパーティのバイナリとして配布されるアプリケーションは、いくつかの依存関係の問題に悩まされる傾向があります。通常、これらを追跡し、手動で解決する必要があります。

したがって、Linuxアプリをリリースする場合は、それをパッケージ化して公式リポジトリに入れるようにします。それ以外の場合は、ソース形式で配布し、ユーザーにシステム用にコンパイルしてもらいます。


2

組み込みLinux向けに作成している場合、留意すべき主なことは、ディストリビューションごとにライブラリバージョンのコレクションが異なることです。したがって、十分に古いベースラインを設定する必要があります。Debianの更新が遅いため、Debian安定版(または、リリース後数か月以内に存在する場合は旧安定版)が妥当な選択になる傾向があります。

ディストリビューションごとに個別にパッケージ化する必要があります。アプリケーションがオープンソースであり、成功している場合は、誰かがそれを手に入れてパッケージングに貢献することを期待できますので、それは必須のスキルではありません。パッケージ化以外のディストリビューション間の違いは、開発や日常的な使用ではなく、システム管理にほとんど影響します。

カーネルにパッチを適用する場合、各ディストリビューションには非互換性を引き起こす可能性のある独自のパッチがあり、各ディストリビューションには利用可能なカーネルインターフェイスの異なるセットに依存するユーザーランド設定があるため、より多くのディストリビューションでテストする必要があります(要件など)モジュールではないものもあります)。

アプリケーションを組み込みシステム(ここではサーバー、デスクトップ、ラップトップではないものを意味します)で動作させたい場合、上記で書いたことは当てはまりません。Linuxカーネルを実行している場合でも、通常のライブラリはありません。μClibcdietlibcBionicなどを優先してGlibc回避することから始めます



0

ディストリビューションは、主にパッケージングとアプリケーションのデフォルト/構成が異なります。決定されたアーキテクチャで実行されるすべてのコードは、そのアーキテクチャのすべてのディストリビューションで実行される必要があります。また、GNOMEアプリをKDEで簡単に実行したり、その逆を実行したりできるため、最適なユーザー/ユーザーベースに合ったものを選択できます。


0

主なことは、言語を選択することです。これはどの言語で実行されますか?Linuxディストリビューションで実行したい場合は、Pythonで記述できます。Linuxで実行されるpythonアプリは、(基本的に)変更なしでLinuxディストリビューションで実行されます。

Pythonには、素晴らしいGTKおよびQtバインダーもあります。私はgtkを使ったことは一度もありませんが、PyQtは本当に素晴らしいです。

pythonの利点は、おそらく拡張機能をコンパイルする必要がないことです(ただし、記述内容に完全に依存します。必要な場合でも、非常に簡単です)。また、pypiを介した優れた配布ソースもあります。 。そこからPythonプログラムをインストールするのは、通常、ディストリビューションパッケージリポジトリよりも簡単です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.