linux下自動獲取並安裝軟件包 apt-get 的命令介紹


apt-cache search package    搜索包


apt-cache show package    獲取包的相關信息,如說明、大小、版本等
sudo apt-get install package    安裝包
sudo apt-get install package - - reinstall 重新安裝包
sudo apt-get -f install    強制安裝?#"-f = --fix-missing"當是修復安裝吧...
sudo apt-get remove package    刪除包
sudo apt-get remove package - - purge   刪除包,包括刪除配置文件等
sudo apt-get update    更新源
sudo apt-get upgrade   更新已安裝的包
sudo apt-get dist-upgrade   升級系統
sudo apt-get dselect-upgrade   使用 dselect 升級
apt-cache depends package    了解使用依賴
apt-cache rdepends package    了解某個具體的依賴?#當是查看該包被哪些包依賴吧...
sudo apt-get build-dep package    安裝相關的編譯環境
apt-get source package    下載該包的源代碼
sudo apt-get clean && sudo apt-get autoclean    清理下載文件的存檔 && 只清理無用的包
sudo apt-get check    檢查是否有損壞的依賴
 
 
apt-get install
下載 以及所有倚賴的包裹,同時進行包裹的安裝或升級.如果某個包裹被設置了 hold (停止標志,就會被擱在一邊(即不會被升級).更多 hold 細節請看下面.
 
apt-get remove [--purge]
移除 以及任何倚賴這個包裹的其它包裹.
--purge 指明這個包裹應該被完全清除 (purged) ,更多信息請看 dpkg -P .
 
apt-get update
升級來自 Debian 鏡像的包裹列表,如果你想安裝當天的任何軟件,至少每天運行一次,而且每次修改了
/etc/apt/sources.list 后,必須執行.
 
apt-get upgrade [-u]
升級所以已經安裝的包裹為最新可用版本.不會安裝新的或移除老的包裹.如果一個包改變了倚賴關系而需要安裝一個新的包裹,那么它將不會被升級,而是標志為 hold .apt-get update 不會升級被標志為 hold 的包裹 (這個也就是 hold 的意思).請看下文如何手動設置包裹為 hold .我建議同時使用 '-u' 選項,因為這樣你就能看到哪些包裹將會被升級.
 
apt-get dist-upgrade [-u]
和 apt-get upgrade 類似,除了 dist-upgrade 會安裝和移除包裹來滿足倚賴關系.因此具有一定的危險性.
 
apt-cache search
搜索滿足 的包裹和描述.
 
apt-cache show
顯示 的完整的描述.
 
apt-cache showpkg
顯示 許多細節,以及和其它包裹的關系.
dselect
console-apt
aptitude
gnome-apt
APT 的幾個圖形前端(其中一些在使用前得先安裝).這里 dselect 無疑是最強大的,也是最古老,最難駕馭.
 
普通 Dpkg 用法
dpkg -i
安裝一個 Debian 包裹文件;如你手動下載的文件.
 
dpkg -c
列出 的內容.
 
dpkg -I
從 中提取包裹信息.
 
dpkg -r
移除一個已安裝的包裹.
 
dpkg -P
完全清除一個已安裝的包裹.和 remove 不同的是, remove 只是刪掉數據和可執行文件, purge 另外還刪除所有的配制文件.
 
dpkg -L
列出 安裝的所有文件清單.同時請看 dpkg -c 來檢查一個 .deb 文件的內容.
 
dpkg -s
顯示已安裝包裹的信息.同時請看 apt-cache 顯示 Debian 存檔中的包裹信息,以及 dpkg -I 來顯示從一個
.deb 文件中提取的包裹信息.
 
dpkg-reconfigure
重新配制一個已經安裝的包裹,如果它使用的是 debconf (debconf 為包裹安裝提供了一個統一的配制界面).你能夠重新配制 debconf 它本身,如你想改變它的前端或提問的優先權.例如,重新配制 debconf ,使用一個 dialog 前端,簡單運行:
dpkg-reconfigure --frontend=dialog debconf (如果你安裝時選錯了,這里可以改回來喲
echo " hold" | dpkg --set-selections
設置 的狀態為 hlod (命令行方式)
dpkg --get-selections ""
取的 的當前狀態 (命令行方式)
支持通配符,如:
Debian:~# dpkg --get-selections *wine*
libwine hold
libwine-alsa hold
libwine-arts hold
libwine-dev hold
libwine-nas hold
libwine-print hold
libwine-twain hold
wine hold
wine+ hold
wine-doc hold
wine-utils hold
例如:
大家現在用的都是 gaim-0.58 + QQ-plugin,為了防止 gaim 被升級,我們可以采用如下方法:
方法一:
Debian:~# echo "gaim hold" | dpkg --set-selections
然后用下面命令檢查一下:
Debian:~# dpkg --get-selections "gaim"
gaim hold
現在的狀態標志是 hold,就不能被升級了.
如果想恢復怎么辦呢?
Debian:~# echo "gaim install" | dpkg --set-selections
Debian:~# dpkg --get-selections "gaim"
gaim install
這時狀態標志又被重置為 install,可以繼續升級了.
同志們會問,哪個這些狀態標志都寫在哪個文件中呢?
在 /var/lib/dpkg/status 里,你也可以通過修改這個文件實現 hold.
有時你會發現有的軟件狀態標志是 purge,不要奇怪.
如:事先已經安裝了 amsn, 然后把它卸了.
apt-get remove --purge amsn
那么狀態標志就從 install 變成 purge.
方法二:
在/etc/apt 下手動建一個 preferences 文件
內容:
Package: gaim
Pin: version 0.58*
保存
更詳細內容請看:http://linuxsir.com/bbs/showthread....&threadid=22601
dpkg -S
在包裹數據庫中查找 ,並告訴你哪個包裹包含了這個文件.(注:查找的是事先已經安裝的包裹)
從源碼建立deb packages
apt-get source [-b]
下載一個源碼的包並解開。
 

你必須在你的/etc/apt/sources.list文件里寫入一條 deb-src 的記錄才能完成這項工作。
如果你輸入了一個-b參數,並且是以root的身份,deb包會被自動的創建。
 
apt-get build-dep
自動下載並安裝通過源碼創建 時需要的包。

只有apt 0.5以上版本才支持這個功能。
現在woody和以上版本包含了這個功能。
如果你使有一個舊版本的apt,查找依賴性最簡單的方法是查看源碼包中 debian/control 這個文件,
注意這個路徑是相對的,是包內的路徑。
 
普通的用法,結合 apt-get source -b,例子 (as root):
apt-get build-dep
apt-get source -b
會下載源碼包,建立依賴性,然后嘗試編譯源碼。
 
dpkg-source -x
如果你手工下載了一個程序的源碼包,其中包含了幾個類似 .orig.tar.gz , .dsc ,
以及 .diff.gz 之類的文件,
那么你就可以對 .dsc 文件使用這個命令來 unpack 源碼包。
 
 
dpkg-buildpackage
從 Debian 源碼樹建立一個deb包。你必須在source tree的主目錄才能生效。例如:
dpkg-buildpackage -rfakeroot -uc -b
這里 '-rfakeroot' 指定命令使用 fakeroot 程序來模仿 root 權限 (來實現所有者(ownership)目的),
'-uc' 表示 "Don't cryptographically sign the changelog", '-b' 代表只建立二進制包.
debuild
一個快速打包腳本類似 dpkg-buildpackage ,能自動的識別是否使用 fakeroot,
同時為你運行 lintian 和 gpg
修正倚賴關系
dpkg --configure --pending
如果dpkg在apt-get install upgrade dist-uptradeing 的時候出錯退出,
嘗試使用此命令來配置已經unpack的包。
然后再用 apt-get install ,upgrade, or dist-upgrade -f ,
然后再用 apt-get install, upgrade, or dist-upgrade.
可能會重復多次,這樣通常可以解決大多數的依賴性問題。
(同時,如果提示由於某種原因需要某個特定的包裹,你可以常識安裝或卸載這個包)
apt-get install -f
apt-get upgrade -f
apt-get dist-upgrade -f
嘗試修正上述過程中出現依賴性關系
注意 apt-get install -f 不需要 作為參數。

------------------------------------------------------------

以32位Ubuntu14.04下,獲取ls命令的源代碼為例,可以使用如下的方法下載源代碼:
1)使用which命令查看ls命令的位置,如下:
which ls # 輸出:/bin/ls

2)使用dpkg命令查詢ls命令所屬的包,如下:
dpkg -S /bin/ls # 輸出:coreutils: /bin/ls

