# package-manage
#
#
# 2011.10.26
1:ubuntu包管理,
希望能查看包信息,安装包,查找包等操作。
这里列出,我觉得可能会常用的命令,具体的可以看下面,下面的内容主要来自man手册
- apt-get update # 更新
-
apt-get upgrade
-
apt-get install package # 安装包
-
apt-get remove package # 删除包
-
apt-get source package # 取得源代码
-
-
apt-get clean # 清除缓存的package
-
apt-get autoclean
-
apt-get autoremove
- apt-cache stats # 显示cache的统计信息
-
apt-cache show pkg # 显示相应package的详细信息
-
apt-cache search pattern # 搜索package
-
apt-cache pkgnames # 输出APT知道的所有packages
-
apt-cache depends pkg # 显示package的依赖关系
- dpkg -i pkg # 安装package
-
dpkg -r pkg # 删除package
-
dpkg -P pkg # 彻底删除package
-
dpkg -C # 显示不完全安装的package
-
dpkg --get-selections # 显示所有package的selection state (见下面)
-
-
dpkg -I pkg # 显示package的信息
-
dpkg -c pkg # 显示deb包里的文件列表
-
dpkg -e pkg dir # 提取deb包里的控制文件到dir目录中
-
dpkg -x pkg dir # 提取deb包里的所有文件
-
dpkg -X pkg dir # 同上
-
-
dpkg -l pattern # 列出满足pattern模式的包名
-
dpkg -s pkg # 显示package的状态
-
dpkg -L pkg # 列出安装该package时,安装到系统中的文件
-
dpkg -S filename # 给定文件查找包名, 如 dpkg -S `which ls`
-
dpkg -p pkg # 显示package的详细信息
2: apt-get命令
update :将package索引文件与sources同步。可用package的索引都是根据/etc/apt/sources.list
中指定的sources来获取的。应该在upgrade或dist-upgrade之前执行该命令。
upgrade :用来安装那些已安装package的更新版本
dist-upgrade :比upgrade更强大,能灵活的处理新版本package的依赖关系。
install :用于安装或更新一个或多个package,如果package名字后有一个连字号(-),
则该package会被删除。
package名可以使用正则表达式
remove :删除相应的package,并不会删除配置文件
purge :清除干净
source :让apt-get获取源码package。若加上--compile选项,
则会用dpkg-buildpackage将源码编译成.deb文件
用--download-only则下载的源码包不会自动解压缩。
build-dep :导致apt-get去install/remove packages,为满足依赖关系。
check :更新package cache,并检查损坏的依赖关系。
clean :删除系统缓存的packages,它们在目录/var/cache/apt/archives/
和/var/cache/apt/archives/partial/
autoclean : 只删除那些不再有用和不会再下载的packages
autoremove :删除那些因依赖关系而自动安装的packages,会确保它们不再有用。
与该命令相关的文件:
/etc/apt/sources.list
/etc/apt/apt.conf :配置文件
/etc/apt/preferences :一个preference指定特定源来获得特定的package
/var/cache/apt/archives/ :保存的packages
/var/cache/apt/archives/partial
/var/lib/apt/lists/ :存储sources.list中每个源的信息
3:apt-cache命令
apt-cache用来管理APT的package cache
add file(s) :
showpkg pkg(s) :显示packages的信息
stats :显示cache的统计信息,如包的个数和占用空间大小
showsrc pkg(s) :显示指定package的源码包,各种版本的都会显示。
dump :显示cache中的所有package的名字和相关信息
dumpavail :显示cache中的所有package
unmet :显示没满足依赖关系的packages
show pkg(s) :显示package
search regex :搜索package
depends pkg(s) :显示package的依赖关系
pkgnames :输出APT知道的packages
dotty pkg(s) :输出一个包含顶点和边的图,描述了packages之间的关系,
适用于工具GRAPHVIZ。
4:dpkg命令
目录:所有package的信息在/var/lib/dpkg/下
/var/lib/dpkg/available : 可用的packages
/var/lib/dpkg/status :可用packages的状态信息
packages的INFORMATION包括:states,selection states和flags
states:not-installed : 没有安装
config-files :只有配置文件和package在系统里
half-installed :package的安装不完全
unpacked :已解压缩,但未configured
half-configured :configured未完成
installed :package解压缩和configured正常
selection states:install :selected for installation
deinstall : selected for deinstallation
(except configuration files)
purge : selected to be purged (include configuration files)
flags : reinst-required : 需重装
操作:
-i,--install package_file...
安装package,如果指定了-R或--recursive,则package_file要为目录。
安装有以下几步
1:从package中抽出control文件
2:如果已经有老版本的package安装了,则执行老版本的prerm脚本
3:执行preinst脚本,如果有的话。
4:unpack,同时备份旧文件
5:如果已经有老版本的package安装了,则执行老版本的postrm脚本 (这个地方没错)
6:configure package
--unpack package_file...
unpack package,但不configure它。该命令删除所有已安装的该包的旧版本,
并运行preinst脚本
--configure package... |-a|--pending
configure一个已经unpack的package,如果指定了-a或--pending则
所有unpacked且unconfigured的package
都要进行configure,要reconfigure一个package,用dpkg-reconfigure包。
configure一个package包括下面几步:
1:unpack conffiles,并备份旧的
2:执行postinst脚本,如果有的话
-r, --remove, -P, --purge package...|-a|--pending:
删除一个已安装的package
-r, --remove删除除conffiles之外的文件,这样避免之后重新安装时reconfigure
-p, --purge删除所有文件,包括conffiles
若没指定package,而是-a或--pending参数,则已unpack的package且
在/var/lib/dpkg/status中指明要
removed或purged的都被removed或purged
删除一个package包括如下几步:
1:运行prerm脚本
2:删除安装了的文件
3:运行postrm脚本
--clear-avail:
删除availabe package的信息
-C, --audit:
搜索没安装完全的package。并给出一些建议。
--get-selections:
列出package的selection state,即是否install,purge等
--yet-to-unpack:
搜索那些要来安装但还未安装的package
dpkg-deb命令(下面的参数既可用在dpkg-deb下,也可用在dpkg下)
-b, --build directory [archive|directory]
建立一个deb package
-I, --info archive [control-file...]
显示package的信息
-c, --contents archive
显示deb包里的文件
-e, --control filename [directory]
从package总提取control信息,若不指定目录,则存在当前目录的DEBIAN目录下
-x, --extract archive directory
从package中提取文件
-X, --vextract archive directory
提取的时候显示信息
-f, --filed archive [control-field...]
显示package的control域
--fsys-tarfile archive
输出tar文件在stdout上。用dpkg --fsys-tarfile file.deb > data.tar
dpkg-query命令(下面的参数可用在dpkg-query下,也可用在dpkg下)
-l, --list package-name-pattern...
显示满足pattern的package
-s, --status package-name...
返回执行package的status
-L, --listfiles pakcage-name...
列出安装该package时,安装到系统的文件列表
-S, --search filename-search-pattern...
在已安装的package中搜索文件
-p, --print-avail package-name...
显示package-name的详细信息,即在/var/lib/dpkg/available中的信息
5:deb包
filename.deb
.deb格式为Debian二进制包文件的格式
文件是一个ar archive(不知道什么意思)
文件的第一部分称为debian-binary,包括一些行,不过目前只有一行就是版本号。
文件的第二部分称为control.tar.gz,包含该package的控制信息
文件的第三部分称为data.tar,也可能被压缩了,为文件的最后一部份
你用vi打开一个deb文件可以看到上面这些。