
コマンドをインストールする、つまり /bin または /usr/bin に新しいファイルを追加する新しいパッケージを作成したいとします。
しかし、コマンドにはまだ名前を付けていません。競合が発生した場合は、できるだけ早く確認したいと思います。
いくつかのリポジトリ (Fedora、RPM fusion...) があることを考えると、特定のファイル/コマンドが現在利用可能な他のパッケージによってインストールされないことを確認するのに役立つクエリはありますか?
答え1
fedora だけをチェックするルートは使用しないでください。そうすると、別の場所にパッケージ化したいときに問題が発生したり、fedora が既存のアプリを持ち込んでそのアプリの名前が自分のアプリと衝突したりすることになります。
私が書いたアプリが公式リポジトリに入ったとき、ディストリビューション パッケージ作成者が、そのアプリのコマンド名 (短くてわかりやすい) を変更するよう強制してきました。これは、古いけれどもまだ利用可能な不要なコードと衝突したためです。今すぐ入手したほうがよいでしょう。
比較的ユニークな名前から始めて、ネットで検索する検索エンジン(1つまたは2つ)を使用して検索します。少なくとも ソースフォージそしてギットハブ直接。まったく異なる OS (Windows、IOS など) を対象としているように見える場合でも、衝突を回避します。
コマンド名だけを使用してネットを検索できない場合 (つまり、「linux mycommandname」を検索しないでください)、無関係な結果が多すぎる場合は、その単語が十分に一意ではありません (これには、外国語に存在することが判明した単語、オーストラリアのポップのブランド名などが含まれます)。これはおそらく少なくとも 5 文字を意味します。この時点でそれより少ないと偶然の一致を待つだけであり、より多くの文字の方が良いでしょう。コマンドには長くて説明的な名前 ( superFooBar
) を使用し、ユーザーがfoo
望む場合は短いエイリアス ( ) を作成できるようにする方が、ほとんど意味のない短いエイリアス (頭字語、母音を削除した単語など) を作成するよりも良いです。これはすぐに POSIX に取り込まれることはありません。これは不明瞭なオプションのアプリケーションであり、利便性ではなく明確さのためにラベル付けする必要があります。
特定のシステムで利用可能なリポジトリを検索するだけの場合は、以下を使用できますyum provides
。
yum provides "*/superFooBar"
内部にグロブ アスタリスク (*) を含む引用符に注意してください。これにより、シェルによる拡張が防止され、 にそのまま渡され、同様にワイルドカードとして扱われます。これにより、すべてのリポジトリのすべてのパッケージによってインストールされたすべてのファイルの完全なパスが検索されるため、一致にはなどがyum
含まれる可能性があります。/usr/bin/superFooBar
/etc/default/superFooBar
繰り返しますが、これを公開または組織内で非公開で配布する意図がある場合は、これをお勧めしません。自分と自分が個人的に責任を持つマシンだけに使用する場合は問題ありませんが、そうでない場合は、十分に徹底されていません。