3)使用apt-get命令來下載ls命令所在的包的源代碼,如下:
apt-get source coreutils

注:
1)在使用dpkg時,若出現錯誤,可以使用sudo命令使其以root權限執行。
2)使用apt-get source下載的源代碼保存到當前目錄下。。此外,當我們知道了命令所屬的包后,也可以到相應的官方網站下載。
------------------------------------------------------------



如何獲取ubuntu源碼包里面的源碼?

1、在獲取源碼包之前,確保在軟件源配置文件/etc/apt/sources.list中添加了deb-src項
2、使用如下命令獲取xxx源碼包的詳細信息:
 sudo apt-cache showsrc xxx 這用來查詢當前鏡像站點中是否有該源碼包。


3、源碼包中通常包含3個文件,分別以dsc,orig.tar.gz和diff.gz為后綴名。
 sudo apt-get source  xxx    命令來獲取源碼包,它會將源碼包下載到用戶當前目錄

並在命令執行過程中,調用dpkg-source命令,根據dsc文件中的信息,將源碼包解壓到同名目錄中,應用程序的源代碼就在這里面。

sudo apt-get source xxx

要強調的是,在下載源碼包前,必須確保安裝了dpkg-dev(執行”apt-get install dpkg-dev”來安裝),
否則,只會下載源碼包的3個文件,但不會解壓縮源碼包。當然你也可以自己用dpkg-source命令去解壓縮源碼包。

