0

ユーザーがソフトウェアをインストールしているかどうかに応じて、オプションの追加機能を持つアプリケーションがあります。

Linux では、python や PyUsb のようなものがインストールされているかどうかを判断する最良の方法は何ですか?

それが役立つ場合、私は C++ Qt アプリケーションを開発しています。

4

4 に答える 4

1

それらがパス内にあることなどを要求できます。必要な実行可能ファイルの存在を確認します(使用whichまたは類似のものを使用)。必要に応じて、実行可能ファイルの引数を使用して、必要なバージョンを確認することもできます。

于 2009-01-02T15:00:32.887 に答える
1

これは非効率的です (フォークして/bin/shを実行する必要があります)。もっと良い方法があるはずです!しかし、一般的なアプローチとして...常にsystem()があります。

( WEXITSTATUS()を使用することを忘れないでください!プログラムを中断できないように注意してください!)

#define SHOW(X)  cout << # X " = " << (X) << endl

int main()
{
  int status;

  SHOW( status = system( "which grep > /dev/null 2>&1" ) );
  SHOW( WEXITSTATUS(status) );

  SHOW( status = system( "which no_matching_file > /dev/null 2>&1" ) );
  SHOW( WEXITSTATUS(status) );
}

popen()もあります。これは、プログラムからの出力を取得して、バージョン番号、ライブラリなどを確認するのに役立ちます。

サブプロセスへの双方向 (読み書き) アクセスが必要な場合は、pipe()fork()exec()close()、 & dup2()を使用することをお勧めします。

于 2009-01-02T16:19:26.767 に答える
1

各ディストリビューションは独自のパッケージ マネージャーを持つことができるため、一般的に Linux でこれを行う方法を知りません。ただし、最も人気のあるディストリビューションをサポートしたい場合は、インストールされているソフトウェアをパッケージ マネージャーに問い合わせて (apt-get、rpm、および yum のサポートを開始することをお勧めします)、出力を解析して、認識しているパッケージを探すことができます。各マネージャーには、インストールされているパッケージを一覧表示する方法があります。私の提案は、次のとおりです。

apt-get --no-act check
rpm -qa
yum list installed
于 2009-01-02T15:13:57.210 に答える
0

もう 1 つの可能性は、すべての機能をユーザーに提示し、それらを使用しようとする場合に追加機能をインストールするように促すことです (例: http://0install.netを参照)。

于 2009-01-02T15:20:37.637 に答える