2017-08-18 11 views
0

私はQtソフトウェアのためのLinuxリリースをしようとしていますが、私は無頓着なLinux初心者です。静的にリンクされたQtライブラリを使ってアプリケーションをビルドし、.debと.rpmパッケージを作成しましたが、私がそれらをテストすると、いくつかのディストリビューションでライブラリが見つからないという警告が表示されます。たとえば、私の.debのバージョンはDebianとUbuntu上で正常に動作しますが、ライブラリがないためにLinux Mint KDEで起動しません。明らかに、私はしかし、必要なライブラリの一覧が異なるようですが、何とかすべての必要なライブラリが存在していることを確認する必要がありLinuxでソフトウェアを配布する場合のライブラリ依存関係

libpng16.so.16 => not found 
libicui18n.so.57 => not found 
libicuuc.so.57 => not found 
libicudata.so.57 => not found 

:私は見つけるのlddを実行している4つの欠落しているライブラリがあります。たとえば、Linux Mint Cinnamonは33個のライブラリを、Ubuntu Unityは34個をリストします(libpng12.so.0は余分なものです)。私はまた、それらのライブラリのいくつかはすべてのディストリビューションに付属する標準的なLinuxライブラリであると仮定し、それらを含める必要はありません。

私は本当に私がやっているか知っているので、いくつかの質問はありません:

私は私の.debと.rpmのパッケージに含める必要があるライブラリのリストを決定するための最良の方法は何ですか? lddが最善の選択肢であれば、リストされたすべてのライブラリを含める必要がありますか、またはすべてのDebian/rpmディストリビューションに標準でバンドルされているものがありますか?

これらのライブラリを含める最も良い方法は何ですか?それらをパッケージに含めるか依存関係リストに指定しますか?

他の一般的なアドバイスは、私がこれについて正しいことをしているかどうかはわからないので、評価してください。

ありがとうございました。

+3

また、パッケージに適切な依存関係を追加しましたか?あなたは本当に、あなたが持っているすべての依存関係を "標準"または "システム"のパッケージであってもリストするべきです。 –

+0

異なるLinuxディストリビューションには異なるライブラリがあります。 Fedora上に構築されたrpmは、CentOSまたはRHELにインストールされる可能性は低く、その逆もありません。 debのために同上。 Linux上でコードを配布する唯一の現実的な方法は、ソースコードです。それがLinuxのために設計されたものです。フリーソフトウェアは、ソースコードとして配布されています。バイナリABIは一般に下位互換性があるため、後でインストールする必要がありますが、同じLinuxディストリビューションでのみインストールする必要があります。 –

+0

https://stackoverflow.com/a/33837854/412080 –

答えて

1

ライブラリ依存関係;約パッケージ依存関係について考えてみましょう。

(deb、rpm)パッケージを作成するときに、それが依存する他のパッケージをリストすることができます。どのパッケージにあなたの望むライブラリがあるのか​​を調べ、そのパッケージを依存関係として追加してください。

次に、ユーザーがパッケージをインストールすると、必要に応じてパッケージマネージャーが依存するパッケージをインストールします。 Presto:必要なライブラリがあります。

+0

ありがとうございました。私はapt-fileプログラムを見つけました。このプログラムはDebian上のライブラリのパッケージを教えてくれます。依存リストにすべてのパッケージを含めましたが、Linux Mintを実行したときに、ライブラリが明確にインストールされていても依存関係の問題が発生していました。上記のコメントでSam Varshavchikが提案したように、解決策は古いバージョンのディストリビューションを構築することです。私はDebian 9.1をビルドしていましたが、8.4に変更した後に問題は解決されているようです。これはソートされた.debビルドなので、今すぐ.rpmバージョンを試してみます。 – Leagram

関連する問題