yumdownloader --urls mariadb-server #To get URLs for packages
yumdownloader --resolve mariadb-server #To actually download a package and all its dependencies
rpm -iv XXX # install
rpm -e XXX # remove
rpm -qa # list all packages
rpm -ql XXXX #list all files of XXX package
rpm -U XXX # update existed package to newer version
/etc/yum.conf # yum source configure
dpkg -l #列出所有安裝的包
dpkg -L xterm #列出xterm包安裝后的所有文件
dpkg -s xterm #顯示xterm包的狀態
dpkg -r xterm #刪除xterm包
dpkg -i xterm.deb #安裝xterm包
dpkg -S xterm.pc #在安裝的包中查找xterm.pc文件
dpkg -c xterm.deb #查看xterm.deb包中的內容
dpkg -x xterm.deb output #提取xterm.deb包中的內容到output目錄下
apt-cache search xterm #查詢xterm相關的包
也可以通過ppa來安裝個人發布的包:
1。到
https://launchpad.net/ubuntu/+ppas上搜索需要的包;
2。用類似如下的步驟安裝:
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer
遇到一個問題:
The following packages have unmet dependencies:
libssl-dev : Depends: libssl0.9.8 (= 0.9.8o-1ubuntu4) but 0.9.8o-1ubuntu4.1 is to be installed
解決方法是:sudo apt-get install libssl0.9.8=0.9.8o-1ubuntu4
如果僅僅是想升級一個包,可以用:
sudo apt-get install --only-upgrade XXX #Do not install new packages; When used in conjunction with install, only-upgrade will prevent packages on the command line from being upgraded if they are not already installed.
sudo apt-get autoremove #自動刪除沒用的包,autoremove is used to remove packages that were automatically installed to satisfy dependencies for some package and that are no more needed.
apt-cache show xterm #查看xterm包的信息,也可以看到xterm包下載的位置,例如Filename: pool/main/x/xterm/xterm_261-1ubuntu3_amd64.deb
apt-cache showsrc xterm #可以看到xterm包的源代碼的相關信息
/var/cache/apt/archives/ #下載的包的位置
dpkg -S ls #在已安裝的包中,查找哪些包中包含的文件有ls關鍵字
dpkg -S $(which ls) #在已安裝的包中,查找哪些包中包含/usr/bin/ls這個工具
apt-file update && apt-file search xterm.pc #不用下載包,查詢那個包含有xterm.pc文件
apt-get install --download-only xterm && dpkg -L xterm #只下載不安裝,然后再查看包里的內容,也可以使用apt-file show xterm來查看包里的內容
/etc/apt/sources.list #配置源,如果系統版本較低,例如ubuntu10.10,可以配置ubuntu11.04的源,因為10.10已經不再維護了,源里面的包會不全,其實更好的方式是找到目前依然可以提供10.10包的源,例如lupaworld,官方站的源還有,不過放到了old-releases.ubuntu.com下了。
apt-get source xterm #可以下載包的源代碼,下載到當前目錄下
通過上面這些有用的方法,成功解決了一個相當有難度的問題:
困擾我很久的一個問題是,X偶爾會freeze,ctrl+alt+backspace不好用,只能通過Alt+PrtScn(SysRq)+k(先按住alt,一直不松,然后依次按下PrtScn、k)來重啟X;在X Freeze期間,可以ssh上去,看到X程序cpu使用率為0%,gdb上去打印backtrace,從前幾層stack frame中發現問題出在./usr/lib/xorg/modules/drivers/intel_drv.so,進一步找到這個so在xserver-xorg-video-intel包里,其版本號為2.12.0-1ubuntu5,懷疑是它出了問題,找到這個包的下載路徑是pool/main/x/xserver-xorg-video-intel/xserver-xorg-video-intel_2.12.0-1ubuntu5_amd64.deb,從http://old-releases.ubuntu.com/ubuntu/上下載這個包的緊鄰升級版xserver-xorg-video-intel_2.12.0-1ubuntu5.2_amd64.deb,dpkg -i安裝,重啟后ok了。
下面是關于apt源路徑的一些說明(摘自http://www.linuxgoo.com/2005/66129/10252232428.html):
下邊是我的source.list中的一段:
QUOTE:
deb http://security.ubuntu.com/ubuntu dapper-security main restricted
deb-src http://security.ubuntu.com/ubuntu dapper-security main restricted
其中第一個字段中的deb/deb-src是指軟件包(deb)和源代碼包(deb-src)
而第二個字段指向的是軟件庫的位置,apt會自動根據軟件庫的位置和第三字段(dapper-security/dapper)的信息去抓取軟件索引(/dists)和軟件包或源代碼包(/pool)的信息,所以你可以用Firefox或者其它瀏覽器來測試一下各個軟件庫的速度,然后自己選擇放入到源中,不要的用#注釋掉即可。
而第三個字段(dapper/dapper-security/)代表的是Ubuntu的發行版。
而第三個字段之后的就是關于發行版的軟件包了,其中:
main(主要的)--“main”組件包括了自由軟件、可以被自由發布的軟件和被Ubuntu團隊完全支持的軟件。其中包括了大多數流行的和穩定的開源軟件,當您安裝Ubuntu時默認安裝的就是這些軟件。
restricted(限制的)--“restricted”組件是專供普遍用途,而且沒有自由軟件版權,但依然被Ubuntu團隊支持的軟件。請注意,因為不能直接修改軟件,因而我們可能不能提供完全的技術支持,即便如此,我們還能向實際作者反饋Bug報告。
universe(宇宙,世界,全人類)--“universe”組件是整個自由、開源Linux世界的縮影。在“universe”組件中,你可以找到大多數開源軟件,以及在開源版權下的軟件,所有這些都是在公共源的基礎上建立的。這些軟件都是使用“main”中的組件編寫的,它們能與“main”組件相安無事地共同運行,但它們沒有安全升級的保障。“universe”組件包含了數以千計的軟件。雖然是公共的,用戶必須明白它們與穩定的Ubuntu核心的軟件的差異和不穩定。
multiverse--multiverse”組件包含了“不自由”的軟件,這意味著這些軟件不滿足 Ubuntu相對于“main”組件的各種版權政策。當您使用這些軟件時,如何調整各種權力以及遵重版權所有者的問題,就完全依靠您自己把握了。這些軟件不被我們支持,而且通常不能被修改和更新,您將自己承擔任何風險。 現在,作為以上位置的新增功能,實際上新的軟件包都存儲在pool目錄中
附:
一.下列目錄存在于任何 Ubuntu 鏡像站點的 ubuntu 目錄下:
1)dists/:
本目錄包含“發行版”(distributions),此處是獲得 Ubuntu 發布版本(releases)和已發布版本(pre-releases)的軟件包的正規途徑。有些舊軟件包及 Contens-*.gz Packages.gz 等文件仍在其中。
2)pool/:
所有 Ubuntu 發布版及已發布版的軟件包的新的物理地址。
3)indices/:
維護人員文件和重載文件。
4)project/:
大部分為開發人員的資源,如:
project/experimental/:本目錄包含了處于開發中的軟件包和工具,它們均處于 alpha 測試階段。用戶不應使用這些軟件,因為即使是經驗豐富的用戶也會被搞得一團糟。
project/orphaned/:已不再有人維護的軟件包,它們已從發行版中孤立出來。
二.Ubuntu 發行版
現在在 dists 目錄下有三個 Ubuntu 發行版。它們是“hoary”發行版,“breezy”發行版,和“dapper”發行版。有時還有一個“edgy”發行版。其中也包含了一個現不再支持"warty"發行版。
1)hoary 發行版
hoary 2005年4月發布
2)breezy 發行版
breezy 2005年10月發布。現在,除了上述目錄,新上載的軟件包的物理存儲位置為pool目錄。在breezy下同樣有main、restricted、universe和multiverse子目錄,它們的作用與hoary中的一樣。
3)dapper 發行版
dapper 2006年6月發布。提供了長達3年的支持,新版本以Ubuntu 6.06 LTS(Long Term Support)(長期支持),它針對一些大組織的需求對桌面版和服務器版都做個一定程度上的增強。新上載的軟件包的物理存儲位置為pool目錄。在dapper下同樣有main、restricted、universe和multiverse子目錄,它們的作用與hoary中的一樣。
4)edgy 發行版
edgy 發行版反映了系統的最新開發進展。歡迎廣大用戶使用并測試這些軟件包,同時也提醒你們這些軟件包還不完善。使用edgy發行版的好處就是你可以獲得Ubuntu項目的最新更新—不過新東西也會出新問題,你得好壞兼收:-)
發布版代號 :
1)Warty Warthog 多疣的疣豬,
2)Hoary Hedgehog 灰白的刺猬,
3)Breezy Badger 活潑的獾,
4)Dapper Darke 漂亮的鴨子,
5)Edgy Eft 躁動的蜥蜴
三.Ubuntu 發布版其它倉庫
存在于dists目錄下的物理目錄名,例如breezy-updates和breezy-security,就是“附加的倉庫”。當某個Ubuntu發行版處于維護階段。將包的必要升級和安全更新放在附加的倉庫里。其附加倉庫通常有 ***-updates(更新)、***-security(安全)、***-proposed(提議)、***-backports。
四.pool目錄
過去,軟件包均放在dists目錄下相應發行版的子目錄中。這種做法產生了許多問題,當鏡像站點進行新版本發布時大量帶寬被消耗。
現在軟件包均放進一個巨大的“池子(pool)”,按照源碼包名稱分類存放。為了方便管理,pool目錄下按屬性再分類(main、restricted、 universe和multiverse),分類下面再按源碼包名稱的首字母歸檔。這些目錄包含的文件有:運行于各種系統架構的二進制軟件包,生成這些二進制軟件包的源碼包。
你可以執行命令apt-cache showsrc mypackagename,查看“Directory:”行獲知每個軟件包的存放位置。例如:apache軟件包存放在 pool/main/a/apache/軟件包存放在lib*軟件包數量巨大,它們以特殊的方式歸檔:例如,libpaper軟件包存放在 pool/main/libp/libpaper/。
諸如apt等命令訪問的索引文件仍位于dists目錄中。
通常,你大可不必注意這些,新版的apt和舊版dpkg-ftp會自動處理它們。
五.發布源目錄結構
在每個主目錄樹下(dists/dapper/main、dists/dapper/restricted、dists/dapper/universe、 dists/dapper/multiverse/,等)按芯片架構又分了子目錄,每個子目錄中存放著在該芯片架構下編譯的二進制軟件包。
binary-amd64/ AMD64 或 EM64T 架構
binary-i386/ 所有的使用 Intel/AMD/等 處理器的PC,
binary-powerpc/ Apple Macintosh G3, G4, 和 G5
binary-sparc/ Sun UltraSPARC 系統
六.源代碼
Ubuntu 系統中的main,universe組件有源代碼,不僅如此,許可證條款規定系統中所有的程序必須和其源代碼一起發行,或提供源代碼出售。
通常源代碼發布在source目錄,該目錄同時處于所有架構目錄中,更新的源碼則在pool目錄中。對于不太熟悉 Ubuntu 歸檔目錄結構的用戶想獲得源代碼可以試試apt-get source mypackagename命令。
有些軟件包,如著名的pine,由于許可證限制,只提供源碼包。
restricted和multiverse目錄中的軟件包可能不提供源代碼,因為它們沒有正式加入 Ubuntu 系統。