# 一、Ubuntu中软件安装方法 ## 1、apt方式 (1)普通安装:apt-get install softname1 softname2 …; (2)修复安装:apt-get -f install softname1 softname2… ;(-f Atemp to correct broken dependencies) (3)重新安装:apt-get –reinstall install softname1 softname2…; ## 2、dpkg方式 ```bash dpkg -i package_name.deb ``` ## 3、源码安装(.tar、tar.gz、tar.bz2、tar.Z) 首先解压缩源码压缩包然后通过tar命令来完成 ```bash 解xx.tar.gz:tar -zxf xx.tar.gz 解xx.tar.Z:tar -zxf xx.tar.Z 解xx.tgz:tar -zxf xx.tgz 解xx.bz2:bunzip2 xx.bz2 解xx.tar:tar -xf xx.tar ``` 然后进入到解压出的目录中,建议先读一下README之类的说明文件,因为此时不同源代码包或者预编译包可能存在差异,然后建议使用ls -F –color或者ls -F命令(实际上我的只需要 l 命令即可)查看一下可执行文件,可执行文件会以*号的尾部标志。 一般依次执行 ```html ./configure make sudo make install ./configure --prefix=/opt ``` # 二、Ubuntu中软件包的卸载方法 ## 1、APT方式 ```bash # 移除式卸载, 移除软件包 apt-get remove package1 package2 # 清除式卸载, 同时清除配置 apt-get --purge remove package1 package2 ``` ## 2、Dpkg方式 ```bash # 移除式卸载 dpkg -r package1 package2 # 清除式卸载 dpkg -P package1 package2 ``` # 三、Ubuntu中软件包的查询方法 ```bash # 列出软件包 dpkg -l # 查看系统中软件包package的状态, 支持模糊查询 dpkg -l package # 查看软件包package的详细信息 dpkg -s package # 查询系统中属于package的文件 dpkg-query -L package ``` 体验使用数据库的时刻到了: 每条记录对应一个软件包, 注意每条记录的第一, 二, 三个字符. 这就是软件包的状态标识, 后边依此是软件包名称, 版本号, 和简单描述. 第一字符为期望值,它包括: u 状态未知,这意味着软件包未安装,并且用户也未发出安装请求. i 用户请求安装软件包. r 用户请求卸载软件包. p 用户请求清除软件包. h 用户请求保持软件包版本锁定. 第二列,是软件包的当前状态.此列包括软件包的六种状态. n 软件包未安装. i 软件包安装并完成配置. c 软件包以前安装过,现在删除了,但是它的配置文件还留在系统中. u 软件包被解包,但还未配置. f 试图配置软件包,但是失败了. h 软件包安装,但是但是没有成功. 第三列标识错误状态,可以总结为四种状态. 第一种状态标识没有问题,为空. 其它三种符号则标识相应问题. h 软件包被强制保持,因为有其它软件包依赖需求,无法升级. r 软件包被破坏,可能需要重新安装才能正常使用(包括删除). x 软包件被破坏,并且被强制保持. 也可以以统配符模式进行模糊查询, 比如我要查找以nano字符开始的所有软件包: ``` $ dpkg -l nano* Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed |/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad) ||/ Name Version Description +++-==============-==============-============================================ ii nano 1.3.10-2 free Pico clone with some new features pn nano-tiny (no description available) un nanoblogger (no description available) ``` 以上状态说明: 系统中安装了 nano 版本为 1.3.10-2 ;安装过 nano-tiny , 后来又清除了; 从未安装过nanoblogger . # 四、其他应用总结 ```bash # 搜索包 apt-cache search package # 获取包的相关信息,如说明、大小、版本等 apt-cache show package # 安装包 apt-get install package # 重新安装包 apt-get install package --reinstall # 强制安装, "-f = --fix-missing"当是修复安装吧 apt-get -f install # 删除包 apt-get remove package # 删除包,包括包括删除配置文件等 apt-get remove --purge package # 删除包及其依赖的软件包+配置文件等 apt-get autoremove --purge package # 更新源 apt-get update # 更新已安装的包 apt-get upgrade # 升级系统 apt-get dist-upgrade # 使用dselect升级 apt-get dselect-upgrage ``` 1. `apt-cache depends #-------(package 了解使用依赖)` 2. `apt-cache rdepends # ------(package 了解某个具体的依赖,当是查看该包被哪些包依赖吧...)` 3. `apt-get build-dep # ------(package 安装相关的编译环境)` 4. `apt-get source #------(package 下载该包的源代码)` 5. `apt-get clean && apt-get autoclean # --------清理下载文件的存档 && 只清理过时的包` 6. `apt-get check #-------检查是否有损坏的依赖` 7. `dpkg -S filename -----查找filename属于哪个软件包` 8. `apt-file search filename -----查找filename属于哪个软件包` 9. `apt-file list packagename -----列出软件包的内容` 10. `apt-file update --更新apt-file的数据库` 11. 12. `dpkg --info "软件包名" --列出软件包解包后的包名称.` 13. `dpkg -l --列出当前系统中所有的包.可以和参数less一起使用在分屏查看. (类似于rpm -qa)` 14. `dpkg -l |grep -i "软件包名" --查看系统中与"软件包名"相关联的包.` 15. `dpkg -s 查询已安装的包的详细信息.` 16. `dpkg -L 查询系统中已安装的软件包所安装的位置. (类似于rpm -ql)` 17. `dpkg -S 查询系统中某个文件属于哪个软件包. (类似于rpm -qf)` 18. `dpkg -I 查询deb包的详细信息,在一个软件包下载到本地之后看看用不用安装(看一下呗).` 19. `dpkg -i 手动安装软件包(这个命令并不能解决软件包之前的依赖性问题),如果在安装某一个软件包的时候遇到了软件依赖的问题,可以用apt-get -f install在解决信赖性这个问题.` 20. `dpkg -r 卸载软件包.不是完全的卸载,它的配置文件还存在.` 21. `dpkg -P 全部卸载(但是还是不能解决软件包的依赖性的问题)` 22. `dpkg -reconfigure 重新配置` 23. 24. 25. `apt-get install` 26. `下载软件包,以及所有依赖的包,同时进行包的安装或升级。如果某个包被设置了 hold (停止标志,就会被搁在一边(即不会被升级)。更多 hold 细节请看下面。` 27. `apt-get remove [--purge]` 28. `移除 以及任何依赖这个包的其它包。` 29. `--purge 指明这个包应该被完全清除 (purged) ,更多信息请看 dpkg -P。` 30. 31. `apt-get update` 32. `升级来自 Debian 镜像的包列表,如果你想安装当天的任何软件,至少每天运行一次,而且每次修改了` 33. `/etc/apt/sources.list 後,必须执行。` 34. 35. `apt-get upgrade [-u]` 36. `升 级所有已经安装的包为最新可用版本。不会安装新的或移除老的包。如果一个包改变了依赖关系而需要安装一个新的包,那么它将不会被升级,而是标志为 hold。apt-get update 不会升级被标志为 hold 的包 (这个也就是 hold 的意思)。请看下文如何手动设置包为 hold。我建议同时使用 '-u' 选项,因为这样你就能看到哪些包将会被升级。` 37. 38. `apt-get dist-upgrade [-u]` 39. `和 apt-get upgrade 类似,除了 dist-upgrade 会安装和移除包来满足依赖关系。因此具有一定的危险性。` 40. 41. `apt-cache search` 42. `在软件包名称和描述中,搜索包含xxx的软件包。` 43. 44. `apt-cache show` 45. `显示某个软件包的完整的描述。` 46. 47. `apt-cache showpkg` 48. `显示软件包更多细节,以及和其它包的关系。` 49. 50. `dselect` 51. `console-apt` 52. `aptitude` 53. `gnome-apt` 54. `APT 的几个图形前端(其中一些在使用前得先安装)。这里 dselect 无疑是最强大的,也是最古老,最难驾驭。` 55. 56. `普通 Dpkg 用法` 57. `dpkg -i` 58. `安装一个 Debian 包文件,如你手动下载的文件。` 59. 60. `dpkg -c` 61. `列出 的内容。` 62. 63. `dpkg -I` 64. `从 中提取包信息。` 65. 66. `dpkg -r` 67. `移除一个已安装的包。` 68. 69. `dpkg -P` 70. `完全清除一个已安装的包。和 remove 不同的是,remove 只是删掉数据和可执行文件,purge 另外还删除所有的配制文件。` 71. 72. `dpkg -L` 73. `列出 安装的所有文件清单。同时请看 dpkg -c 来检查一个 .deb 文件的内容。` 74. 75. `dpkg -s` 76. `显示已安装包的信息。同时请看 apt-cache 显示 Debian 存档中的包信息,以及 dpkg -I 来显示从一个 .deb 文件中提取的包信息。` 77. `dpkg-reconfigure` 78. `重 新配制一个已经安装的包,如果它使用的是 debconf (debconf 为包安装提供了一个统一的配制界面)。你能够重新配制 debconf 它本身,如你想改变它的前端或提问的优先权。例如,重新配制 debconf,使用一个 dialog 前端,简单运行:` 79. `dpkg-reconfigure --frontend=dialog debconf (如果你安装时选错了,这里可以改回来哟:)` 80. `echo " hold" | dpkg --set-selections` 81. `设置 的状态为 hlod (命令行方式)` 82. `dpkg --get-selections ""` 83. `取的 的当前状态 (命令行方式)` 84. `支持通配符,如:` 85. `Debian:~# dpkg --get-selections *wine*` 86. `libwine hold` 87. `libwine-alsa hold` 88. `libwine-arts hold` 89. `libwine-dev hold` 90. `libwine-nas hold` 91. `libwine-print hold` 92. `libwine-twain hold` 93. `wine hold` 94. `wine+ hold` 95. `wine-doc hold` 96. `wine-utils hold` 97. `dpkg -S` 104. `在包数据库中查找 ,并告诉你哪个包包含了这个文件。(注:查找的是事先已经安装的包)` ------ # Debian的软件包管理工具命令不完全列表 ------ 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安装源中所有的软件包,还包括当前系统中已经安装和未安装的软件包. ## 1.dpkg包管理工具 dpkg -r 卸载软件包.不是完全的卸载,它的配置文件还存在. dpkg –info “软件包名” –列出软件包解包后的包名称. dpkg -l –列出当前系统中所有的包.可以和参数less一起使用在分屏查看. dpkg -l |grep -i “软件包名” –查看系统中与”软件包名”相关联的包. dpkg -s 查询已安装的包的详细信息. dpkg -L 查询系统中已安装的软件包所安装的位置. dpkg -S 查询系统中某个文件属于哪个软件包. dpkg -I 查询deb包的详细信息,在一个软件包下载到本地之后看看用不用安装(看一下呗). dpkg -i 手动安装软件包(这个命令并不能解决软件包之前的依赖性问题),如果在安装某一个软件包的时候遇到了软件依赖的问题,可以用apt-get -f install在解决信赖性这个问题. dpkg -reconfigure 重新配置 dpkg -P 全部卸载(但是还是不能解决软件包的依赖性的问题) ## 2. apt高级包管理工具 (1)GTK图形的”synaptic”,这是APT的前端工具. (2)”aptitude”,这也是APT的前端工具. 用APT管理工具进行包的管理,可以有以下几种方法做源: (1)拿安装盘做源,方法如下: apt-cdrom ident 扫描光盘的信息 apt-cdrom add 添加光盘源 (2)这也是最常用的方法就是把源添加到/etc/apt/source.list中,之后更新列apt-get update ## APT管理工具常用命令 apt-cache 加上不同的子命令和参数的使用可以实现查找,显示软件,包信息及包信赖关系等功能. apt-cache stats 显示当前系统所有使用的Debain数据源的统计信息. apt-cache search +”包名”,可以查找相关的软件包. apt-cache show +”包名”,可以显示指定软件包的详细信息. apt-cache depends +”包名”,可以查找软件包的依赖关系. apt-get upgrade 更新系统中所有的包到最新版 apt-get install 安装软件包 apt-get –reindtall install 重新安装软件包 apt-get remove 卸载软件包 apt-get –purge remove 完全卸载软件包 apt-get clean 清除无用的软件包 在用命令apt-get install之前,是先将软件包下载到/var/cache/apt/archives中,之后再进行安装的.所以我们可以用apt-get clean清除/var/cache/apt/archives目录中的软件包. ## 源码包安装 apt-cache showsrc 查找看源码包的文件信息(在下载之前) apt-get source 下载源码包. apt-get build-dep +”包名” 构建源码包的编译环境.