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 系统之中了。

[r]Ubuntu Linux系统下apt-get命令详解的更多相关文章

  1. 【夯实Mysql基础】MySQL在Linux系统下配置文件及日志详解

    本文地址 分享提纲: 1. 概述 2. 详解配置文件 3. 详解日志 1.概述 MySQL配置文件在Windows下叫my.ini,在MySQL的安装根目录下:在Linux下叫my.cnf,该文件位于 ...

  2. Linux系统下DNS主从配置详解

    一.DNS概述DNS(Domain Name System),即域名系统.因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串. ...

  3. Linux系统下的shutdown命令用于安全的关闭/重启计算机

    Linux系统下的shutdown命令用于安全的关闭/重启计算机,它不仅可以方便的实现定时关机,还可以由用户决定关机时的相关参数.在执行shutdown命令时,系统会给每个终端(用户)发送一条屏显,提 ...

  4. 【转载】在Linux系统下用dd命令制作ISO镜像U盘启动盘

    #### 将U盘插入USB接口 #umount /dev/sdb* #dd if=/iso存放路径/XXX.iso of=/dev/sdb bs=1M ##### [转载]在Linux系统下用dd命令 ...

  5. Linux系统下利用wget命令把整站下载做镜像网站

    Linux系统下利用wget命令把整站下载做镜像网站 2011-05-28 18:13:01 | 1次阅读 | 评论:0 条 | itokit  在linux下完整的用wget命令整站采集网站做镜像 ...

  6. 云计算:Linux运维核心管理命令详解

    云计算:Linux运维核心管理命令详解 想做好运维工作,人先要学会勤快: 居安而思危,勤记而补拙,方可不断提高: 别人资料不论你用着再如何爽那也是别人的: 自己总结东西是你自身特有的一种思想与理念的展 ...

  7. LINUX的磁盘管理du命令详解

    LINUX的磁盘管理du命令详解 du(disk usage)命令可以计算文件或目录所占的磁盘空间.没有指定任何选项时, 它会测量当前工作目录与其所有子目录,分别显示各个目录所占的快数,最后才显示工作 ...

  8. linux sort,uniq,cut,wc命令详解

    linux sort,uniq,cut,wc命令详解 sort sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出.如果 File 参数指定多个文件,那么 sort 命令将这些 ...

  9. Oracle 11g客户端在Linux系统上的配置步骤详解

    Oracle 11g客户端在Linux系统上的配置步骤详解 2011-07-26 10:47 newhappy2008 CSDN博客 字号:T | T 本文我们主要介绍了Oracle 11g客户端在L ...

随机推荐

  1. 干货!如何正确使用Git Flow

    我们已经从SVN 切换到Git很多年了,现在几乎所有的项目都在使用Github管理, 本篇文章讲一下为什么使用Git, 以及如何在团队中正确使用. Git的优点 Git的优点很多,但是这里只列出我认为 ...

  2. Shtirlits - SGU 125(搜索)

    题目大意:B[i, j]表示周围有多少个比它大的数,能否用B数组构造出一个A数组,如果不能输出“NO SOLUTION”. 分析:数据规模比较小,可以直接暴力枚举每个点的值. 代码如下: #inclu ...

  3. Digital Root - SGU 118(高精度运算)

    题目大意:有K组测试数据,然后每组有N个正整数,A1,A2,A3.....An,求出 A1 + A1*A2 + A1*A2*A3 + .......A1*A2*...An 的数根. 分析:有个对9取余 ...

  4. Little shop of flowers - SGU 104 (DP)

    题目大意:把 M 朵花插入 N 个花瓶中,每个花插入不同的花瓶都有一个价值A[Mi][Nj],要使所有的花都插入花瓶,求出来最大的总价值(花瓶为空时价值是0). 分析:dp[i][j]表示前i朵花插入 ...

  5. Notepad++中的复活节彩蛋(easter egg)

    Notepad++是windows下的一个强大的文本编辑器; 它免费,开源, 比windows自带的记事本强大百倍; 我自己的感觉: 1.打开超大的文本文件,比方100M大小的文本格式的数据,记事本会 ...

  6. 吧php脚本打包成 exe程序

    操作方法 :FQ哦 https://www.youtube.com/watch?v=UQ3zxqh1YXY 有很多方法可以实现 找了个外国的哥们制作的工具 可以吧文件生成很简单的一个独立EXE文件 下 ...

  7. Cocos2d-x游戏开发中的消息机制:CCNotificationCenter的使用

    在HTML5游戏开发中,js可以使用Event对象的addEventListener(添加事件监听).dispatchEvent(触发事件)实现监听机制,如果在coocos2d-x中,去实现这种机制该 ...

  8. 如何自定义UIPickerView中文本的大小和文本靠左或靠右显示?

    需要重写UIPickerView中的 -(UIView*)pickerView:(UIPickerView*)pickerView viewForRow:(NSInteger)row forCompo ...

  9. Linux写配置HDF5的python包h5py

    闲言碎语不讲,直接进入正题.Python在科学计算的应用越来越丰度,而hdf(5)数据的应用也非常广泛.python提供了h5py包供开发者处理数据(http://www.h5py.org/).在wi ...

  10. Linux chmod

    在Linux中要修改一个文件夹或文件的权限我们需要用到linux chmod命令来做. 语法如下: chmod [who] [+ | - | =] [mode] 文件名 命令中各选项的含义为 u 表示 ...