2016-11-27 17 views
0

私のPCのOSは14.04です。私はいくつかのソフトウェアを自動的にインストールするためのスクリプトを書いておきたいと思います。例えば、 裁判官google-chromeがインストールされているかどうかは、どのように私はソフトウェアがインストールされている判断するシェルを使用できますか?

if [ !which google-chrome #I knoe this way was wrong] 
do 
    download it 
    sudo dpkg -i google-chrome*.deb 
done 
fi 

もし私が間違っていればジャッジコードを知っていますが、どのように私はそれがシェルを使用してインストールされていないと判断できますか教えていただけますか?

+0

を使用している可能性があり、私はそれは良いアイデアだとは思いません。私は 'aptitude search'を使用して' aptitude install'を実行します。 –

+0

exeample判事のgoogle-chrome使用シェル@Basile Starynkevitch –

+0

にあなたのやり方を示すことができますか?これをやりたいのですか?**あなたの質問を編集して**改善してください)。私の答えはいくつかの手がかりを与えた。 –

答えて

1

あなたは、パッケージ名の状態を確認するためにdpkgを使用することができますし、それがインストールされていない場合、それはあなたを教えてくれますか、それは、アクティブではない場合等...

+0

あなたが[google-chrome]のように使用すると判断する方法を私に示すコードを表示できますか? –

2

お知らせがwhichPATH variableを検索していること。 thisを参照してください。指定されたユーザーは、$PATHに記載されているパッケージシステムによって管理されていないディレクトリ(たとえば、$HOME/bin/または/usr/local/bin/ ...)を持っている可能性があります。

Linuxは、心臓がmulti-userシステムであることを忘れないでください。たとえば、私の妻と息子は同じPCを使用できます。異なるユーザーは$PATHの設定が異なる可能性がありますので、異なるセットのプログラムを使用します(たとえば、execvp(3)または同等のものをシェルから呼び出すなど)。

私は、ユーザーがいくつかの独自の google-chromeプログラムを持っている場合は、システム全体のレベルでは、 google-chrome-stableパッケージをインストールする必要がありますとは思わない

(例えば、彼の他のいくつかの手順を通して設置$HOME/bin/、中)しかし、あなた(とおそらくあなたのユーザー)は、その場合に何をするかを決定する必要があります。

代わりに、google-chrome-stableパッケージがインストールされているかどうかをテストします(しかし、あなたが求めているものと異なることをしています)。

おそらく、あなたは私は、自動インストール、ユーザーの明示的および事前の同意なしに任意のパッケージは良いアイデアだとは思わない、ところで

if dpkg -l google-chrome-stable >& /dev/null ; then 
    echo google-chrome-stable is installed 
fi 

をテストすることがあります。代わりに彼にインストールを提案する必要があります(それはおそらくシェル内の賢明な自動補完の問題です)。私のDebianシステムで

/usr/bin/google-chrome/opt/google/chrome/google-chromeへのシンボリックリンクである/usr/bin/google-chrome-stableへのシンボリックリンクである/etc/altneratives/google-chromeへのシンボリックリンクです。だから、realpath(1)で、私も

if dpkg -S $(realpath $(which google-chrome)) >& /dev/null ; then 
    echo some package gives google-chrome 
fi 
関連する問題