Ubuntu中 APT 和Dpkg 软件包管理的用法

Ubuntu 是建立在 Debian 基础上的 Linux 发行版本,保留了 Debian 的优秀特性,比如 Dpkg 和 APT 机制,对于原来的 Debian 用户来说,可以无障碍的迁移到 Ubuntu,而对于 Ubuntu 新手,熟悉 APT 和 Dpgk 是很重要的一步。

1、下载并安装所有包裹,同时包括升级操作,如果某个包裹被设置了 hold (停止标志,就会被搁在一边,即不会被升级):

Ubuntop:~$ sudo apt-get install

2、卸载指定包裹以及任何倚赖这个包裹的其它包裹:

Ubuntop:~$ sudo apt-get remove [--purge]

—purge 指明这个包裹应该被完全清除(包括配置文件),更多信息请看 dpkg -P。

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

Ubuntop:~$ sudo apt-get update

Ubuntop:~$ sudo apt-get upgrade [-u]

Ubuntop:~$ sudo apt-get dist-upgrade [-u]

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

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

4、根据关键字搜索包裹:

Ubuntop:~$ sudo apt-cache search keywords

5、显示包裹的完整描述:

Ubuntop:~$ sudo apt-cache show package_name

6、显示包裹细节信息,包括和其它包裹的关系:

Ubuntop:~$ sudo apt-cache showpkg package_name

APT 有几个图形前端:dselect,console-apt,aptitude,gnome-apt(其中一些在使用前得先安装)。其中 dselect 无疑是最强大的,也是最古老,最难驾驭,具体可以参考 Debian 手册。

7、如果你手动下载了一个 .deb 包,通过以下命令安装 Debian 包裹文件:

Ubuntop:~$ sudo dpkg -i debfilename

8、列出包裹包含的内容:

Ubuntop:~$ sudo dpkg -c debfilename

9、从 .deb 文件中提取包裹信息:

Ubuntop:~$ sudo dpkg -I debfilename

10、卸载一个已安装的包裹:

Ubuntop:~$ sudo dpkg -r packagename

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

Ubuntop:~$ sudo dpkg -P packagename

12、列出包裹安装的所有文件清单。(同时请看 dpkg -c 来检查一个 .deb 文件的内容):

Ubuntop:~$ sudo dpkg -L packagename

13、显示已安装包裹的信息:

Ubuntop:~$ sudo dpkg -s

14、重新配制一个已经安装的包裹,如果它使用的是 debconf (debconf 为包裹安装提供了一个统一的配制界面),你能够重新配制 debconf 它本身:

Ubuntop:~$ sudo dpkg-reconfigure packagename

15、获取软件包裹状态:

Ubuntop:~$ sudo dpkg --get-selections | grep keyname

16、设置软件包裹状态,比如 HOLD 某个包裹不允许升级:

Ubuntop:~$ echo "packagename hold" | sudo dpkg --set-selections

17、从 HOLD 状态恢复软件包裹标志位:

Ubuntop:~$ echo "packagename install" | sudo dpkg --set-selections

18、修正依赖关系损坏的包裹:

Ubuntop:~$ sudo apt-get -f install

更多相关帮助可以参考 Debian 文档,或者包含中文版的 Debian 参考手册。



所有基于Debian的发行都使用这个包管理系统。Deb包可以把一个应用的文件包在一起,大体就如同Windows上的安装文件。这里要介绍的就是如何使用安装包处理软件来达到我们的目的。

用apt-get的第一步就是引入必需的软件库,Debian的软件库也就是所有Debian软件包的集合,它们存在互联网上的一些公共站点上。把它们的地址加入,apt-get就能搜索到我们想要的软件。/etc/apt/sources.list是存放这些地址列表的配置文件,其格式如下:

deb [web或ftp地址] [发行版名字][main/contrib/non-free]

比如Ubuntu是一个基于Debian的发行,它的Sources.list可以是这样的:

deb http://in.archive.ubuntu.com/ubuntu breezy main restrcted

你可以自己加上自己的地址。apt-get.org 上面有一些不错的地址列表。

设好地址之后,就要把本机上的软件库跟网上的库同步(只是软件描述信息,不包含软件本身)。这样,本机上就有了一个可用的软件的清单,命令如下:

# apt-get update

运行成功之后,你就可以搜到在你的发行版中有哪些软件了,命令是apt-cache,运行这个命令是在本机是检索,而不连到网上。如:

# apt-cache search baseutils

这个命令可以列出baseutils这个软件包的情况,有还是没有,还有版本等。

看到库里有这个软件包后,就可以安装它:

# apt-get install baseutils

这时我们就可以看到apt-get的威力了。如果baseutils依赖于某个另外的软件,或者一个运行库xyz.0.01.so,apt-get会自动下载这个包(或含有这个库的软件包)。这叫做自动依赖性处理。通常,如果你只用Debian软件库内的软件,是不会发生找不到包或包版本不对的情况的,除非用的是正在开发的Testing或Unstable版本。

卸载软件:

# apt-get remove baseutils

如果想看一下库里有多少软件:

# apt-cache stats
Total package names : 22502 (900k)
Normal packages: 17632
Pure virtual packages: 281
Single virtual packages: 1048
Mixed virtual packages: 172
Missing: 3369
...

把本机所有软件升级到最新版:

# apt-get upgrade

最后是最强力的--把整个发行版都升到新版本:

# apt-get dist-upgrade

升级时注意那些影响系统起动的东西,比如升级了内核,升级了grub或lilo等,这之后你应当重新运行grub或是lilo,让它们指向正确的位置,否则升级之后会工作不正常的。

用apt-get安装软件时,它会从网上(在sources.list里指的那个站点)下载所用的软件包,这个包将存在本机上,目录是:/var/cache/apt/archives/。时间长了,这里会变得非常巨大,占用大量的硬盘空间。要想清理这个目录,可以运行:

# apt-get clean

还有一个自动清理功能,它只清除那些没用的或者是不完整的软件包:

# apt-get autoclean

这样在重装某软件时就依然能使用已经下载好的,而不是再到网上去下载。

dpkg - 底层一些的包管理工具

用上apt(高级包管理工具)之后,一般是不需要处理单个的deb文件的。如果需要,就要用dpkg命令。比如想自己装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/Hold
Status=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 compiler
ii gcc-3.3-base 3.3.6-8ubuntu1 The GNU Compiler Colletio
un gcc-3.5 none (no description available)

其中,第1个 i 表示希望安装,第2个 i 表示已经安装,第3个字段是问题(如果有)(这3个字的含义可以看上面那3行,desired, status, err),后面是名字,版本和描述。un就表示,Unknown, not-installed。

如果想看某包是否已经安装:

# dpkg -s gedit

如果想看某软件都有哪些文件,都装到了什么地方:

# dpkg -L gedit

如果只想看其中的某些文件,就加上Grep:

# dpkg -L gedit grep png

当然还有aptitude和Aptitude,前者是终端上运行的带菜单的工具,后者是X窗口上运行的图形化的程序。

还有,列出某包的详情:apt-cache show gedit
一些强制的命令:dpkg --force-help
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值