apt-get、apt、aptitude、dpkg、gdebi、yum
大多数现代类 Unix 操作系统都提供了一个集中的软件包管理机制,以帮助用户 搜索、安装 和 管理 软件。而软件通常以「包」的形式存储在仓库「repository」中,对软件包的使用和管理被称为包管理。而 Linux 包的基本组成部分通常有:共享库、应用程序、服务和文档。虽然大多数流行的 Linux 发行版在包管理工具、方式和形式都大同小异,但却还是有平台差异:
Ubuntu deb 包下载:https://packages.ubuntu.com/focal/rinetd
focal 表示发行版本,rinetd 表示 deb 包名
更新 LInux 系统步骤:
root@Kali:~# apt-get update 更新 "本地软件包 数据库"
root@Kali:~# apt-get upgrade 升级已存在的包
root@Kali:~# apt-get dist-upgrade 升级系统到最新版本
查询软件版本
命令:aptitude show 软件名 示例:aptitude show kde-runtime
命令:dpkg -l 软件名 示例:dpkg -l gedit
查询软件安装路径
命令:dpkg -L 软件名 示例:dpkg -L gedit
命令:whereis 软件名 示例:whereis gedit
Linux 软件包管理基本操作入门
1、什么是 "软件包管理系统"
大多数现代类 Unix 操作系统都提供了一个集中的软件包管理机制,以帮助用户 搜索、安装 和 管理 软件。而软件通常以「包」的形式存储在仓库「repository」中,对软件包的使用和管理被称为包管理。而 Linux 包的基本组成部分通常有:共享库、应用程序、服务和文档。
虽然大多数流行的 Linux 发行版在包管理工具、方式和形式都大同小异,但却还是有平台差异:
系统 | 格式 | 工具 |
---|---|---|
Debian | .deb | apt、apt-cache、apt-get、dpkg |
Ubuntu | .deb | apt、apt-cache、apt-get、dpkg |
CentOS | .rpm | yum |
Fedora | .rpm | dnf |
Debian 及其衍生产品如:Ubuntu、Linux Mint 和 Raspbian 的包格式为.deb文件,APT 是最常见包操作命令,可:搜索库、安装包及其依赖和管理升级。如果需要直接安装现成的 .deb 包时需要使用dpkg 命令。
CentOS、Fedora 及 Red Hat 系列 Linux 使用 RPM 包文件,并使用 yum 命令管理包文件及与软件库交互。在最新的 Fedora 版本中,yum命令已被 dnf 取代进行包管理。
apt-get 高级包装工具
(英语:Advanced Packaging Tools,简称:APT)是Debian及其衍生发行版(如:ubuntu)的软件包管理器。APT可以自动下载,配置,安装二进制或者源代码格式的软件包,因此简化了 Unix系统上管理软件的过程,apt-get命令一般需要root权限执行,所以一般跟着sudo命令。它根yum ,pacman,installpkg等性质差不多,是系统软件的管理工具。会用其中一种基本上都会用了。
apt-get 帮助
用法:apt-get [选项] 命令
apt-get [选项] install|remove pkg1 [pkg2 ...]
apt-get [选项] source pkg1 [pkg2 ...]
apt-get 是一个下载安装软件包的简单命令行接口。 最常用的命令是update(更新) 和 install(安装)。
命令:
update - 重新获取软件包列表
upgrade - 进行更新
install - 安装新的软件包
remove - 移除软件包。卸载软件
autoremove - 自动移除全部不使用的软件包
purge - 移除软件包和配置文件
source - 下载源码档案
build-dep - 为源码包配置编译依赖
dist-upgrade - 发行版升级, 参见 apt-get(8)
dselect-upgrade - 依照 dselect 的选择更新
clean - 清除下载的归档文件
autoclean - 清除旧的的已下载的归档文件
check - 检验是否有损坏的依赖
选项:
-h 本帮助文件。
-q 输出到日志 - 无进展指示
-qq 不输出信息,错误除外
-d 仅下载 - 不安装或解压归档文件
-s 不实际安装。模拟执行命令
-y 假定对所有的询问选是,不提示
-f 尝试修正系统依赖损坏处
-m 如果归档无法定位,尝试继续
-u 同时显示更新软件包的列表
-b 获取源码包后编译
-V 显示详细的版本号
-c=? 阅读此配置文件
-o=? 设置自定的配置选项,如 -o dir::cache=/tmp
典型应用
假设想装个赛车类游戏玩玩。有哪些赛车类游戏可供选择呢?
apt-cache search racing game
出来了一大堆结果。看看有没有更多关于torcs这个游戏的信息。
apt-cache show torcs
看上去不错。这个游戏是不是已经安装了?最新版本是多少?它属于哪一类软件,universe还是main?
apt-cache policy torcs
好吧,现在我要来安装它!:apt-get install torcs
在控制台下我应该调用什么命令来运行这个游戏呢?
在这个例子中,直接用 torcs 就行了。
但并不是每次都这么简单。我们可以通过查找哪些文件被安装到了 “/usr/bin”文件夹下来确定二进制文件名。
对于游戏软件,这些二进制文件将被安装到“/usr/games”下面。对于系统管理工具相应的文件夹是“/usr/sbin”。
dpkg -L torcs | grep /usr/games/
命令的第一部分显示软件包“torcs”安装的所有文件(您自己试试看)。
命令的第二部分,我们告诉系统只显示前一部分的输出结果中含有“/usr/games”的那些行。
这个游戏很酷哦。说不定还有其他赛道可玩的?
apt-cache search torcs
我的磁盘空间不够用了。我得把apt的缓存空间清空才行。
apt-get clean
哦不,老妈叫我把机器上的所有游戏都删掉。但是我想把配置文件保留下来,这样待会我只要重装一下就可以继续玩了。
apt-get remove torcs
如果我想连配置文件一块删除:
apt-get remove –purge torcs额外的软件包
deborphan 和 debfoster 工具可以找出已经安装在系统上的不会被用到的软件包。提高命令行方式下的工作效率
您可以通过定义别名(alias)来提高这些命令的输入速度。
例如,您可以在您的 *~/.bashrc* 文件中添加下列内容
alias acs='apt-cache search'
alias agu='sudo apt-get update'
alias agg='sudo apt-get upgrade'
alias agd='sudo apt-get dist-upgrade'
alias agi='sudo apt-get install'
alias agr='sudo apt-get remove'
或者使用前面介绍的 aptitude 命令,如“alias agi='sudo aptitude install'”。
apt 与 apt-get 命令的区别。
先了解下这两个命令的背景,以及它们要试图达到的目的。
Debian 作为 Ubuntu、Linux Mint 和 elementary OS 等 Linux 操作系统的母板,其具有强健的「包管理」系统,它的每个组件和应用程序都内置在系统中安装的软件包中。Debian 使用一套名为 Advanced Packaging Tool(APT)的工具来管理这种包系统,不过请不要把它与 apt 命令混淆,它们之间是其实不是同一个东西。
在基于 Debian 的 Linux 发行版中,有各种工具可以与 APT 进行交互,以方便用户安装、删除和管理的软件包。apt-get 便是其中一款广受欢迎的命令行工具,另外一款较为流行的是 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,而且 apt 更加结构化,并为用户提供了管理软件包所需的必要选项。
简单来说就是:apt = apt-get、apt-cache 和 apt-config 中最常用命令选项的集合。
使用 apt 还是 apt-get
目前还没有任何 Linux 发行版官方放出 apt-get 将被停用的消息,至少它还有比 apt 更多、更细化的操作功能。对于低级操作,仍然需要 apt-get。
既然两个命令都有用,那么我该使用 apt 还是 apt-get 呢?作为一个常规 Linux 用户,系统极客建议大家尽快适应并开始首先使用 apt。不仅因为广大 Linux 发行商都在推荐 apt,更主要的还是它提供了 Linux 包管理的必要选项。
最重要的是,apt 命令选项更少更易记,因此也更易用,所以没理由继续坚持 apt-get。
最后提供两点使用上的建议:
- apt 可以看作 apt-get 和 apt-cache 命令的子集,可以为包管理提供必要的命令选项。
- apt-get 虽然没被弃用,但作为普通用户,还是应该首先使用 apt
虽然 apt 与 apt-get 有一些类似的命令选项,但它并不能完全向下兼容 apt-get 命令。也就是说,可以用 apt 替换部分 apt-get 系列命令,但不是全部。
apt 命令 | 取代的命令 | 命令的功能 |
---|---|---|
apt install | apt-get install | 安装软件包 |
apt remove | apt-get remove | 移除软件包 |
apt purge | apt-get purge | 移除软件包及配置文件 |
apt update | apt-get update | 刷新存储库索引 |
apt upgrade | apt-get upgrade | 升级所有可升级的软件包 |
apt autoremove | apt-get autoremove | 自动删除不需要的包 |
apt full-upgrade | apt-get dist-upgrade | 在升级软件包时自动处理依赖关系 |
apt search | apt-cache search | 搜索应用程序 |
apt show | apt-cache show | 显示装细节 |
当然,apt 还有一些自己的命令:
新的apt命令 | 命令的功能 |
---|---|
apt list | 列出包含条件的包(已安装,可升级等) |
apt edit-sources | 编辑源列表 |
需要大家注意的是:apt 命令也还在不断发展, 因此,你可能会在将来的版本中看到新的选项。
aptitude
aptitude 和 apt-get 一样,是 Debian 及其衍生系统中功能极其强大的 包管理工具。但是 aptitude 与 apt-get 不同的是,aptitude 在处理依赖问题上更佳一些。举例来说,aptitude 在删除一个包时,会同时删除本身所依赖的包。这样,系统中不会残留无用的包,整个系统更为干净。
由于 aptitude 比 apt-get 了解更多信息,可以说它更适合用来进行安装和卸载。
一些常用 aptitude 命令
aptitude update 更新可用的包列表
aptitude upgrade 升级可用的包
aptitude dist-upgrade 将系统升级到新的发行版
aptitude install pkgname 安装包
aptitude remove pkgname 删除包
aptitude purge pkgname 删除包及其配置文件
aptitude search string 搜索包
aptitude show pkgname 显示包的详细信息
aptitude clean 删除下载的包文件
aptitude autoclean 仅删除过期的包文件
1.aptitude 解决得更好的地方:
install, remove, reinstall(apt-get无此功能),
show(apt-get无此功能), search(apt-get无此功能),
hold(apt-get无此功能), unhold(apt-get无此功能),2.apt-get 解决得更好的地方:
source(aptitude无此功能), build-dep (低版本的aptitude没有build-dep功能)3.apt-get 跟 aptitude 没什么区别的地方:update, upgrade
apt-get upgrade = aptitude safe-upgrade
apt-get dist-upgrade = aptitude full-upgrgade其实用的比较多的是(这里以Linux上很有名的开源播放器VLC为例)
sudo apt-get install vlc
sudo apt-get remove vlc
apt-get update 更新源
apt-get upgrade 更新已安装的包有时候要添加软件源也可用这个命令:sudo apt-get add repostory:[软件源地址] 然后用apt-get update 更新源
dpkg、gdebi (推荐)
- dpkg :dpkg 在安装手动下载的 deb包时,没法自动解决包的依赖关系,需要手动安装包需要的依赖。
- gdebi:可以自动计算依赖关系并安装。gdebi 也命令行模式运行(sudo gdebi package.deb),功能和 GUI 模式下完全一样。试下这个命令你就不想用 dpkg -i
安装 gdebi
sudo apt-get update
sudo apt-get install gdebi
例如:安装搜狗输入法,我们在终端先进入到相应deb的文件夹后
sudo gdebi sogoupinyin.deb
dpkg 是一个 Debian 的一个命令行工具,它可以用来安装、删除、构建和管理 Debian 的软件包。
dpkg -i package.deb # 安装包
dpkg -r package # 删除包
dpkg -P package # 删除包(包括配置文件)
sudo dpkg -S file # 这个文件属于哪个已安装软件包。
sudo dpkg -L package # 列出软件包中的所有文件。
dpkg -l package # 显示该包的版本
dpkg --unpack package.deb # 解开deb包的内容
dpkg -l # 列出当前已安装的包
dpkg -c package.deb # 列出deb包的内容
dpkg --configure package # 配置包
下面是它的一些命令解释:
.1)安装软件
命令行:dpkg -i <.deb file name>
示例:dpkg -i avg71flm_r28-1_i386.deb
示例: dpkg -i ~/Download/mozybackup_i386.deb
2)安装一个目录下面所有的软件包
命令行:dpkg -R
示例:dpkg -R /usr/local/src
3)释放软件包,但是不进行配置,解开 deb 包的内容。
命令行:dpkg –unpack package_file 如果和-R一起使用,参数可以是一个目录
示例:dpkg –unpack avg71flm_r28-1_i386.deb
4)重新配置和释放软件包。配置包
命令行:dpkg –configure package_file
如果和-a一起使用,将配置所有没有配置的软件包
示例:dpkg –configure avg71flm_r28-1_i386.deb
5)删除软件包(保留其配置信息)
命令行:dpkg -r
示例:dpkg -r avg71flm.deb
示例:dpkg -r mozybackup.deb
6)替代软件包的信息
命令行:dpkg –update-avail <Packages-file>
7)合并软件包信息
dpkg –merge-avail <Packages-file>
8)从软件包里面读取软件的信息
命令行:dpkg -A package_file
9)删除一个包(包括配置信息)
命令行:dpkg -P
示例:dpkg -P mozybackup
10)丢失所有的Uninstall的软件包信息
命令行:dpkg –forget-old-unavail
11)删除软件包的Avaliable信息
命令行:dpkg –clear-avail
12)查找只有部分安装的软件包信息
命令行:dpkg -C
13)比较同一个包的不同版本之间的差别
命令行:dpkg –compare-versions ver1 op ver2
14)显示帮助信息
命令行:dpkg –help
15)显示dpkg的Licence
命令行:dpkg –licence (or) dpkg –license
16)显示dpkg的版本号
命令行:dpkg –version
17)建立一个deb文件
命令行:dpkg -b direc×y [filename]
18)显示一个Deb文件的内容
命令行:dpkg -c filename
列出 deb 包的内容
19)显示一个Deb的说明
命令行:dpkg -I filename [control-file]
20)搜索Deb包
命令行:dpkg -l package-name-pattern
示例:dpkg -I vim
21) 显示所有已经安装的Deb包,同时显示版本号以及简短说明。即显示包的版本
命令行:dpkg -l
示例:dpkg -l mozybackup
22)查找指定包的状态信息
命令行:dpkg -s package-name
示例:dpkg -s ssh
示例: dpkg -s mozybackup
23)安装完包后,可以用此命令查看软件安装到什么地方,
命令行:dpkg -L package-Name
示例:dpkg -L apache2
示例: dpkg -L mozybackup
24)搜索指定包里面的文件(模糊查询)
命令行:dpkg -S filename-search-pattern
25)显示包的具体信息
命令行:dpkg -p package-name
示例:dpkg -p cactidpkg -S keyword 搜索所属的包内容
dpkg、apt-get、aptitude 区别
- dpkg 绕过 apt 包管理数据库对软件包进行操作,所以你用 dpkg 安装过的软件包,用 apt 可以再安装一遍,系统不知道之前安装过了,将会覆盖之前 dpkg 的安装。dpkg 是用来安装 .deb 文件,但不会解决模块的依赖关系,且不会关心 ubuntu 的软件仓库内的软件,可以用于安装本地的 deb 文件
- apt 会解决安装模块的依赖问题并会咨询软件仓库,但不会安装本地的 deb 文件。apt 是建立在 dpkg 之上的软件管理工具。
- aptitude 与 apt-get 一样,是 Debian 及其衍生系统功能极其强大的 包管理工具。aptitude 与 apt-get 不同的是在处理依赖问题上更佳一些。举例来说,aptitude在删除一个包时,会同时删除本身所依赖的包。这样系统中不会残留无用的包整个系统更为干净。
安装软件包
dpkg -i package_name.deb # 安装本地软件包,不解决依赖关系
apt-get install package # 在线安装软件包
sudo apt-get install packagename # 安装一个新软件包(参见下文的aptitude )
aptitude install pattern # 在线安装软件包
apt-get install package --reinstall # 重新安装软件包
apitude reinstall package # 重新安装软件包
移除软件包
dpkg -r package # 删除软件包
apt-get remove package # 删除软件包
sudo apt-get remove packagename # 卸载一个已安装的软件包(保留配置文件)
aptitude remove package # 删除软件包
dpkg -P # 删除软件包及配置文件
apt-get remove package --purge # 删除软件包及配置文件
sudo apt-get --purge remove packagename # 卸载一个已安装的软件包(删除配置文件)
apitude purge pattern # 删除软件包及配置文件apt-get autoremove # 自动移除软件包,删除不再需要的软件包
注:aptitude 没有,它会自动解决这件事
# 有些软件很难卸载,而且还阻止了别的软件的应用 ,就可以用这个,不过有点冒险。
sudo dpkg –force-all –purge packagename# 会把已装或已卸的软件都备份在硬盘上,所以如果需要空间的话,可以让这个命令来删除你已经删掉的软件
sudo apt-get autoclean apt
- apt-get autoremove 删除为了满足依赖而安装的,但现在不再需要的软件包(包括已安装包),保留配置文件;高能警告:慎用本命令,它会在你不知情的情况下,一股脑删除很多“它认为”你不再使用的软件;
- apt-get remove 删除已安装的软件包(保留配置文件),不会删除依赖软件包,保留配置文件;
- apt-get purge 删除已安装的软件包(不保留配置文件),删除软件包,同时删除相应依赖软件包;
- apt-get --purge remove 同apt-get purge
- apt-get autoclean 删除为了满足某些依赖安装的,但现在不再需要的软件包;apt的底层包是dpkg, 而dpkg安装软件包时, 会将*.deb文件放在/var/cache/apt/archives/中;因此本命令会删除该目录下已经过期的deb;
- apt-get clean 删除已经安装过的的软件安装包;即自动将/var/cache/apt/archives/下的所有deb删掉,相当于清理下载的软件安装包;
那么如何彻底卸载软件呢? 如下:
apt-get --purge remove <package> # 删除软件及其配置文件
apt-get autoremove <package> # 删除没用的依赖包
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P # 清理dpkg的列表中有“rc”状态的软件包
可以输入dpkg -l 来查看软件的状态,输入dpkg -P 来卸载软件。因为 dpkg --remove 只是删除安装的文件,但不删除配置文件。而 dpkg --purge 则安装文件和配置文件都删除。
清除下载的软件包
apt-get clean # 清除 /var/cache/apt/archives 目录,
# 这个命令会把安装的软件的备份也删除,不过这样不会影响软件的使用的。
aptitude clean # 清除 /var/cache/apt/archives 目录
apt-get autoclean # 清除 /var/cache/apt/archives 目录,不过只清理过时的包
aptitude autoclean # 清除 /var/cache/apt/archives 目录,不过只清理过时的包
编译相关
apt-get source package # 获取源码
apt-get build-dep package # 解决编译源码 package 的依赖关系
aptitude build-dep pattern # 解决编译源码 pattern 的依赖关系
平台相关
apt-cross --arch ARCH --show package # 显示属于 ARCH 构架的 package 软件包信息
apt-cross --arch ARCH --get package # 下载属于 ARCH 构架的 package 软件包
apt-cross --arch ARCH --install package # 安装属于 ARCH 构架的 package 软件包
apt-cross --arch ARCH --remove package # 移除属于 ARCH 构架的 package 软件包
apt-cross --arch ARCH --purge package # 移除属于 ARCH 构架的 package 软件包
apt-cross --arch ARCH --update # 升级属于 ARCH 构架的 package 软件包
注:慎重考虑要不要用这种方法来安装不同构架的软件包,这样会破坏系统。对于 amd64 的用户可能需要强制安装某些 i386 的包,千万不要把原来 amd64 本身的文件给 replace 了。最好只是安装一些 lib 到 /usr/lib32 目录下。同样地,可以用 apt-file 看某个其它构架的软件包包含哪些文件,或者是文件属于哪个包,不过记得最先要用 apt-file --architecture ARCH update 来升级apt-file 的数据库,在 search 或 show 时也要指定 ARCH。
更新源
apt-get update # 更新源
sudo apt-get update # 修改 /etc/apt/sources.list 或 /etc/apt/preferences 后运行命令。
aptitude update # 更新源
更新系统
apt-get upgrade #更新所有已安装的软件包
aptitude safe-upgrade #更新已经安装的软件包
apt-get dist-upgrade #将系统升级到新版本
aptitude full-upgrade #将系统升级到新版本
2、更新本地包数据库列表
大多数 Linux 都使用本地数据库来存储远程可用的包仓库列表,所以在安装或升级包之前最好更新一下这个数据库。
系统 | 命令 |
---|---|
Debian / Ubuntu | sudo apt-get update |
CentOS | yum check-update |
Fedora | dnf check-update |
使用的时候最好先配置下国内的源
apt update 是更新软件列表,apt upgrade 是更新软件。
3、升级已安装的包
在没有包管理方式时,要升级并保持 Linux 已装软件处在最新版本是一个巨大的工程,管理员和用户不得不手动跟踪上游软件版本变化及安全警告。在有了包管理系统之后,只需几条命令便可保持软件最新。
系统 | 命令 | 备注 |
---|---|---|
Debian / Ubuntu | sudo apt-get upgrade | 仅升级已安装的软件包 |
sudo apt-get dist-upgrade | 可添加或删除程序包,以满足新的依赖。 | |
CentOS | sudo yum update | |
Fedora | sudo dnf upgrade |
4、查找 / 搜索 软件包
大多数 Linux 桌面版本都提供用户可搜索和安装软包的界面,这是找寻和安装软件的最佳方法。但对于追求效率和服务器管理员来说,使用命令行工具查找/搜索软件包才是正途。
系统 | 命令 | 备注 |
---|---|---|
Debian / Ubuntu | apt-cache search 搜索内容 | |
CentOS | yum search 搜索内容 | |
yum search all 搜索内容 | 搜索所有内容,包括包描述。 | |
Fedora | dnf search 搜索内容 | |
dnf search all 搜索内容 | 搜索所有内容,包括包描述。 |
5、查看某个软件包信息
在决定安装哪个包之前,我们往往都需要查看该软件包的详细说明。包的说明文件中通常包括:包名、版本号及依赖列表等元数据,可以使用如下命令来查看。
系统 | 命令 | 备注 |
---|---|---|
Debian / Ubuntu | apt-cache show 包名 | 显示有关软件包的本地缓存信息 |
dpkg -s 包名 | 显示包的当前安装状态 | |
CentOS | yum info 包名 | |
yum deplist 包名 | 列出包的以来 | |
Fedora | dnf info 包名 | |
dnf repoquery –requires 包名 | 列出包的以来 |
6、从软件仓库安装包
一旦我们知道某个软件包的名称之后,便可以使用如下命令从软件仓库安装包。
系统 | 命令 | 备注 |
---|---|---|
Debian / Ubuntu | sudo apt-get install 包名 | |
sudo apt-get install 包1 包2 … | 安装所有列出的包 | |
sudo apt-get install -y 包名 | 无需提示直接安装 | |
CentOS | sudo yum install 包名 | |
sudo yum install 包1 包2 … | 安装所有列出的包 | |
sudo yum install -y 包名 | 无需提示直接安装 | |
Fedora | sudo dnf install 包名 | |
sudo dnf install 包1 包2 … | 安装所有列出的包 | |
sudo dnf install -y 包名 | 无需提示直接安装 |
apt-get 常用命令如下:
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 清理无用的包
sudo apt-get check 检查是否有损坏的依赖
# 有些软件很难卸载,而且还阻止了别的软件的应用 ,就可以用这个,不过有点冒险。
dpkg --force-all --purge packagename
apt-cache showpkg pkgs 显示软件包信息。
apt-cache dumpavail 打印可用软件包列表。
apt-cache show pkgs 显示软件包记录,类似于dpkg –print-avail。
apt-cache pkgnames 打印软件包列表中所有软件包的名称。
dpkg -S file 这个文件属于哪个已安装软件包。
dpkg -L package 列出软件包中的所有文件。# 列出所有与模式相匹配的软件包。支持模糊搜索:*package-name-pattern*
sudo dpkg -l package-name-pattern
7、从本地文件系统直接安装包
很多时候,我们在进行测试或从某个地方直接拿到软件包之后需要从本地文件系统直接安装包。Debian 及衍生系统可以使用 dpkg 进行安装,CentOS 和 Fedora 系统使用 yum 和 dnf 命令进行安装。
系统 | 命令 | 备注 |
---|---|---|
Debian / Ubuntu | sudo dpkg -i 包名.deb | |
sudo apt-get install -y gdebi && sudo gdebi 包名.deb | 使用 gdebi 检索缺少的依赖关系 | |
CentOS | sudo yum install 包名.rpm | |
Fedora | sudo dnf install 包名.rpm |
rpm、deb、tar.gz、tar.bz2、apt、bin
rpm 包 安装
1、找到相应的软件包,比如 soft.version.rpm,下载到本机某个目录;
2、打开一个终端,su - 成 root 用户;
3、cd soft.version.rpm 所在的目录;
4、输入 rpm -ivh soft.version.rpm
deb 包 安装
1、找到相应的软件包,比如 soft.version.deb,下载到本机某个目录;
2、打开一个终端,su - 成 root 用户;
3、cd soft.version.deb 所在的目录;
4、输入 dpkg -i soft.version.deb
tar.gz 源代码 安装
1、找到相应的软件包,比如soft.tar.gz,下载到本机某个目录;
2、打开一个终端,su -成root用户;
3、cd soft.tar.gz所在的目录;
4、tar -xzvf soft.tar.gz //一般会生成一个soft目录
5、cd soft
6、./configure
7、make
8、make install
tar.bz2 源代码 安装
1、找到相应的软件包,比如soft.tar.bz2,下载到本机某个目录;
2、打开一个终端,su -成root用户;
3、cd soft.tar.bz2所在的目录;
4、tar -xjvf soft.tar.bz2 //一般会生成一个soft目录
5、cd soft
6、./configure
7、make
8、make install
apt 方式安装
1、打开一个终端,su -成root用户;
2、apt-cache search soft 注:soft是你要找的软件的名称或相关信息
3、如果2中找到了软件soft.version,则用apt-get install soft.version命令安 装软件
注:只要你可以上网,只需要用apt-cache search查找软件,用 apt-get install 软件
bin 文件安装
如果你下载到的软件名是soft.bin,一般情况下是个可执行文件,安装方法如下:
1、打开一个终端,su -成root用户;
2、chmod +x soft.bin
3、./soft.bin //运行这个命令就可以安装软件了
解压缩后直接运行
有些软件是不需要安装的,自带 jre 解压缩后可直接运行。
1、 打开一个终端,su - 成 root 用户;
2、 tar -xzvf lumaqq.tar.gz // 这一步会生成一个叫 LumaQQ 的目录
3、 cd LumaQQ
4、 chmod +x lumaqq // 设置 lumaqq 这个程序文件为可运行
5、 此时就可以运行 lumaqq 了,用命令 ./lumaqq 即可,但每次运行要输入全路径或切换到刚才生成的LumaQQ目录里
6、 为了保证不设置路径就可以用,你可以在/bin目录下建立一个lumaqq的链接,
用命令 ln -s lumaqq /bin/ 即可,以后任何时候打开一个终端输入lumaqq 就可以启动 QQ 了
7、 如果你要想 lumaqq 有个菜单项,使用菜单编辑工具,比如 Alacarte Menu Editor,
找到上面生成的 LumaQQ 目录里的 lumaqq 设置一个菜单项就可以了,也可以直接到 /usr/share/applications目录,
按照里面其它 *.desktop 文件的格式生成一个自己的 desktop 文件即可。
8、移除已安装的包
由于包管理器知道哪些文件是由哪个包提供的,所以在卸载不需要的软件包之后通常可以获得一个干净的系统。
系统 | 命令 | 备注 |
---|---|---|
Debian / Ubuntu | sudo apt-get remove 包名 | |
sudo apt-get autoremove | 自动移除已知不需要的包 | |
CentOS | sudo yum remove 包名 | |
Fedora | sudo dnf erase 包名 |
9、MAC 中的 brew
一:简介
Homebrew 是 Mac 中常见的包管理器。类似 ubuntu 下 apt-get,centos 的 yum。
官网地址:https://brew.sh/
二:安装
参考官网:/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
如果连接被拒绝,更新 host 文件再次安装
秘籍一:使用wget更新hosts
wget https://raw.githubusercontent.com/racaljk/hosts/master/hosts -qO /tmp/hosts && sudo sh -c 'cat /tmp/hosts > /etc/hosts'
在 Mac 上面安装 HomeBrew 失败的解决方案:修改 hosts 文件:https://blog.csdn.net/qq_33154343/article/details/106030933
苹果 mac 电脑中 brew 的安装使用及卸载详细教程:https://www.jianshu.com/p/65440ecc7023
三:使用
注意:下载太慢,可以替换国内的镜像源
链接地址:https://www.cnblogs.com/jingxiaoniu/p/11123377.html
brew home 用浏览器打开brew的官方网站
brew list redis 查看redis的安装文件
brew cat redis 查看redis的 brew 安装脚本
brew cleanup 删除所有软件升级后的遗留旧版本查看已经安装的包:
1.查看已经安装的包: brew list 【xxx】
2.查看包信息: brew info 【xxx】
3.查看包依赖: brew deps 【xxx】
4.查看配置信息: brew config
5.诊断问题: brew doctor
6.帮助信息: brew help更新:
1.更新Homebrew: brew update
2.查看需要更新的包: brew outdated
3.更新包(不加报名更新所有):brew upgrade 【xxx】
4.锁定不想更新的包: brew pin 【xxx】
5.取消锁定: brew unpin 【xxx】清理:
1.清理旧版本:brew cleanup 【xxx】
2.强制卸载:brew uninstall 【xxx】--force服务管理:
1.列出所有正在运行的服务:brew services list
2.启动一个服务:brew services start 【xxx】
3.停止一个服务:brew services stop 【xxx】
4.重启一个服务:brew services restart 【xxx】
5.运行一个服务:brew services run 【xxx】
6.卸载没有使用过的服务:brew services cleanup仓库管理:
注意:当 brew 默认仓库 core 中不存在当前应用,可以使用 tap 方法添加应用
1.已安装的仓库列表:brew tap
2.添加仓库:brew tap 【user/repo URL】
注:user/repo github上存在,brew tap user/repo 在本地对https://github.com/user/repo仓库上做了个克隆,完成后brew就可以在这个仓库包上工作,URL方法类同。
3.移除仓库:brew untap tap
使用示例:
brew services list # 查看系统通过 brew 安装的服务
brew services cleanup # 清除已卸载无用的启动配置文件
mysql
启动:brew services start mysql
停止:brew services stop mysql
重启:brew services restart mysqlphp
启动:brew services start php
停止:brew services stop php
重启:brew services restart phpnginx
启动:brew services start nginx
停止:brew services stop nginx
重启:brew services restart nginxbrew install mysql // 安装mysql
brew search mysql // 搜索mysql
brew info mysql // 查找mysql相关信息
brew update // 更新自己的Homebrew
brew outdated // 会显示哪些软件可以升级
brew upgrade // 升级所有软件(后面不加名字)
brew upgrade mysql // 升级mysql软件
brew cleanup // 定期清理一些安装包缓存
brew list // 显示已经安装的软件
brew uninstall xx // 卸载某些软件
brew 安装的根目录 一般在:/usr/local/Cellar/ 下
mac brew :command not founc 解决办法
sudo vim .bash_profile
export PATH=/usr/local/bin:$PATH
source .bash_profile
yum 命令
Centos7下升级gcc/g++版本(简单 + 避坑):https://blog.csdn.net/whc18858/article/details/135484071
Redhat 和 Fedora 的软件安装命令是 rpm ,但是用 rpm 安装软件最大的麻烦就是需要手动寻找安装该软件所需要的一系列依赖关系,超级麻烦不说,要是软件不用了需要卸载的话由于卸载掉了某个依赖关系而导致其他的软件不能用。Fedora 终于推出了类似于 ubuntu 中的 apt 的命令 yum
yum,是 Yellow dog Updater Modified 的简称,是 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令,可以自动处理依赖性关系,并且一次安装所有依赖的软体包。
yum 的宗旨是自动化地升级,安装 / 移除 rpm 包,收集 rpm 包的相关信息,检查依赖性并自动提示用户解决。yum 的关键之处是要有可靠的repository,顾名思义,这是软件的仓库,它可以是http或ftp站点, 也可以是本地软件池,但必须包含 rpm 的 header, header 包括了 rpm 包的各种信息,包括描述,功能,提供的文件,依赖性等.正是收集了这些 header并加以分析,才能自动化地完成余下的任务。
Yum 有以下特点:
可以同时配置多个资源库(Repository)
简洁的配置文件(/etc/yum.conf)
自动解决增加或删除rpm包时遇到的倚赖性问题
使用方便
保持与RPM数据库的一致性
yum 常用命令
yum 的命令形式一般是如下:yum [options] [command] [package ...]
其中的[options]是可选的,选项包括-h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。[command]为所要进行的操作,[package ...]是操作的对象。
yum install yum-fastestmirror 自动搜索最快镜像插件
yum install yumex 安装 yum 图形窗口插件
yum grouplist 列出一大堆你已经安装的和能安装的软件套件。yum check-update 列出所有可更新的软件清单
yum list 列出所有可安裝的软件清单
yum update 安装所有更新软件
yum install packageName 仅安装指定的软件
yum remove packageName 删除包yum search keyword 搜索包
yum info 列出所有软件包的信息
yum info updates 列出所有可更新的软件包信息
yum info installed 列出所有已安裝的软件包信息
yum info packagename 查看包信息。
yum list updates 列出所有可更新的软件包
yum list installed 列出所有已安装的软件包
yum list extras 列出所有已安装但不在 Yum Repository 的软件包
yum provides 列出软件包提供哪些文件1、安装
yum install //全部安装
yum install package1 //安装指定的安装包package1
yum groupinsall group1 //安装程序组group12 更新和升级
yum update //全部更新
yum update package1 //更新指定程序包package1
yum check-update //检查可更新的程序
yum upgrade package1 //升级指定程序包package1
yum groupupdate group1 //升级程序组group13 查找和显示
yum info package1 //显示安装包信息package1
yum list //显示所有已经安装和可以安装的程序包
yum list package1 //显示指定程序包安装情况package1
yum groupinfo group1 //显示程序组group1信息yum search string 根据关键字string查找安装包4 删除程序
yum remove | erase package1 //删除程序包package1
yum groupremove group1 //删除程序组group1
yum deplist package1 //查看程序package1依赖情况5 清除缓存
yum 会把下载的软件包和 header存储在cache中,而不会自动删除。
如果我们觉得它们占用了磁盘空间,可以使用 yum clean 指令进行清除
更精确的用法是yum clean headers清除header,yum clean all 清除所有
yum clean packages 清除缓存目录(/var/cache/yum)下的软件包
yum clean headers 清除缓存目录(/var/cache/yum)下的 headers
yum clean oldheaders 清除缓存目录(/var/cache/yum)下旧的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) //清除缓存目录下的软件包及旧的headers
可以修改配置文件 /etc/yum.conf 选择安装源。更多详细的选项和命令:man yum
使用 yum 安装、卸载软件时有个前提是 yum 安装的软件包都是 rpm 格式的。yum会查询数据库,有无这一软件包,如果有,则检查其依赖冲突关系,如果没有依赖冲突,那么最好,下载安装;
如果有,则会给出提示,询问是否要同时安装依赖,或删除冲突的包,你可以自己作出判断
删除同安装一样,yum 也会查询数据库,给出解决依赖关系的提示。
配置 yum 源
yum 源分为:
- 本地yum源
- 网络yum源
教你分分钟搞定Linux下yum源配置:https://zhuanlan.zhihu.com/p/71906253
Centos7 配置 yum 源:https://blog.csdn.net/qq_46162321/article/details/115006096
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)