ubuntu(debian)下使用 apt-get 或 synaptic(新立得) 安装软件是件很轻松的事情. 除了简单的安装软件, apt工具集还有许多特别情况下的用法. 任何时候请记住 man 手册是良师. 1. 使用 aptitude 代替 apt-get .
aptitude 虽然没有 apt-get 的"超级牛力", 但功能却比 apt-get 更强大 aptitude install pack-foo aptitude 解决依赖关系比 apt-get 更智能. 有时用 apt-get 安装软件时会出现 "XXX 需要 XXXX, 但 XXX 已安装" 这类的错误. 这通常是因为某些软件包过新造成的. 此时使用 aptitude, aptitude 会发现问题并给出几个解决方案, 我们只需接受符合心意的方案就可以了.
aptitude 的另外一个优点是会自动记录那些包是"自动安装"(即因依赖关系而安装的), 如果依赖"自动安装"包的包都没被安装, 该"自动安装"包(此时已无用)就会自动删除.
aptitude markauto pack-foo #标记成"自动安装"
删除软件时使用 markauto 代替 remove, 就可以避免误删重要的包了. aptitude 还提供了更灵活的控制软件包版本的方式
hold - 将软件包置于保持状态 以前几周的 libcairo 事件作例子:
sudo aptitude install libcairo2=1.4.10-1ubuntu4 # 强制降级 参看 man 手册里对 install 操作的描述, 有更多控制方法.
aptitude reinstall 重新安装软件包, 相当于 apt-get --reinstall install aptitude purge `dpkg -l|grep '^rc'|awk '{print $2}'` aptitude 还集合了多个 apt 工具的功能
search - 按名称 和/或 表达式搜索软件包 search 操作有点特别
aptitude search "foo bar" # 关键词 foo 和 bar 都要出现
不过 aptitude 有个小缺点, 默认会将"推荐"的包当成"依赖"的包处理. 这样设置一下就可以解决问题 aptitude::Recommends-Important "false";
更详细的用法参看 man aptitude. 2. 获得软件包的下载地址 很简单
使用新立得: 使用 apt-get apt-get --print-uris install pack-foo 3. 安装齐编译需要的包 首先确定你添加了 deb-src 源, 就像这种 deb-src http://ubuntu.cn99.com/ubuntu/ gutsy main restricted universe multiverse
并已经 apt-get update apt-get build-dep pack-foo 把编译 pack-foo 需要的包安装好 PS: 更强悍的方法是用 apt-build, 不过这样就把 ubuntu 搞的太像 gentoo 了. 有兴趣的朋友可以自己看 apt-build 的 man. 4. 找某个文件在哪个包里
如果是安装了的包, 可以用 dpkg -S, 但此法对未安装的包就无效了.
$ apt-file help apt-file [options] action [pattern]
Configuration options:
Action: 此工具在寻找编译时缺的文件时很有用, 用前记得先 apt-file update
PS: auto-apt 有相同功能, 而且可以检测进程需要哪些缺少的文件, 自动提示用户选择安装相应的包. |