Ubuntu軟件包管理
Ubuntu下對軟件管理工具有:apt,dpkg,tasksel,aptitude等,我們常用的就是前三個工具。下面就介紹這三個工具的用法。
dpkg
在Linux發展之初,安裝軟件的時候是需要下載以tar.gz結尾的軟件源碼包,然后對源碼包進行編譯安裝。這是極其麻煩的使用。后來Debian(Ubuntu是基於Debian系統的)開發了dpkg(Debian Package)管理工具來管理軟件,軟件都是以deb結尾的編譯好的二進制包,通過dpkg命令可以安裝軟件和卸載軟件(CentOS中使用rpm包管理器)。
dpkg常用命令
- 安裝軟件:dpkg -i
- 移除軟件:dpkg -r
- 查看某個軟件包是否已經安裝:dpkg -l
- 查看某個軟件包中都包含哪些文件:dpkg -L
- 查看系統中的某個文件是由哪個軟件包提供的: dpkg -S /path/to/file
- 查看哪些軟件包未完成安裝:dpkg -C
- 重置軟件配置文件 dpkg-reconfigure
dpkg是底層的包管理工具,不太常用,最常用的是apt
apt
dpkg不夠人性化的一點就是不能自動解決依賴問題,比如A軟件包依賴於B軟件包,那么你先得安裝B才能安裝A。而且使用dpkg需要將軟件下載到本地才能安裝。使用apt安裝軟件時會自動從軟件倉庫下載軟件進行安裝,並且apt能自動解決依賴問題,當有依賴的時候它也會自動從軟件倉庫下載依賴的包進行安裝。當然apt底層還是調用dpkg來進行軟件安裝的。
apt相關文件
- /etc/apt/source.list 配置軟件包來源,也就是上面說的軟件倉庫
- /ect/apt/apt.conf.d 存在apt的零碎配置文件
- /ect/apt/preferences 制定軟件包的版本參數
- /var/cache/apt/archives 存放已下載的軟件包
- /var/cache/apt/archives/partial 存放正在下載的軟件包
- /var/lib/apt/lists 存放已下載的軟件包詳細信息
軟件源
軟件源(軟件倉庫)中存放這大量的軟件包,apt會從軟件源中下載軟件。在/ect/apt/soure.list中可以為apt配置軟件源。在這個文件中deb關鍵字定義已編譯的軟件包來源,deb-src定義源碼包的來源。每一行的格式如下:
deb(或deb-src) 軟件源地址 主版本代號 軟件倉庫1 軟件倉庫2 軟件倉庫3 ...
下面時我的source.list中的內容,我是用的時網易的軟件源鏡像
deb http://mirrors.163.com/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ xenial-backports main restricted universe multiverse
Ubuntu的軟件倉庫被分為4個部分,分別是main,restricted,universe和multiverse
- main:軟件包是自由軟件,Ubuntu提供及時性,安全性支持****
- restricted:不是完全的自由軟件,但是由於被廣泛使用,所以Ubuntu也提供及時性,安全性支持****
- universe:一般由社區維護的軟件,但Ubuntu不提供安全性的支持
- multiverse:非自由軟件,不被Ubuntu認可,不建議使用
apt-get 命令
apt-get 命令一般用於軟件包的安裝,更新和移除,下面是它的一些常用命令
| 命令 | 功能介紹 |
|---|---|
| update | 將軟件倉庫中的軟件包列表更新到本地,一般我們在安裝軟件之前需要執行該操作 |
| upgrade | 升級系統中的所有軟件包,如果一個軟件包在升級時會導致其他已安裝的軟件包被刪除,那么這個軟件包將不會被升級 |
| dist-upgrade | 該命令時upgrage的升級版,它會嘗試去解決安裝時出現沖突,比如會刪除已安裝的軟件包,所以慎用 |
| remove | 卸載軟件包(保留配置文件),同時也會卸載依賴於該軟件的包,A依賴於B,卸載B時也會卸載A |
| install | 安裝軟件包 |
| source | 下載源碼包 |
| clean | 刪除本地緩存的所有軟件安裝包 |
| check | 檢查是否存在有問題的依賴關系 |
當然,在使用apt-get時還可以帶一些選項,關於apt-get的詳細說明可以查看手冊man apt-get
安裝MySQL數據庫
#apt-get install mysql
升級軟件
#apt-get update && apt-get upgrade
apt-cache命令
apt-cache一般用於軟件包查找和顯示軟件包信息
當我們安裝某個軟件包時,但是卻不知道具體包名時可以使用apt-cache進行查找
查找mysql數據庫安裝包的包名
# apt-cache search mysql
顯示mysql-server(也就是mysql數據庫)的安裝包信息
#apt-cache show mysql-server
tasksel
tasksel命令是用來安裝“任務”的,任務就是一些軟件的組合,比如LAMP這個任務,就是由apache,php,MySQL等軟件包組成,tasksel安裝任務就是安裝一系列的軟件包而已。
查看系統提供的任務
# tasksel --list-tasks
u manual Manual package selection
u dns-server DNS server
u edubuntu-desktop-gnome Edubuntu desktop
u kubuntu-desktop Kubuntu desktop
u kubuntu-full Kubuntu full
i lamp-server LAMP server
u lubuntu-core Lubuntu minimal installation
u lubuntu-desktop Lubuntu Desktop
u mail-server Mail server
上面顯示LAMP已經安裝
使用tasksel安裝和卸載任務
安裝LAMP
# tasksel install lamp-server
移除LAMP
# tasksel remove lamp-server
