2009年10月4日 星期日

dpkg 軟體維護工具

http://blog.longwin.com.tw/archives/000359.html

dpkg的用法:
-S 顯示特定檔案所屬的套件名稱 dpkg -S /etc/samba/smb.conf
-i 安裝套件 dpkg -i
-P 完全移除某一個套件 dpkg -p samba
-l 顯示已經安裝的套件 dpkg -l
-L 顯示某一個已安裝的套件的檔案名稱及安裝路徑 dpkg -L samba
-p 顯示已安裝套件的詳細訊息 dpkg -p samba
-s 查詢系統是否安裝了某一個套件 dpkg -s samba


http://tavi.debian.org.tw/index.php?page=dpkg

顯示目前裝在系統中的所有 packages(rpm 用 rpm -qa)
dpkg --list


想知道總共有那些檔案安裝在系統中(rpm 為 rpm -ql samba)
dpkg --listfiles samba


或是在系統中有某個執行檔, 想知道屬於那個 package, 這樣在別台機器中才有辦法安裝
$ which smbd
/usr/sbin/smbd
$ dpkg --search /usr/sbin/smbd
samba: /usr/sbin/smbd


最前面的 samba 即為 package 名稱, 先用 which 找到 smbd 這個執行檔放在那個路徑, 再用 dpkg --search 來找到 package 名稱(redhat 中則用 rpm -qf /usr/sbin/smbd)

看 package 的說明(redhat 為 rpm -qi samba)
dpkg --status package_name

dpkg -s package_name


假設我們由網路上自行抓了一個 .deb 的檔回來, 這時就要用 dpkg 來安裝(redhat 為 rpm -i xxx.rpm)
dpkg --install package_name.deb

dpkg -i package_name.deb


移除某個 package(rpm 為 rpm -e package_name)
dpkg --remove package_name

dpkg -r package_name

徹底移除 package
dpkg --purge package_name

dpkg -P package_name


在還未安裝到系統中前, 查看會安裝那些檔案在系統中(rpm 用 rpm -qlp xxx.rpm)
dpkg --contents package_name.deb

dpkg -c package_name.deb


在還未安裝到系統中前, 查看 deb 檔es的資訊(rpm 用 rpm -qip xxx.rpm)
dpkg --info xxx.deb


顯示目前各個軟體套件的安裝狀態(未安裝、正確安裝、被移除、完整移除、安裝失敗等等)
dpkg --get-selections


如何在升級套件時, 讓某些套件不要更新:
echo "packagename hold" | dpkg --set-selections

沒有留言: