1 软件包安装卸载方法
1.1 apt方式
高级包装工具(Advanced Packaging Tools,简称APT)是Debian及其衍生发行版(如Ubuntu)的软件包管理器。APT可以自动下载,配置,安装二进制或者源代码格式的软件包。
1.1.1 安装卸载
以vim软件为例进行说明
(1)检索
sudo apt-cache search vim搜索软件
sudo apt-cache show vim查看包的相关信息、大小、版本等
sudo apt-cache stats显示当前系统所有使用的Debain数据源的统计信息
sudo apt-cache depends vim查找软件包的依赖关系
(2)安装软件
sudo apt-get install vim普通安装
sudo apt-get -f install vim修复安装指定软件
sudo apt-get -f install修复安装全部软件
sudo apt-get --reinstall install vim重新安装指定软件
(3)更新软件
sudo apt update刷新软件源
sudo apt list --upgradable
sudo apt-get upgrade更新已安装的所有包
sudo apt autoremove更新完成之后清除不需要的旧组件
(4)卸载软件
sudo apt-get remove vim移除式卸载,只是删掉数据和可执行文件
sudo apt-get --purge remove vim清除式卸载,完全卸载同时清除配置文件
1.1.2 软件管理
(1)软件安装包所在路径
在用命令apt-get install安装时,是先将软件安装包下载到/var/cache/apt/archives中,之后再进行安装的。
/var/cache/apt/archives
可以对已经安装过的软件包进行删除
sudo rm -rf *.deb 手动删除
sudo apt-get clean自动清理软件包。
sudo apt-get autoclean 自动只清理过时的包
1.2 dpkg方式
dpkg命令的英文全称是Debian package,故名意思是Debian Linux系统用来安装、创建和管理软件包的实用工具。
dpkg有一个缺点是不能解决包之间的依赖问题。
1.2.1 安装卸载
(1)安装软件
sudo dpkg -i package_name.deb
(2)卸载软件
sudo dpkg -r pkg1 pkg2移除式卸载
sudo dpkg --remove pkg1 pkg2移除式卸载
sudo dpkg -P pkg1 pkg2清除式卸载
sudo dpkg --purge pkg1 pkg2清除式卸载
1.2.2 软件管理
(1)dpkg使用文本文件来作为数据库,通称在/var/lib/dpkg目录下。
在status文件中存储软件状态和控制信息。
在info/目录下备份控制文件,在其下的.list文件中记录安装文件清单。
在info/目录下备份控制文件,在其下的.mdasums保存文件的MD5编码。
(2)显示已安装软件包列表
sudo dpkg --list
sudo dpkg --list python*模糊查询
每条记录对应一个软件包, 注意每条记录的第一, 二, 三个字符(+++), 这就是软件包的状态标识, 后边依此是软件包名称, 版本号, 架构和简单描述。
第一字符为期望值,它包括:
u 状态未知,这意味着软件包未安装,并且用户也未发出安装请求.
i 用户请求安装软件包.
r 用户请求卸载软件包.
p 用户请求清除软件包.
h 用户请求保持软件包版本锁定.
第二字符,是软件包的当前状态,此列包括软件包的六种状态.:
n 软件包未安装.
i 软件包安装并完成配置.
c 软件包以前安装过,现在删除了,但是它的配置文件还留在系统中.
u 软件包被解包,但还未配置.
f 试图配置软件包,但是失败了.
h 软件包安装,但是但是没有成功.
第三字符,标识错误状态,可以总结为四种状态:
第一种状态标识没有问题,为空。其它三种符号则标识相应问题.
h 软件包被强制保持,因为有其它软件包依赖需求,无法升级.
r 软件包被破坏,可能需要重新安装才能正常使用(包括删除).
x 软包件被破坏,并且被强制保持.
(2)列出所有安装后留在系统里的文件
sudo dpkg -L packagename
sudo dpkg -L python3
文档一般在/usr/share
可执行文件/usr/bin
配置文件/etc
1.3 源码编译方式
安装包的格式(.tar、tar.gz、tar.bz2、tar.Z)。
首先解压缩源码压缩包
sudo tar zxf xx.tar.gz
sudo tar zxf xx.tar.Z
sudo tar zxf xx.tgz
sudo bunzip2 xx.bz2
sudo tar xf xx.tar
然后进入到解压出的目录中,建议先读一下README之类的说明文件,因为此时不同源代码包或者预编译包可能存在差异。
查看一下可执行文件
sudo ls -F --color
sudo ls -F
可执行文件会以*号的尾部标志。
一般依次执行,即可完成安装。
./configure
Make
sudo make install
2 apt与apt-get的区别
2.1 背景
Debian作为Ubuntu、Linux Mint和elementary OS 等Linux操作系统的母板,其具有强健的包管理系统,它的每个组件和应用程序都内置在系统中安装的软件包中。
Debian使用一套名为Advanced Packaging Tool(APT)的工具来管理这种包系统,不过请不要把它与apt命令混淆,它们之间其实不是同一个东西。
在基于Debian的Linux发行版中,有各种工具可以与APT进行交互,以方便用户安装、删除和管理的软件包:
(1)apt-get是其中一款广受欢迎的命令行工具。
(2)Aptitude是另一款命令行与GUI兼顾的小工具。
可能遇到过许多类似apt-get的命令,如apt-cache、apt-config。如你所见,这些命令都比较低级又包含众多功能,普通的Linux用户也许永远都不会使用到。换种说法来说,就是最常用的Linux包管理命令都被分散在了apt-get、apt-cache和apt-config这三条命令当中。
apt命令的引入就是为了解决命令过于分散的问题,它包括了apt-get命令出现以来使用最广泛的功能选项,以及apt-cache和apt-config命令中很少用到的功能。
简单来说就是:apt = apt-get、apt-cache和apt-config中最常用命令选项的集合。
2.2 区别
虽然apt与apt-get有一些类似的命令选项,但它并不能完全向下兼容apt-get命令。也就是说,可以用apt替换部分apt-get系列命令,但不是全部。
当然,apt还有一些自己的命令:
sudo apt list列出包含条件的包(已安装,可升级等)。
sudo apt edit-sources编辑源列表
3 更新软件源
有时候ubuntu系统安装软件出现Unable to locate package错误,解决办法更新软件源。
cd /etc/apt
sudo cp sources.list sources.list.backup备份
sudo gedit sources.list重新编写一个文件
sudo apt update执行一下进行软件源的更新。
3.1 软件源格式
一、文件sources.list内容
deb http://cn.archive.ubuntu.com/ubuntu jammy main restricted
deb http://cn.archive.ubuntu.com/ubuntu jammy-updates main restricted
deb http://cn.archive.ubuntu.com/ubuntu jammy universe
deb http://cn.archive.ubuntu.com/ubuntu jammy-updates universe
deb http://cn.archive.ubuntu.com/ubuntu jammy multiverse
deb http://cn.archive.ubuntu.com/ubuntu jammy-updates multiverse
deb http://cn.archive.ubuntu.com/ubuntu jammy-backports main restricted universe multiverse
deb http://cn.archive.ubuntu.com/ubuntu jammy-security main restricted
deb http://cn.archive.ubuntu.com/ubuntu jammy-security universe
deb http://cn.archive.ubuntu.com/ubuntu jammy-security multiverse
二、整个软件源结构可以分解为四个部分:
(1)第一部分:软件包格式
deb或deb-src
(2)第二部分:软件包服务器地址
http://cn.archive.ubuntu.com/ubuntu
(3)第三部分:发行版版本代号
jammy或jammy-updates或jammy-security或
jammy-backports或jammy-proposed
(4)第四部分:软件包的分类目录
main、restricted、universe、multiverse
main(主要的)–main组件包括了自由软件、可以被自由发布的软件和被Ubuntu团队完全支持的软件。其中包括了大多数流行的和稳定的开源软件,当您安装Ubuntu时默认安装的就是这些软件。
restricted(限制的)–restricted组件是专供普遍用途,而且没有自由软件版权,但依然被Ubuntu团队支持的软件。请注意,因为不能直接修改软件,因而我们可能不能提供完全的技术支持,即便如此,我们还能向实际作者反馈Bug报告。
universe(宇宙,世界,全人类)–universe组件是整个自由、开源Linux世界的缩影。在universe组件中,你可以找到大多数开源软件,以及在开源版权下的软件,所有这些都是在公共源的基础上建立的。这些软件都是使用main中的组件编写的,它们能与main组件相安无事地共同运行,但它们没有安全升级的保障。universe组件包含了数以千计的软件。虽然是公共的,用户必须明白它们与稳定的Ubuntu核心的软件的差异和不稳定。
multiverse(多元的)–multiverse组件包含了不自由的软件,这意味着这些软件不满足Ubuntu相对于main组件的各种版权政策。当您使用这些软件时,如何调整各种权力以及遵重版权所有者的问题,就完全依靠您自己把握了。 这些软件不被我们支持,而且通常不能被修改和更新,您将自己承担任何风险。
3.2 软件源镜像站
中科大Ubuntu软件源镜像站
(1)目录dists/:
本目录包含发行版(distributions),此处是获得 Ubuntu发布版本(releases)和已发布版本(pre-releases)的软件包的正规途径。
存在于dists目录下的物理目录名,例如trusty-updates和trusty-security,就是附加的仓库。当某个Ubuntu发行版处于维护阶段。将包的必要升级和安全更新放在附加的仓库里。其附加仓库通常有版本代号-updates、版本代号-security、版本代号-proposed等等。
dists目录包含的全是Ubuntu发行版目录及其附加仓库目录(如:trusty、trusty-update、trusty-security、trusty-backports就是Ubuntu trusty发行版目录及其附加仓库目录)。
(2)目录pool/:
所有Ubuntu发布版及已发布版的软件包的物理地址。软件包均放进一个巨大的池子(pool),按照源码包名称分类存放。
为了方便管理,pool目录下按属性再分类(main、restricted、 universe和multiverse),分类下面再按源码包名称的首字母归档。
这些目录包含的文件有:运行于各种系统架构的二进制软件包,生成这些二进制软件包的源码包。
可以选择国内的镜像源。
4 问题及解决
4.1 安装软件Could not get lock
ps -ef | grep apt找到进程
sudo kill -9 杀死进程
4.2 下载离线安装包
无外网的局域网安装软件一个烦人的事件就是明明安装包下好了,但有时候就是安装不上,因为缺少相应依赖的包。那么如何将一个软件依赖的包、库之类的下载下来呢?这里就用到apt的相关功能。
4.2.1 查看依赖
sudo apt-cache depends python3-pip
输出如下
python3-pip
Depends: ca-certificates
Depends: python3-distutils
Depends: python3-setuptools
Depends: python3-wheel
Depends: <python3:any>
4.2.2 下载依赖包
下载到/var/cache/apt/archives目录中
sudo apt-get install dependpackname --reinstall -d
其中-d表示只下载
sudo apt-get install ca-certificates --reinstall -d
sudo apt-get install python3-distutils --reinstall -d
sudo apt-get install python3-setuptools --reinstall -d
sudo apt-get install python3-wheel --reinstall -d
sudo apt-get install python3-pip --reinstall -d
sudo apt-get clean可以清理掉这个目录下的安装包
4.2.3 批量下载依赖包
(1)获取依赖
sudo apt-cache depends python3-pip | grep Depends
输出如下
Depends: ca-certificates
Depends: python3-distutils
Depends: python3-setuptools
Depends: python3-wheel
Depends: <python3:any>
(2)切分
以:分割并取第二段
sudo apt-cache depends python3-pip | grep Depends | cut -d : -f 2
输出如下
ca-certificates
python3-distutils
python3-setuptools
python3-wheel
<python3
(3)裁剪
有些包名中有<>符号,用tr将其删除
sudo apt-cache depends python3-pip | grep Depends | cut -d: -f 2 | tr -d "<>"
输出如下
ca-certificates
python3-distutils
python3-setuptools
python3-wheel
python3
(4)合并为大指令
sudo apt-get install --reinstall -d `apt-cache depends python3-pip | grep Depends | cut -d: -f 2 | tr -d "<>"`
4.2.4 离线安装
sudo dpkg -i *.deb
sudo apt-get clean安装完成后清除安装包
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)