Ubuntu Linux系统下apt-get命令详解(via|via)

常用的APT命令参数:
 
  apt-cache search package 搜索包
 
  apt-cache show package 获取包的相关信息,如说明、大小、版本等
 
  sudo apt-get install package 安装包
 
  sudo apt-get install package - - reinstall 重新安装包
 
  sudo apt-get -f install 修复安装"-f = ——fix-missing"
 
  sudo apt-get remove package 删除包
 
  sudo apt-get remove package - - purge 删除包,包括删除配置文件等
 
  sudo apt-get update 更新源
 
  sudo apt-get upgrade 更新已安装的包
 
  sudo apt-get dist-upgrade 升级系统
 
  sudo apt-get dselect-upgrade 使用 dselect 升级
 
  apt-cache depends package 了解使用依赖
 
  apt-cache rdepends package 是查看该包被哪些包依赖
 
  sudo apt-get build-dep package 安装相关的编译环境
 
  apt-get source package 下载该包的源代码
 
  sudo apt-get clean && sudo apt-get autoclean 清理无用的包 网管bitscn_com  
  sudo apt-get check 检查是否有损坏的依赖

出自Ubuntu中文

apt-cache search # ------(package 搜索包)
apt-cache show #------(package 获取包的相关信息,如说明、大小、版本等)
sudo apt-get install # ------(package 安装包)
sudo apt-get install # -----(package - - reinstall 重新安装包)
sudo apt-get -f install # -----(强制安装?#"-f = --fix-missing"当是修复安装吧...)
sudo apt-get remove #-----(package 删除包)
sudo apt-get remove - - purge # ------(package 删除包,包括删除配置文件等)
sudo apt-get autoremove --purge # ----(package 删除包及其依赖的软件包+配置文件等(只对6.10有效,强烈推荐))
sudo apt-get update #------更新源
sudo apt-get upgrade #------更新已安装的包
sudo apt-get dist-upgrade # ---------升级系统
sudo apt-get dselect-upgrade #------使用 dselect 升级
apt-cache depends #-------(package 了解使用依赖)
apt-cache rdepends # ------(package 了解某个具体的依赖?#当是查看该包被哪些包依赖吧...)
sudo apt-get build-dep # ------(package 安装相关的编译环境)
apt-get source #------(package 下载该包的源代码)
sudo apt-get clean && sudo apt-get autoclean # --------清理下载文件的存档 && 只清理过时的包
sudo apt-get check #-------检查是否有损坏的依赖

