dpkg总结
Debian系统中所有的包信息都在/var/lib/dpkg下.其中/var/lib/dpkg/info目录中保存了各个软件包的信息及管理文件. 每个文件的作用如下:
".conffiles" 文件记录软件包的配置列表. ".list" 文件记录了软件包的文件列表,用户可在文件当中找到软件包文件的具体安装位置. ".md5sums" 文件记录了md5信息,用来进行包的验证的. ".config" 文件是软件包的安装配置脚本. ".postinst" 脚本是完成Debian包解开之后的配置工作,通常用来执行所安装软件包相关的命令和服务的重新启动. ".preinst" 脚本在Debain解包之前运行,主要作用是是停止作用于即将升级的软件包服务直到软件包安装或和升级完成. ".prerm" 脚本负责停止与软件包关联的daemon服务,在删除软件包关联文件之前执行. ".postrm" 脚本负责修改软件包链接或文件关联,或删除由它创建的文件. /var/lib/dpkg/available是软件包的描述信息. 包括当前系统中所有使用的Debian安装源中所有的软件包,还包括当前系统中已经安装和未安装的软件包. dpkg包管理工具命令: dpkg -c --列出包的内容. dpkg --info "packagename" --列出软件包解包后的包名称. dpkg -l --列出当前系统中所有的包.可以和参数less一起使用在分屏查看. dpkg -l |grep -i "packagename" --查看系统中与"软件包名"相关联的包. dpkg -s --查询已安装的包的详细信息. dpkg -L --查询系统中已安装的软件包所安装的位置. dpkg -S --查询系统中某个文件属于哪个软件包. dpkg -I --查询deb包的详细信息,在一个软件包下载到本地之后看看用不用安装(看一下呗). dpkg -i --手动安装软件包(这个命令并不能解决软件包之前的依赖性问题),如果在安装某一个软件包的时候遇到了软件依赖的问题,可以用apt-get -f install在解决信赖性这个问题. dpkg -r --卸载软件包.不是完全的卸载,它的配置文件还存在. dpkg -P --全部卸载(但是还是不能解决软件包的依赖性的问题). dpkg -reconfigure --重新配置. dpkg-reconfigure --frontend=dialog debconf --如果安装时选错了,这里可以改回来. dpkg --force-all --purge --有些软件很难卸载,而且还阻止了别的软件的应用,就可以用这个,不过有点冒险. echo "<package> hold" | dpkg --set-selections 设置 <package> 的状态为 hold (命令行方式) dpkg --get-selections "<package>" 取得 <package> 的当前状态 (命令行方式) sudo gedit /etc/apt/sources.list
比如想自己装gedit:
# dpkg -i gedit-2.12.1.deb卸载: # dpkg -r gedit这里只写名字即可。还可以加上--purge(-P)标志: # dpkg -P gedit这会连同gedit的配置文件一起删除,只用-r的话是不删除配置文件的。 如果不想安装一个deb包,但想看一下它里面有什么文件:# dpkg -c gedit-2.12.1.deb如果想多看点信息: # dpkg -I gedit-2.12.1.deb 也可以用通配符来列出机器上的软件: # dpkg -l gcc*这会列出所有gcc开头的软件包: Desired=Unknown/Install/Remove/Purge/HoldStatus=Not/Installed/Config-files/Unpacked/Failed-config/./ Err?=(none)/Hold/Reinst-required/X=both-problems/ Name Version Description+++-===============-==============-========================ii gcc 4.0.1-3 The GNU C compilerii gcc-3.3-base 3.3.6-8ubuntu1 The GNU Compiler Colletioun gcc-3.5 none (no description available) 其中,第1个 i 表示希望安装,第2个 i 表示已经安装,第3个字段是问题(如果有)(这3个字的含义可以看上面那3行,desired, status, err),后面是名字,版本和描述。un就表示,Unknown,not-installed。 apt总结
如果想看某包是否已经安装: # dpkg -s gedit 如果想看某软件都有哪些文件,都装到了什么地方: # dpkg -L gedit 如果只想看其中的某些文件,就加上Grep: # dpkg -L gedit grep png 当然还有aptitude和Aptitude,前者是终端上运行的带菜单的工具,后者是X窗口上运行的图形化的程序。 还有,列出某包的详情: apt-cache show gedit 一些强制的命令:dpkg --force-help apt-get install packagename //安装包 apt-get -f install packagename //强制安装, "-f = --fix-missing" 当是修复安装吧 apt-get remove packagename //卸载一个已安装的软件包(保留配置文件) apt-get remove --purge packagename //卸载一个已安装的软件包(删除配置文件) apt-get clean //这个命令会把安装的软件的备份也删除,不过这样不会影响软件的使用的 apt-get upgrade //更新所有已安装的软件包 apt-get dist-upgrade //将系统升级到新版本 apt-get dselect-upgrade //使用 dselect 升级 apt-cache search string //在软件包列表中搜索字符串 aptitude ——详细查看已安装或可用的软件包。与apt-get类似,aptitude可以通过命令行方式调用,但仅限于某些命令——最常见的有安装和卸载命令。由于aptitude比apt-get了解更多信息,可以说它更适合用来进行安装和卸载 apt-cache search packagename //可以用这个指令来搜寻升级包 apt-cache depends packagename //了解使用依赖 apt-cache rdepends packagename //了解某个具体的依赖,当是查看该包被哪些包依赖 apt-cache showpkg packagename //显示软件包信息 apt-cache show packagename //获取包的相关信息,如说明、大小、版本等,类似于dpkg --print-avail apt-cache dumpavail //打印可用软件包列表 apt-get build-dep packagename //包安装相关的编译环境 apt-get source packagename //下载该包的源代码 apt-get clean && apt-get autoclean //清理下载文件的存档 && 只清理过时的包 apt-get check //检查是否有损坏的依赖 apt-file search filename //查找包含特定文件的软件包(不一定是已安装的),这些文件的文件名中含有指定的字符串。apt-file是一个独立的软件包。您必须先使用apt- get install来安装它,然后运行apt-file update。如果apt-file search filename输出的内容太多,您可以尝试使用apt-file search filename | grep -w filename(只显示指定字符串作为完整的单词出现在其中的那些文件名)或者类似方法,例如:apt-file search filename | grep /bin/(只显示位于诸如/bin或/usr/bin这些文件夹中的文件,如果您要查找的是某个特定的执行文件的话,这样做是有帮助的) apt-file list packagename //列出软件包的内容 apt-file update //更新apt-file的数据库 apt-file search command // 搜索包含此命令的包 apt-get autoclean //定期运行这个命令来清除那些已经卸载的软件包的.deb文件。通过这种方式,您可以释放大量的磁盘空间。如果您的需求十分迫切,可以使用apt- get clean以释放更多空间。这个命令会将已安装软件包裹的.deb文件一并删除。 echo "<package> hold" | dpkg --set-selections 设置 <package> 的状态为 hlod (命令行方式) dpkg --get-selections "<package>" 取得 <package> 的当前状态 (命令行方式) |
|