使用apt和dpkg安装软件
Ubuntu安装远程仓库中的软件
另可参考 Debian 手册中关于deb包制作章节
软件包的本质: 就是归档文件。
软件包的类型:
- 二进制软件包;后缀.deb
- 源码包; .tar.gz等,还可进一步打包成 .dsc 文件。
APT (Advanced Packaging Tool)
软件源配置文件 ` /etc/apt/sources.list`
软件源配置格式:
DebType AddressTyPe://Hostaddress/ubuntu/ Distribution Commponent1 Commponent2 ...
- DebTyPe: 软件包类型,deb表示二进制软件包;deb-src表示源码包
- AddressTyPe:
- Distribution: 表示Ubuntu的各个发行版本
- Commponent: 表示软件包组别,可选:main retricted universe multiverse multiverse
还可直接使用命令:
sudo add-apt-repository ppa
查询软件包信息 apt-cache
是一个底层工具,需与子命令配合,比如:
apt-cache stats # 软件包统计信息
apt-cache search 关键字 # 按关键字搜索软件包
apt-cache show pkg # 查询软件包描述信息
apt-cache policy pkg # 安装状态
apt-cache depends pkg # 依赖关系
apt-cache redepends pkg # 反向依赖关系
管理软件包
apt-get
apt-get update #刷新软件源
apt-get install #安装软件
apt-get --reinstall install #重新安装软件包
apt-get purge #卸载并清除软件所有配置,且会以`softname*`这种形式卸载软件
apt-get autoremove #自动卸载自行安装且不再需要的软件,无需添加softname
apt-get -f install #当依赖出现问题时apt-get会尝试fix修复问题(解决依赖关系),可以不添加softname
apt-get upgrade #更新所有软件包
下载的软件包放在缓存目录 /var/cache/apt/archives 中,
在此可找到所有apt-get install
下载的软件包
安装建议的软件包:
--install-suggests
Consider suggested packages as a dependency for installing. Configuration
Item: APT::Install-Suggests.
--no-install-recommends
Do not consider recommended packages as a dependency for installing.
Configuration Item: APT::Install-Recommends.
使用apt-get只下载二进制包,而不安装的命令是:
sudo apt-get install -d 软件名称
不过要注意,像bcmwl-kernel-source这种软件是自动根据你的内核版本来下载的。
PPA源
PPA : Personal Package Archives 个人软件包集合
Launchpad 是Ubuntu母公司Canonical所架设 网址:<lanuchpad.net/ubuntu/+ppas>
使用命令 add-apt-repository 安装
add-apt-repositor不是内建指令,若无则sudo apt-get install python-software-properties安装
PPA格式: ppa:user/ppa-name
添加PPA源: sudo add-apt-repository ppa:user/name
删除PPA源: sudo add-add-repository -r ppa:user/name 然后进入/etc/apt/sources.list.d/ 目录,将相应ppa源的保存文件删除。
dpkg 包管理
dpkg软件包管理命令选项:
选项 | 作用 |
---|---|
-l | 查看该已安装软件包信息 |
-L | 查看该软件所安装的相关文件及位置 |
-s | 查询已安装的指定软件包详细信息 |
-S | 查询系统中某个文件所属软件包 |
-i | 安装软件包 |
-I | 查询未安装软件包的信息 |
-c | 列出deb软件包中所包含的文件 |
-r | 卸载软件包不删除配置文件 |
-P | 完全卸载 |
各选项后加上: 相关软件的 deb 包
dpkg问题:
- 不能下载软件包
- 不能自动解决依赖问题
- 不能卸载相关的其它软件
目录: /var/lib/dpkg/info 下保存各个软件包的信息及管理文件;
其中 .list
文件中包含的信息即为 dpkg -L
的到的信息。
# 一次经验,由于先直接使用 dpkg -i 安装 youdao-dict.*.deb 出现了依赖问题,再次使用
#apt-get 安装上面的依赖项时,会提示:••
# 有未能满足的依赖关系。请尝试不指明软件包的名字运行apt-get -f install(也可指定一个具体解决办法)
#
#此时只要直接运行所提示的命令即可解决一系列的依赖问题,因为apt-get 命令可以自动解决依赖关系。
#
#
# 可以直接使用 apt-get install 下载的 .deb 包吗?
配置国内软件源
参考:中科大的 Ubuntu 源使用帮助 — USTC Mirror Help 文档
小技巧:使用 HTTPS 可以有效避免国内运营商的缓存劫持。
另外,也可以使用 snullp 大叔开发的 配置生成器 (不错)。
注意:操作前请做好相应备份 ; 更改完 /etc/apt/sources.list
文件后请运行 sudo apt-get update
更新索引以生效。
apt-file
安装 apt-file:
sudo apt-get install apt-file
apt-file介绍:
Package: apt-file
Description-en: search for files within Debian packages (command-line interface)
apt-file is a command line tool for searching files contained in packages
for the APT packaging system. You can search in which package a file is
included or list the contents of a package without installing or fetching it.
If you would prefer not to download the large files used by apt-file you can
run rapt-file, which calls a remote server to do the searches.
用法示例:
- updage file cache (可选)
apt-file update
- Search which package provides the library libgstapp-0.10.so.0:
apt-file search libgstapp-0.10.so.0
还可用rapt-file搜索远程仓库中的内容 - 根据2的结果(libgstremer-plugins-base0.10-0)
sudo apt-get install libgstremer-plugins-base0.10-0
一些错误
运行sudo apt-get update之后的一些错误
部分输出如下:
W: 无法下载 http://ppa.launchpad.net/t-tujikawa/ppa/ubuntu/dists/trusty/main/binary-amd64/Packages 404 Not Found
W: 无法下载 http://ppa.launchpad.net/t-tujikawa/ppa/ubuntu/dists/trusty/main/binary-i386/Packages 404 Not Found
这些问题可以忽略
有时由于这个PPA的维护者,维护的仓库地址不存在,没法下载,导致出现"404 Not Found"错误,
可以选择在软件源中删除该PPA:
在软件源 –> 取消勾选 ppa.launchpad.net/t-tujikawa/ 相关选项。
这样每次更新就不用花费太多时间。
其中Launchpad是:
Launchpad is a software collaboration platform that provides
问题二
W: GPG 错误:http://archive.ubuntukylin.com:10006 xenial InRelease: 由于没有公钥,无法验证下列签名: NO_PUBKEY 8D5A09DC9B929006
解决思路:下载该GPG 公钥
- 解决办法一
sudo apt-get adv --keyserver keyserver.ubuntu.com --recv-keys 8D5A09DC9B929006
[sudo] password for fan:
E: 无法识别命令行选项 --keyserver
在ubuntu 14.4出现错误,改换方法二。
- 解决办法二
先把这个源的公钥从服务器导入到当前用户的公钥库:
[fan 09:14:26]~$ gpg --keyserver keyserver.ubuntu.com --recv-keys 8D5A09DC9B929006
gpg: 下载密钥‘9B929006’,从 hkp 服务器 keyserver.ubuntu.com
gpg: 密钥 9B929006:公钥“Zhang Xin (Ubuntu Kylin Team) <zhangxin@kylinos.cn>”已导入
gpg: 合计被处理的数量:1
gpg: 已导入:1 (RSA: 1)
无需使用sudo,sudo可能出错。
再让apt-get来使用这个公钥:
gpg --armor --export 9B929006 | sudo apt-key add -
导入成功后 sudo apt-get update 即可