apt-get install
下载 以及所有倚赖的包裹,同时进行包裹的安装或升级。如果某个包裹被设置了 hold (停止标志,就会被搁在一边(即不会被升级)。更多 hold 细节请看下面。

apt-get remove [--purge]
移除 以及任何倚赖这个包裹的其它包裹。
--purge 指明这个包裹应该被完全清除 (purged) ,更多信息请看 dpkg -P。

apt-get update
升级来自 Debian 镜像的包裹列表,如果你想安装当天的任何软件,至少每天运行一次,而且每次修改了
/etc/apt/sources.list 後,必须执行。

apt-get upgrade [-u]
升级所以已经安装的包裹为最新可用版本。不会安装新的或移除老的包裹。如果一个包改变了倚赖关系而需要安装一个新的包裹,那么它将不会被升级,而是标志为 hold。apt-get update 不会升级被标志为 hold 的包裹 (这个也就是 hold 的意思)。请看下文如何手动设置包裹为 hold。我建议同时使用 '-u' 选项,因为这样你就能看到哪些包裹将会被升级。

apt-get dist-upgrade [-u]
和 apt-get upgrade 类似,除了 dist-upgrade 会安装和移除包裹来满足倚赖关系。因此具有一定的危险性。

apt-cache search
搜索满足 的包裹和描述。

apt-cache show
显示 的完整的描述。

apt-cache showpkg
显示 许多细节,以及和其它包裹的关系。

dselect
console-apt
aptitude
gnome-apt
APT 的几个图形前端(其中一些在使用前得先安装)。这里 dselect 无疑是最强大的,也是最古老,最难驾驭。

普通 Dpkg 用法
dpkg -i
安装一个 Debian 包裹文件,如你手动下载的文件。

dpkg -c
列出 的内容。

dpkg -I
从 中提取包裹信息。

dpkg -r
移除一个已安装的包裹。

dpkg -P
完全清除一个已安装的包裹。和 remove 不同的是,remove 只是删掉数据和可执行文件,purge 另外还删除所有的配制文件。

dpkg -L
列出 安装的所有文件清单。同时请看 dpkg -c 来检查一个 .deb 文件的内容。

dpkg -s
显示已安装包裹的信息。同时请看 apt-cache 显示 Debian 存档中的包裹信息,以及 dpkg -I 来显示从一个 .deb 文件中提取的包裹信息。

dpkg-reconfigure
重新配制一个已经安装的包裹,如果它使用的是 debconf (debconf 为包裹安装提供了一个统一的配制界面)。你能够重新配制 debconf 它本身,如你想改变它的前端或提问的优先权。例如,重新配制 debconf,使用一个 dialog 前端,简单运行:

dpkg-reconfigure --frontend=dialog debconf (如果你安装时选错了,这里可以改回来哟:)

echo " hold" | dpkg --set-selections
设置 的状态为 hlod (命令行方式)

dpkg --get-selections ""
取的 的当前状态 (命令行方式)

支持通配符,如:
Debian:~# dpkg --get-selections *wine*
libwine                                         hold
libwine-alsa                                    hold
libwine-arts                                    hold
libwine-dev                                     hold
libwine-nas                                     hold
libwine-print                                   hold
libwine-twain                                   hold
wine                                            hold
wine+                                           hold
wine-doc                                        hold
wine-utils                                      hold

例如:
大家现在用的都是 gaim-0.58 + QQ-plugin,为了防止 gaim 被升级,我们可以采用如下方法:

方法一:
Debian:~# echo "gaim hold" | dpkg --set-selections
然後用下面命令检查一下:
Debian:~# dpkg --get-selections "gaim"
gaim                                            hold
现在的状态标志是 hold,就不能被升级了。

如果想恢复怎么办呢?
Debian:~# echo "gaim install" | dpkg --set-selections
Debian:~# dpkg --get-selections "gaim"
gaim                                            install
这时状态标志又被重置为 install,可以继续升级了。

同志们会问,哪个这些状态标志都写在哪个文件中呢?
在 /var/lib/dpkg/status 里,你也可以通过修改这个文件实现 hold。

有时你会发现有的软件状态标志是 purge,不要奇怪。
如:事先已经安装了 amsn,然後把它卸了。
apt-get remove --purge amsn
那么状态标志就从 install 变成 purge。

方法二:
在/etc/apt 下手动建一个 preferences 文件
内容:
Package: gaim
Pin: version 0.58*
保存

dpkg -S
在包裹数据库中查找 ,并告诉你哪个包裹包含了这个文件。(注:查找的是事先已经安装的包裹)

apt-get 在Debian项目中的地位是无可替代的,如果说有一个程序可以代表Debian
,那毫无疑问,是 apt-get,apt-get和deb包提供了 RPM 所无法提供的强大功能。

除了apt的便捷以外,apt-get的一大好处是极大地减小了所谓依赖关系恶梦的发生
几率(dependency hell),即使是陷入了dependency hell,apt-get也提供了很好的
援助手段,帮你逃出魔窟。

通常 apt-get 都和网上的压缩包一起出没,从互联网上下载或是安装。全世界有超
过200个 debian 官方镜像,还有繁多的非官方软件包提供网站。你所使用的基于D 
ebian的发布版不同,你所使用的软件仓库可能需要手工选择或是可以自动设置。你
能从Debian官方网站得到完整的镜像列表。而很多非官方网站提供各种特殊用途的 
非官方软件包,当然,使用非官方软件包会有更多风险了。

软件包都是为某一个基本的Debian发布版所准备的(从unstable到stable),并且划
分到不同类别中(如 main contrib nonfree),这个是依据 debian 自由软件纲领而
划分的(也就是常说的dfsg),因为美国限制加密软件出口,还有一个non-us类别。

apt-get 获取软件包所依赖的配置文件 /etc/apt/sources.list 中的设置编写格式
是 

 deb [server-type] [address] [directories] [areas]

文中例子:


deb [url]http://mirror.peer1.net/debian[/url] main contrib non-free

我在学校的时候的例子


deb [url]http://debian.ustc.edu.cn/debian/[/url] testing main contrib non-free
如果用deb-src 而不是 deb 的话,那么就是指的源代码包。通常都会使用http和f
tp方式获取文件,不过也可以使用本地文件,更罕见的还有rsh和SSH,但都是可以
的。使用 netselect-apt 可以用来判断哪个镜像更快。修改了镜像信息后,应该使
用apt-get update 命令,更新软件包的信息

你可以从Debian 网站上看软件包的相关信息,而另一方面可以使用 dpkg -l 看哪
些软件包已经被安装了。很大的程序,比如gnome,通常有个空的软件包,只是通过
依赖关系来安装其他所有的相应的软件,而这些软件也可以被逐一安装。

使用
apt-get install [package-name]
就可以安装软件包了,这里不需要版本号,apt-get 会自动选择最新的。如果最新
的已经被安装了,那么就不会安装了。如果希望安装一个较老的版本,可以选择版
本,比如 

apt-get install gimp=2.2

你也可以选择特定的发布版


apt-get install -t unstable gimp

对于安装源代码,使用source代替install就可以了,如果需要编译,使用 -b 选项
,软件包会被下载到当前目录的。(aptitude 注:只有 root 可以 install,但是 
谁都可以source 的。)

执行之前,apt-get 会列出有多少软件包要被安装、升级,如果要被安装的软件不
只是你所指出的软件包,那么它会问你是否继续。可以使用 -s 来看看运行的结果
(注: 不知道这个是怎么仿真的,没试过)

apt-get 安装过程中,会显示安装的状况,有时 apt-get 会根据软件包的需求调用
debconf 来让用户输入一些配置选项。这个配置一般都是一些选择,通常选择缺省
情况都可以,也可以使用 --yes 来声明,全部使用缺省选项,无需提问。(注:如果使用cron来每天自动更新系统,这个选项还是挺有用的,虽然总觉得有点害怕吧。)

apt-get 的 upgrade 不会安装新的软件包,只会升级原有的软件包的版本,要升级
整个系统,可能要安装新的软件包,这可以通过 dist-upgrade 完成,比如升级 s 
table到testing,建议要升级 stable 到 unstable,先升级到 testing,以减小风
险。

使用 apt-get clean 可以释放被 apt-get 所占用的缓存空间也可以使用 autocl
ean 命令,这样仅仅删去已经不可能被再次下载的文件。

也可以使用 remove 命令删除软件包。(注:如果要连配置文件也一起删
除,需要使用 --purge 参数)

有时也会出问题,可以用下面一些办法解决:
    • -f 修复依赖关系
    • -m 忽略有问题的包 (这个不像是解决问题的态度哦)
    • -ignore-hold 忽略有问题的 hold
  • -s 报告软件包状态
当然,如果你的技巧和耐心不够的话,还是小心使用系统吧,正常的使用通常不会
造成很多需要解决的问题 :)