4、在編譯源碼包前,需要安裝具有依賴關系的相關軟件包。使用”apt-get build-dep”命令可以主動獲取並安裝所有相關的軟件包。

sudo apt-get build-dep xxx

5、現在可以來編譯源碼包了,首先進入源碼所在目錄,使用dpkg-buildpackage命令來編譯源碼包,它會將生成的Deb軟件包放置在上層目錄中。
cd xxx
sudo dpkg-buildpackage

這樣就會編譯生成xxx_i386.deb

6、安裝軟件包。使用”dpkg –i”命令來安裝生成的Deb軟件包。

sudo dpkg -i  xxx_i386.deb



------------------------------------------------------------

以32位Ubuntu14.04下,獲取ls命令的源代碼為例,可以使用如下的方法下載源代碼:
1)使用which命令查看ls命令的位置,如下:
which ls # 輸出:/bin/ls

2)使用dpkg命令查詢ls命令所屬的包,如下:
dpkg -S /bin/ls # 輸出:coreutils: /bin/ls

3)使用apt-get命令來下載ls命令所在的包的源代碼,如下:
apt-get source coreutils

注:
1)在使用dpkg時,若出現錯誤,可以使用sudo命令使其以root權限執行。
2)使用apt-get source下載的源代碼保存到當前目錄下。。此外,當我們知道了命令所屬的包后,也可以到相應的官方網站下載。


---------------------

本文來自 拿破侖的海闊天空 的CSDN 博客 ,全文地址請點擊:https://blog.csdn.net/hktkfly6/article/details/53156283?utm_source=copy


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM