目前在各 Linux 发行版中, 比较著名的软件包管理系统有:
RPM: Red Hat/Fedora,Suse,Mandriva 使用的是这类管理系统.
DPKG: Debian,ubuntu使用的是这类管理系统.
redhat的rpm软件包管理相信大家都很熟悉,这里介绍debian下管理配置,在/etc/apt/sources.list。文件内容的格式如下:
deb http://security.debian.org/ lenny/updates main
deb-src http://security.debian.org/ lenny/updates main
第一列描述了文件类型,是deb类型还是deb-src类型的,deb是已经编译好的二进制软件包,deb-src是源码包,第二列是使用的镜像地址,apt可以使用多种类型的地址,如:http、ftp、file等。 main contrib non-free是源下面不同的目录,每个目录放一类软件.在每次修改sources.list文件都需要运行apt-get update命令更新源列表。
系统中所有 packages 的信息都在 /var/lib/dpkg/目录下, 其子目录 /var/lib/dpkg/info 用于保存各个软件包的配置文件列表
/var/lib/dpkg/available 文件的内容是软件包的描述信息, 该软件包括当前系统所使用的 Debian 安装源中的所有软件包,其中包括当前系统中已安装的和未安装的软件包.
/var/cache/apt/archives 目录是在用 apt-get install 安装软件包时,软件包的临时存放路径/etc/apt/sources.list 存放的是软件源站点, 当执行 sudo apt-get install package-name 时,软件包就去这些站点下载软件包到本地并执行安装
下面是yum与apt软件包管理常用命令对比
YUM包管理 | APT包管理 | 备注 |
yum install package-name | apt-get install package-name | 安装软件包 |
yum remove package-name | apt-get remove package-name | 卸载软件包(保留配置文件)加入 --purge 则删除配置文件 |
yum upgrade | apt-get upgrade | 更新所有已安装的软件包,apt-get dist-upgrade —— 将系统升级到新版本 |
yum clean package-name | apt-get clean | 清除cache中包文件 |
yumdownloader source package-name | apt-get source package-name | 下载程序的源代码包 |
yum search package-name | apt-cache search package-name | 在软件资料库中搜索软件包 |
yum info package-name | apt-cache show package-name | 查看包信息 |
下面是rpm与dpkg软件包管理常用命令对比
RPM包管理 | Debian包管理 | 备注 |
rpm -qa | dpkg -l | 查询当前系统中已安装的所有软件包 |
rpm -qi package-name | dpkg -s package-name | 查询系统中某个软件包的详细信息 |
rpm -ql package-name | dpkg -L package-name | 显示已安装软件包的文件列表 |
rpm -qf file | dpkg -S file | 查询系统中指定的文件属于哪个包 |
rpm -qpi file.rpm | dpkg -I pkg.deb | 显示指定deb软件包文件的详细信息 |
rpm -qlp file.rpm | dpkg -c pkg.deb | 显示deb包中的文件列表 |
rpm -ivh file.rpm | dpkg -i pkg.deb | 安装deb软件包 |
rpm -e package-name | dpkg -P package-name | 彻底卸载deb软件包 |
rpm2cpio file.rpm|cpio -id | dpkg -x pkg.deb . | 解包到当前目录 |
rpm -qpR file.rpm | apt-cache depends package-name | 查询软件对环境的依赖关系 |
rpm --force --nodpes -i file.rpm | dpkg -i --force-all pkg.deb | 强行安装软件包 |
rpm -qp --scripts file.rpm | dpkg -e pkg.deb | 查询管理软件包脚本 |
rpmbuild -bb filename.spec | dpkg -b pkg.deb | 建软件包 |
rpm -V package-name | debsums -a package-name | 校建软件包中的文件是否被修改 |
rpm -checksig file.rpm | debsig -c pkg.deb | 检证软件包签名是否正确 |
有时仅需要将包下载下来不安装,这里apt-get使用参数-d 很方便,例如:
root@10.1.1.200:~# apt-get install -d memcached
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
apache2-utils
Use 'apt-get autoremove' to remove them.
Suggested packages:
libcache-memcached-perl
The following NEW packages will be installed:
memcached
0 upgraded, 1 newly installed, 0 to remove and 31 not upgraded.
Need to get 47.4kB of archives.
After this operation, 180kB of additional disk space will be used.
Get:1 http://apt.shidc.taomee.com lenny/updates/main memcached 1.2.2-1+lenny1 [47.4kB]
Fetched 47.4kB in 0s (163kB/s)
Download complete and in download only mode
使用yum下载rpm包,
安装yum-utils,直接用yumdownloader 就可以直接下载yum源中的rpm包.
root@10.1.1.200:~# yum install yum-utils
root@10.1.1.200:~# yumdownloader crontabs.noarch
root@10.1.1.200:~# ls
anaconda-ks.cfg crontabs-1.10-33.el6.noarch.rpm install.log install.log.syslog
以下是apt-get是经常会用到的参数:
-d, --download-only 仅仅是下载该软件包
-m, --ignore-missing, --fix-missing 忽视丢失的包
--no-download Disables downloading of packages
-y, --yes, --assume-yes 在安装过程中,自动回答yes
--assume-no 在安装过程中,自动回答no
-u, --show-upgraded 显示哪些包会被升级
--reinstall 重装已经安装的包
--purge remove并且删除配置文件
--allow-unauthenticated 忽略包的认证机制