多年以来,apt-get 有了很多前端,除了商业版本外,其他的都可以通过 apt-get
来安装。文本界面下,aptitude 还不错,浏览软件包比较方便。对于图形界面 synaptic 是个不错的选择,比较原汁原味的 apt,而 kpachage 就不那么像 apt 了。

大部分的桌面用 linux 版本都有摒弃命令行的倾向,不过,apt-get 是一个 命令
行是最好的 的特例。它的存在正是那些基于 debian 的系统大行其到的原因。而且
apt-get 甚至已经被移植到 rpm 系统之中了。

最新文章

  1. 工作总结_js
  2. noip2007解题报告
  3. Web Service实现分布式服务的基本原理
  4. quartz 2.2.1 jdbc 连接池参数配置
  5. PHP封装数据库连接
  6. vue 组件中数组的更新
  7. synchronized内存可见性理解
  8. jQuery的ajax使用
  9. Redis Sentinel集群双机房容灾实施步骤
  10. mysql错误:The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement解决方法
  11. SpringCloud2.0入门4-springboot-admin监控
  12. yii2 配合bootstrap添加按钮
  13. ASP.NET MVC 异常Exception拦截
  14. 游标SQL Cursor 基本用法
  15. URL to load resources from the classpath in Java
  16. KJMusic完整音乐项目
  17. 20155204 王昊《网络对抗技术》EXP1 PC平台逆向破解
  18. CasperJS API介绍
  19. python基础学习1-迭代器
  20. 1997: [Hnoi2010]Planar

热门文章

  1. 长沙Uber优步司机奖励政策(1月25日~1月31日)
  2. Google Reader的另一个开源的替代品Go Read
  3. Java keyword具体解释
  4. HBase开发错误记录(一):java.net.UnknownHostException: unknown host: master
  5. windows server 许可port或执行技巧
  6. Hadoop WritableComparable接口
  7. react native mac install
  8. ref和out的区别在c#中 总结
  9. matlab切比雪夫拟合
  10. [转帖]FPGA--Vivado