請問如何偵測系統中是否有安裝某個 deb 套件?

Debian 有很多實用的工具如: apt 系列 、 update- 系列,但是我們卻常常忽略了!這個版就是要大家一起來分享您在使用 debian 特殊指令的經驗!請大家共襄盛舉囉!注意不要在此提問問題喔!

請問如何偵測系統中是否有安裝某個 deb 套件?

文章訪客 » 週五 12月 02, 2005 7:32 am

如果要寫一個 Shell Script 指令稿,
以 dpkg -i 自動安裝大量的 *.deb 套件,
請問要如何偵測系統中某個套件是否已經安裝了呢?
謝謝!

意思大概是:
代碼: 選擇全部
if [ 某個 A 套件已安裝 ]; then
   # 繼續安裝 B 套件
else
   # 放棄安裝 B 套件
fi
訪客
 

文章wsun013 » 週五 12月 02, 2005 8:09 am

dpkg -l 會秀出裝了什麼
所以您可以
either
dpkg -l | grep package_name #if package_name is not fully known
or
dpkg -l package_name #if you do know the package name

以上
------BEGIN GEEK CODE BLOCK------
Version: 3.12
GE d->++ s: a-- C+++>++++ UL>++++ P>++++ L++>++++ E---- W+ N@ o K- w++(+)
O- M- V? PS+++(+) PE++(+) Y-- PGP- t>--- 5? X+++ R- tv-(--) b+ DI? D+ G e++>++++
h+(!) r++(%) y*>++++
-------END GEEK CODE BLOCK-------
頭像
wsun013
快樂的大學生
快樂的大學生
 
文章: 784
註冊時間: 週二 9月 14, 2004 12:12 pm
來自: 紐西蘭

文章chihchun » 週五 12月 02, 2005 8:27 am

代碼: 選擇全部
#!/bin/sh
dpkg=$1
dpkg-query -s ${dpkg} ; STAT=$?
if [ $STAT -ne 0 ]; then
    echo 繼續安裝 $dpkg 套件
else
    echo 放棄安裝 $dpkg 套件
fi


代碼: 選擇全部
$ ./query.sh gcc
Package: gcc
Status: install ok installed
Priority: standard
Section: devel
Installed-Size: 28
Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
Architecture: i386
Source: gcc-defaults (1.29)
Version: 4:4.0.2-1
Provides: c-compiler
Depends: cpp (>= 4:4.0.2-1), gcc-4.0 (>= 4.0.2-2)
Recommends: libc6-dev | libc-dev
Suggests: make, manpages-dev, autoconf, automake1.9, libtool, flex, bison, gdb, gcc-doc
Conflicts: gcc-doc (<< 1:2.95.3)
Description: The GNU C compiler
 This is the GNU C compiler, a fairly portable optimizing compiler for C.
 .
 This is a dependency package providing the default GNU C compiler.
放棄安裝 gcc 套件
$ ./query.sh microsoftoffice
系統沒有安裝套件“microsoftoffice”,因而沒有相關的訊息。
使用 dpkg --info (= dpkg-deb --info) 來檢測打包好的檔案,
還可以用過 dpkg --contents (= dpkg-deb --contents) 來列出它們的內容。
繼續安裝 microsoftoffice 套件


這個方法僅適用於完全未安裝的套件,如果該套件曾經被安裝後移除。也會顯示成放棄安裝,更好的辦法是自行辨讀 Status。
-Rex, geek by nature linux by choice
http://people.debian.org.tw/~chihchun
頭像
chihchun
摩托學園!學園長們
摩托學園!學園長們
 
文章: 185
註冊時間: 週三 11月 27, 2002 10:17 am
來自: KaLUG

文章d2207197 » 週六 12月 03, 2005 1:40 am

我覺得用 apt 是比較好的方法
代碼: 選擇全部
# cp *.deb /root/apt
# apt-ftparchive packages ./ | gzip -9 > Packages.gz
# echo 'deb file:/root/apt ./' >> /etc/apt/sources.list
# apt-get update
# apt-get install $(ls *.deb |sed 's/_.*$//g') or aptitude
頭像
d2207197
鑽研的研究生
鑽研的研究生
 
文章: 1763
註冊時間: 週二 5月 27, 2003 9:57 pm
來自: 火星


回到 debian command

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客