aptitude

Debian Linux系统中软件包管理工具

aptitude命令 与apt-get命令一样,都是Debian Linux及其衍生系统中功能极其强大的包管理工具。与apt-get不同的是,aptitude在处理依赖问题上更佳一些。举例来说,aptitude在删除一个包时,会同时删除本身所依赖的包。这样,系统中不会残留无用的包,整个系统更为干净。它通过文本操作菜单和命令两种方式管理软件包。

语法

1
aptitude(选项)(参数)

选项

1
2
3
4
5
6
-h:显示帮助信息;
-d:仅下载软件包,不执行安装操作;
-P:每一步操作都要求确认;
-y:所有问题都回答“yes”;
-v:显示附加信息;
-u:启动时下载新的软件包列表。

参数

操作命令:用户管理软件包的操作命令。

实例

以下是我总结的一些常用aptitude命令,仅供参考:

1
2
3
4
5
6
7
8
9
10
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 # 仅删除过期的包文件

当然,你也可以在文本界面模式中使用 aptitude。

accept

指示打印系统接受发往指定目标打印机的打印任务

accept命令 属于CUPS套件,用于指示打印系统接受发往指定目标打印机的打印任务。

语法

1
accept(选项)(参数)

选项

1
2
3
-E:当连接到服务器时强制加密;
-U:指定连接服务器时使用的用户名;
-h:指定连接服务器名和端口号。

参数

目标:指定目标打印机。

access - 确定文件是否可以存取访问

如果 file 可以在特定模式下存取访问,那么成功退出. mode 为 rwx 中的一个或多个字符, 这里的 r 表示可读, w 表示可写,而 x 表示可执行.
access 和 test 之间的区别在于 后者查看权限位,而前者使用 access(2) 系统调用进行检查.当文件系统以只读方式被挂载时,两者就有区别了.

1
access -mode file

选项

access 接受以下附加的选项:

--help

打印帮助信息并退出.

--version

打印版本信息并退出.

bind

显示或设置键盘按键与其相关的功能

bind命令 用于显示和设置命令行的键盘序列绑定功能。通过这一命令,可以提高命令行中操作效率。您可以利用bind命令了解有哪些按键组合与其功能,也可以自行指定要用哪些按键组合。

语法

1
bind(选项)

选项

1
2
3
4
5
6
-d:显示按键配置的内容;
-f<按键配置文件>:载入指定的按键配置文件;
-l:列出所有的功能;
-m<按键配置>:指定按键配置;
-q<功能>:显示指定功能的按键;
-v:列出目前的按键配置与其功能。

实例

1
bind -x '"\C-l":ls -l'    #直接按 CTRL+L 就列出目录

其中keyseq可以使用showkey -a命令来获取:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@localhost ~]# showkey -a

Press any keys - Ctrl-D will terminate this program

^[[A 27 0033 0x1b 上
91 0133 0x5b
65 0101 0x41
^[[B 27 0033 0x1b 下
91 0133 0x5b
66 0102 0x42
^[[D 27 0033 0x1b 左
91 0133 0x5b
68 0104 0x44
^[[C 27 0033 0x1b 右
91 0133 0x5b
67 0103 0x43
32 0040 0x20
^M 13 0015 0x0d 字母M
^C 3 0003 0x03 Ctrl-C
^D 4 0004 0x04 Ctrl-D 退出

break

结束for,while或until循环。

概要

1
break [n]

主要用途

  • 结束for,while或until循环,可指定退出几层循环。

参数

n(可选):大于等于1的整数,用于指定退出几层循环。

返回值

返回成功除非n小于1。

例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# break的可选参数n缺省值为1。
# 从外层for循环继续执行。
for((i=3;i>0;i--)); do
for((j=3;j>0;j--)); do
if((j==2)); then
# 换成break 1时结果一样
break
fi
printf "%s %s\n" ${i} ${j}
done
done
# 输出结果
3 3
2 3
1 3
1
2
3
4
5
6
7
8
9
10
11
12
# 当n为2时:
# 退出两层循环,结束。
for((i=3;i>0;i--)); do
for((j=3;j>0;j--)); do
if((j==2)); then
break 2
fi
printf "%s %s\n" ${i} ${j}
done
done
# 输出结果
3 3

注意

  1. 该命令是bash内建命令,相关的帮助信息请查看help命令。

chmod

用来变更文件或目录的权限

概要

1
2
3
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...

主要用途

  • 通过符号组合的方式更改目标文件或目录的权限。
  • 通过八进制数的方式更改目标文件或目录的权限。
  • 通过参考文件的权限来更改目标文件或目录的权限。

参数

mode:八进制数或符号组合。

file:指定要更改权限的一到多个文件。

选项

1
2
3
4
5
6
7
8
9
-c, --changes:当文件的权限更改时输出操作信息。
--no-preserve-root:不将'/'特殊化处理,默认选项。
--preserve-root:不能在根目录下递归操作。
-f, --silent, --quiet:抑制多数错误消息的输出。
-v, --verbose:无论文件是否更改了权限,一律输出操作信息。
--reference=RFILE:使用参考文件或参考目录RFILE的权限来设置目标文件或目录的权限。
-R, --recursive:对目录以及目录下的文件递归执行更改权限操作。
--help:显示帮助信息并退出。
--version:显示版本信息并退出。

返回值

返回状态为成功除非给出了非法选项或非法参数。

例子

参考man chmod文档的DESCRIPTION段落得知:

  • u符号代表当前用户。
  • g符号代表和当前用户在同一个组的用户,以下简称组用户。
  • o符号代表其他用户。
  • a符号代表所有用户。
  • r符号代表读权限以及八进制数4
  • w符号代表写权限以及八进制数2
  • x符号代表执行权限以及八进制数1
  • X符号代表如果目标文件是可执行文件或目录,可给其设置可执行权限。
  • s符号代表设置权限suid和sgid,使用权限组合u+s设定文件的用户的ID位,g+s设置组用户ID位。
  • t符号代表只有目录或文件的所有者才可以删除目录下的文件。
  • +符号代表添加目标用户相应的权限。
  • -符号代表删除目标用户相应的权限。
  • =符号代表添加目标用户相应的权限,删除未提到的权限。
1
2
3
4
5
6
7
8
9
10
11
linux文件的用户权限说明:

# 查看当前目录(包含隐藏文件)的长格式。
ls -la
-rw-r--r-- 1 user staff 651 Oct 12 12:53 .gitmodules

# 第1位如果是d则代表目录,是-则代表普通文件。
# 更多详情请参阅info coreutils 'ls invocation'(ls命令的info文档)的'-l'选项部分。
# 第2到4位代表当前用户的权限。
# 第5到7位代表组用户的权限。
# 第8到10位代表其他用户的权限。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 添加组用户的写权限。
chmod g+w ./test.log
# 删除其他用户的所有权限。
chmod o= ./test.log
# 使得所有用户都没有写权限。
chmod a-w ./test.log
# 当前用户具有所有权限,组用户有读写权限,其他用户只有读权限。
chmod u=rwx, g=rw, o=r ./test.log
# 等价的八进制数表示:
chmod 754 ./test.log
# 将目录以及目录下的文件都设置为所有用户拥有读写权限。
# 注意,使用'-R'选项一定要保留当前用户的执行和读取权限,否则会报错!
chmod -R a=rw ./testdir/
# 根据其他文件的权限设置文件权限。
chmod --reference=./1.log ./test.log

注意

  1. 该命令是GNU coreutils包中的命令,相关的帮助信息请查看man chmodinfo coreutils 'chmod invocation'

  2. 符号连接的权限无法变更,如果用户对符号连接修改权限,其改变会作用在被连接的原始文件。

  3. 使用-R选项一定要保留当前用户的执行和读取权限,否则会报错!

chown

用来变更文件或目录的拥有者或所属群组

chown命令 改变某个文件或目录的所有者和所属的组,该命令可以向某个用户授权,使该用户变成指定文件的所有者或者改变文件所属的组。用户可以是用户或者是用户D,用户组可以是组名或组id。文件名可以使由空格分开的文件列表,在文件名中可以包含通配符。

只有文件主和超级用户才可以便用该命令。

语法

1
chown(选项)(参数)

选项

1
2
3
4
5
6
7
8
9
-c或——changes:效果类似“-v”参数,但仅回报更改的部分;
-f或--quite或——silent:不显示错误信息;
-h或--no-dereference:只对符号连接的文件作修改,而不更改其他任何相关文件;
-R或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理;
-v或——version:显示指令执行过程;
--dereference:效果和“-h”参数相同;
--help:在线帮助;
--reference=<参考文件或目录>:把指定文件或目录的拥有者与所属群组全部设成和参考文件或目录的拥有者与所属群组相同;
--version:显示版本信息。

参数

用户:组:指定所有者和所属工作组。当省略“:组”,仅改变文件所有者;
文件:指定要改变所有者和工作组的文件列表。支持多个文件和目标,支持shell通配符。

实例

将目录/usr/meng及其下面的所有文件、子目录的文件主改成 liu:

1
chown -R liu /usr/meng

chroot

把根目录换成指定的目的目录

chroot命令 用来在指定的根目录下运行指令。chroot,即 change root directory (更改 root 目录)。在 linux 系统中,系统默认的目录结构都是以/,即是以根 (root) 开始的。而在使用 chroot 之后,系统的目录结构将以指定的位置作为/位置。

在经过 chroot 命令之后,系统读取到的目录和文件将不在是旧系统根下的而是新根下(即被指定的新的位置)的目录结构和文件,因此它带来的好处大致有以下3个:

增加了系统的安全性,限制了用户的权力:

在经过 chroot 之后,在新根下将访问不到旧系统的根目录结构和文件,这样就增强了系统的安全性。这个一般是在登录 (login) 前使用 chroot,以此达到用户不能访问一些特定的文件。

建立一个与原系统隔离的系统目录结构,方便用户的开发:

使用 chroot 后,系统读取的是新根下的目录和文件,这是一个与原系统根下文件不相关的目录结构。在这个新的环境中,可以用来测试软件的静态编译以及一些与系统不相关的独立开发。

切换系统的根目录位置,引导 Linux 系统启动以及急救系统等:

chroot 的作用就是切换系统的根位置,而这个作用最为明显的是在系统初始引导磁盘的处理过程中使用,从初始 RAM 磁盘 (initrd) 切换系统的根位置并执行真正的 init。另外,当系统出现一些问题时,我们也可以使用 chroot 来切换到一个临时的系统。

语法

1
chroot(选项)(参数)

选项

1
2
--help:在线帮助;
--version:显示版本信息。

参数

  • 目录:指定新的根目录;
  • 指令:指定要执行的指令。

实例

将target作为根目录(运行其中的/bin/sh):

1
chroot target /bin/sh

这里,target是busybox安装好的路径,类似一个文件系统包含了许多工具。这样,将会进入一个shell界面,这个shell以target为根。运行exit退出该shell又返回原来的本机环境了,也可以使用Ctrl+D。

注意:

  • 根用户才行
  • 如果直接chroot target默认寻找target的/bin/bash.这会以target作为根目录

将target作为根目录(运行其中的/bin/ls):

1
chroot target /bin/ls

这里,target是busybox安装好的路径,类似一个文件系统包含了许多工具。这样运行的是target中的ls(不是本机的/bin/ls),然后返回立即本机的目录环境。

注意,自己在本地编译一个程序生成a.out之后,拷进target/bin/中这样运行却不行,因为它包含了动态连接的库,需要用ldd查看a.out需要那些动态库,将这些库拷贝到新根的对应路径下才能执行。

用chroot运行自己编译的一个程序:

准备chroot的根目录:

1
mkdir newRoot

编译自己的程序:

1
gcc main.c

这里main.c生成a.out,功能是输出hello。

查看程序需要的库:

1
ldd a.out

输入之后,输出如下:

1
2
3
linux-gate.so.1 = &gt;  (0xb8034000)
libc.so.6 = &gt; /lib/tls/i686/cmov/libc.so.6 (0xb7eab000)
/lib/ld-linux.so.2 (0xb801a000)

将程序需要的库和程序拷贝到新根目录下:

1
2
3
4
cp a.out newRoot
mkdir newRoot/lib
cp /lib/tls/i686/cmov/libc.so.6 newRoot/lib
cp /lib/ld-linux.so.2 newRoot/lib

这里newRoot内容将如下:

1
a.out lib/

使用chroot运行自己的程序:

1
2
su
chroot newRoot /a.out

这样就能够正确运行a.out了,因为a.out使用到了其他的动态连接库,所以需要将库拷贝到newRoot中,如果没有其他库那么直接拷贝a.out就能运行。例如静态编译后的busybox,其安装目录中的/bin/busybox就没有依赖其他库。

exit

退出当前的shell。

概要

1
exit [n]

主要用途

  • 执行exit可使shell以指定的状态值退出。若不设置参数,则以最后一条命令的返回值作为exit的返回值退出。

参数

n(可选):指定的shell返回值(整数)。

返回值

返回值为你指定的参数n的值,如果你指定的参数大于255或小于0,那么会通过加或减256的方式使得返回值总是处于0到255之间。

例子

退出当前shell:

1
2
[root@localhost ~]# exit
logout

也可以使用ctrl+d退出当前终端,下面列出了打开或关闭该功能的方法:

1
2
3
4
# 打开ctrl+d退出终端
set -o ignoreeof
# 关闭ctrl+d退出终端
set +o ignoreeof

在脚本中,进入脚本所在目录,否则退出:

1
cd $(dirname $0) || exit 1

在脚本中,判断参数数量,不匹配就打印使用方式,退出:

1
2
3
4
if [ "$#" -ne "2" ]; then
echo "usage: $0 <area> <hours>"
exit 2
fi

在脚本中,退出时删除临时文件:

1
trap "rm -f tmpfile; echo Bye." EXIT

检查上一命令的退出码:

1
2
3
4
5
./mycommand.sh
EXCODE=$?
if [ "$EXCODE" == "0" ]; then
echo "O.K"
fi

注意

  1. 该命令是bash内建命令,相关的帮助信息请查看help命令。

fdisk - Linux 分区表操作工具软件, 查看磁盘使用情况和磁盘分区

fdisk 命令 用于观察硬盘实体使用情况,也可对硬盘分区。它采用传统的问答式界面,而非类似 DOS fdisk 的 cfdisk 互动式操作界面,因此在使用上较为不便,但功能却丝毫不打折扣。

1
2
3
4
fdisk [-u]设备名
fdisk -l [-u] [设备名 ...]
fdisk -s分区 ...
fdisk -v

描述

硬盘可以被分成一个或多个逻辑磁盘,称为分区。 这些分区信息都存放在硬盘 0 扇区的 分区表中。

在 BSD 风格中,分区被称为“磁盘片”和“磁盘标签”

Linux 至少需要一个分区,即用做它的 root 文件系统。 Linux 可以使用交换文件和/或交换分区,交换分区更有效。因此,通常用户会创建第二个 Linux 分区供交换分区使用。在 Intel 兼容的硬件上,启动系统的 BIOS 往往只能访问 1024 柱面之前的硬盘。因此,使用大硬盘的用户通常创建第三个只有几兆大小的小分区,通常用来装配在 /boot ,用来存放内核映象和一些其它启动时需要的附属文件,所以应确保此分区必须是在 BIOS 可访问的部分。出于安全方面的考虑、管理方面的原因、备份的需要或为了某些测试,也可以将一个硬盘分成更多的分区使用。

fdisk (以第一种形式调用)是一个以菜单问答形式出现的用来创建和修改分区的程序。它可以辩认 DOS 类型的分区表和 BSD 或 SUN 类型的磁盘标签。

设备 通常是下列之一:

1
2
3
4
/dev/hda
/dev/hdb
/dev/sda
/dev/sdb

(/dev/hd[a-h] 指 IDE 硬盘,/dev/sd[a-p] 指 SCSI 硬盘, /dev/ed[a-d] 指 ESDI 硬盘,/dev/xd[ab] 指 XT 硬盘)。设备名指整个硬盘设备。

分区 是在 设备名 后跟一个分区号。例如: /dev/hda1 是指系统在第一个 IDE 硬盘上的第一个分区。 IDE 硬盘可以最多创建 63 个分区,SCSI 可以创建 15 个。又见 /usr/src/linux/Documnetation/devices.txt。

一个 BSD/SUN 风格的磁盘标签可以描述 8 个分区,其中第三个应该是“整个磁盘”分区。不要在零柱面使用那些的确使用其第一扇区的分区,(比如交换分区)因为这将损坏磁盘标签。

一个 IRIX/SGI 风格的磁盘标签可以描述 16 个分区,其中第十一个应该是完整“卷标”分区,而第九个应该被标成“卷标头”。卷标头将覆盖分区表,即,它从零块开始并缺省时延伸 5 个柱面。卷标头中余下的空间可以用来存放头部目录记录信息。不要有任何分区与此卷标头重叠。同样,也不要改变它的类形和在其中创建任何文件系统,因为这样做将丢失分区表信息。只有当将 Linux 安装在 IRIX/SGI 机器上或在 Linux 中使用 IRIX/SGI 磁盘时才会使用这种类形的标签。

一个 DOS 风格的分区表可以描述无限的分区。零扇区用来存放 4 个分区(称为主分区)的描述信息。其中可以有一个分区是扩展分区;此扩展分区也就是存储各逻辑分区地方,是一个在组成链表的扇区里存放的描述符,每个描述符都是一个对应分区的开头.四个主分区,不管是否存在,都用数字 1-4 编号,而逻辑分区以 5 开始。

在 DOS 风格的分区表中,开始地址偏移量和每个分区的大小是以两种不同的方式来存放的:以扇区数的绝对值来描述(占 32 位)和以柱面、磁头、扇区三个一组的形式(占 10+8+6 个位)来描述。前一种描述很好 - 如果每扇区 512 个字节的情况,这种方式可描述到 2TB 的大小。后一种方式有两个不同的问题。第一个是这种 C/H/S 方式必须是在磁头数和每磁道扇区数都已知的情况下才能使用。第二个是就算我们已经知道了这些数字,而只用 24 位来描述这些信息也是不够的。 DOS 只使用这种 C/H/S 的方式,Windows 则两个都用,Linux 则不使用 C/H/S 的方式。

如果可能, fdisk 会自动获得磁盘的几何结构。这不一定是磁盘的物理结构(当然,现在的磁盘没有真正的物理结构,同样也不能以简单的柱面/磁头/扇区的形式来描述),而是 MS-DOS 用来供分区表使用的几何结构。

通常,缺省时这些都将工作得很好,而且,如果磁盘上只有一个 Linux 操作系统时也不会有任何问题。然而,如果磁盘上还有其它操作系统,那么,用其它操作系统的 fdisk 来生成其自身使用的至少一个分区是比较好的选择。当 Linux 启动的时侯,它会扫描分区表,并由此推出和其它共存操作系统友好合作所需的(伪)几何结构。

当打印一个分区表时,系统会对分区表进行一次一至性检查。这些检查会验证磁盘几何结构和物理地址的开始、结束、指向和标识,同时在柱面的边界检查分区的开始和结束。(除了第一个分区)

一些版本的 MS-DOS 在创建第一个分区时并不是从柱面边界的开始处,而是从第一柱面的第 2 扇区处开始。从柱面 1 开始的分区不能直接从柱面边界开始,但这未必会造成困难,除非你在你的机器上安装了 OS/2 操作系统。

当执行了对分区表的更新后退出时,程序会运行一次 sync() 和 BLKRRPART ioct1() (从磁盘上重读分区表信息)。以前,在使用完 fdisk 后需要重启系统。我认为现在不需要这样了 – 太快的重起可能导致未写入磁盘的数据丢失。注意,内核和磁盘硬件都可能缓存数据。

DOS6.x WARNING
DOS6.x 的 FORMAT 命令会在分区的第一扇区的数据区查找一些信息,并认为这些信息比分区表中的信息更可靠。 DOS 的 FORMAT 命令认为 DOS 的 FDISK 命令会在分区变化时自动清除分区数据区的前 512 字节区域。 DOS 的 FORMAT 将查看这些额外的信息,甚至在给出了 /U 这个参数后也是如此。我们认为这是 DOS FORMAT 和 DOS FDISK 的臭虫。

如果你使用 cfdisk 或 fdisk 更改了 DOS 分区表的条目,你必须同时使用 dd 命令将该分区的前 512 个字节清零,之后,你才能使用 DOS 的 FORMAT 命令对这个分区进行格式化。例如:如果你使用 cfdisk 去创建一个 DOS 分区表项目,即分区 /dev/hda1,然后(在退出 fdisk 或 cfdisk 后重启 Linux 使分区表合法化)你就有必要使用如下命令 “dd if=/dev/ero of=/dev/hda1 bs=512 count=1” 来将分区的前 512 个字节清零。

当你使用 dd 命令时请 务必万分小心 , 由于任何小的打印错误都将造成磁盘数据的失效。

最好你还是使用由操作系统指定的分区工具软件。例如,当你创建 DOS 分区时应使用 DOS FDISK,而创建 Linux 分区时则使用 Linux 的 fdisk 或 cfdisk。

选项 & 参数

-b sectorsize

扇区大小(512、1024、2048 或 4096)

Specify the sector size of the disk. Valid values are 512, 1024, 2048 or 4096. (Recent kernels know the sector size. Use this only on old kernels or to override the kernel’s ideas.) Since util-linux-ng 2.17 fdisk differentiates between logical and physical sector size. This option changes both sector sizes to sectorsize.

-h

打印此帮助文本

-c

兼容模式:“dos”或“nondos”(默认)

Switch off DOS-compatible mode. (Recommended)

-C cyls
指定柱面数
Specify the number of cylinders of the disk. I have no idea why anybody would want to do so.

-H heads
指定磁头数
Specify the number of heads of the disk. (Not the physical number, of course, but the number used for partition tables.) Reasonable values are 255 and 16.

-S sects

指定每个磁道的扇区数

Specify the number of sectors per track of the disk. (Not the physical number, of course, but the number used for partition tables.) A reasonable value is 63.

-v

打印 fdisk 的版本信息并退出.

-l

列出指定设备的分区表信息并退出。如果没有给出设备,那么使用那些在 /proc/partitions (如果存在)提到的.

-u

以扇区数而不是以柱面数的形式显示分区表中各分区的信息, 显示单位:“cylinders”(柱面)或“sectors”(扇区,默认)

-s partition
将分区的 大小 (单位为块)信息输出到标准输出
The size of the partition (in blocks) is printed on the standard output.

扩展阅读

yum

yum 命令 (Yellowdog Updater Modified) 是在 Fedora 和 RedHat 以及 SUSE 中基于rpm的软件包管理器,它可以使系统管理人员交互和自动化地更细与管理 RPM 软件包,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。

yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

语法

1
yum(选项)(参数)

选项

1
2
3
4
5
6
7
8
9
-h:显示帮助信息;
-y:对所有的提问都回答“yes”;
-c:指定配置文件;
-q:安静模式;
-v:详细模式;
-d:设置调试等级(0-10);
-e:设置错误等级(0-10);
-R:设置yum处理一个命令的最大等待时间;
-C:完全从缓存中运行,而不去下载或者更新任何头文件。

参数

1
2
3
4
5
6
7
8
9
10
11
12
13
install:安装rpm软件包;
update:更新rpm软件包;
check-update:检查是否有可用的更新rpm软件包;
remove:删除指定的rpm软件包;
list:显示软件包的信息;
search:检查软件包的信息;
info:显示指定的rpm软件包的描述信息和概要信息;
clean:清理yum过期的缓存;
shell:进入yum的shell提示符;
resolvedep:显示rpm软件包的依赖关系;
localinstall:安装本地的rpm软件包;
localupdate:显示本地rpm软件包进行更新;
deplist:显示rpm软件包的所有依赖关系。

实例

部分常用的命令包括:

  • 自动搜索最快镜像插件:yum install yum-fastestmirror
  • 安装 yum 图形窗口插件:yum install yumex
  • 查看可能批量安装的列表:yum grouplist

安装

1
2
3
yum install              #全部安装
yum install package1 #安装指定的安装包package1
yum groupinsall group1 #安装程序组group1

更新和升级

1
2
3
4
5
yum update               #全部更新
yum update package1 #更新指定程序包package1
yum check-update #检查可更新的程序
yum upgrade package1 #升级指定程序包package1
yum groupupdate group1 #升级程序组group1

查找和显示

1
2
3
4
5
6
7
8
# 检查 MySQL 是否已安装
yum list installed | grep mysql
yum list installed mysql*

yum info package1 #显示安装包信息package1
yum list #显示所有已经安装和可以安装的程序包
yum list package1 #显示指定程序包安装情况package1
yum groupinfo group1 #显示程序组group1信息yum search string 根据关键字string查找安装包

删除程序

1
2
3
yum remove &#124; erase package1   #删除程序包package1
yum groupremove group1 #删除程序组group1
yum deplist package1 #查看程序package1依赖情况

清除缓存

1
2
3
yum clean packages       #清除缓存目录下的软件包
yum clean headers #清除缓存目录下的 headers
yum clean oldheaders #清除缓存目录下旧的 headers

更多实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# yum
/etc/yum.repos.d/ yum 源配置文件
vi /etc/yum.repos.d/nginx.repo # 举个栗子: nginx yum源
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/6/$basearch/
gpgcheck=0
enabled=1

# yum mirror
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
wget https://mirror.tuna.tsinghua.edu.cn/help/centos/
yum makecache

# 添加中文语言支持
LANG=C # 原始语言
LANG=zh_CN.utf8 # 切换到中文
yum groupinstall "Chinese Support" # 添加中文语言支持

apt-get

Debian Linux发行版中的APT软件包管理工具

apt-get命令 是Debian Linux发行版中的APT软件包管理工具。所有基于Debian的发行都使用这个包管理系统。deb包可以把一个应用的文件包在一起,大体就如同Windows上的安装文件。

语法

1
apt-get(选项)(参数)

选项

1
-c:指定配置文件。

参数

  • 管理指令:对APT软件包的管理操作;
  • 软件包:指定要操纵的软件包。

实例

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

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

我们常用的Ubuntu就是一个基于Debian的发行,我们使用apt-get命令获取这个列表,以下是我整理的常用命令:

在修改/etc/apt/sources.list或者/etc/apt/preferences之后运行该命令。此外您需要定期运行这一命令以确保您的软件包列表是最新的:

1
apt-get update

安装一个新软件包:

1
apt-get install packagename

卸载一个已安装的软件包(保留配置文件):

1
apt-get remove packagename

卸载一个已安装的软件包(删除配置文件):

1
apt-get –purge remove packagename

会把已装或已卸的软件都备份在硬盘上,所以如果需要空间的话,可以让这个命令来删除你已经删掉的软件:

1
apt-get autoclean apt

这个命令会把安装的软件的备份也删除,不过这样不会影响软件的使用的:

1
apt-get clean

更新所有已安装的软件包:

1
apt-get upgrade

将系统升级到新版本:

1
apt-get dist-upgrade

定期运行这个命令来清除那些已经卸载的软件包的.deb文件。通过这种方式,您可以释放大量的磁盘空间。如果您的需求十分迫切,可以使用apt-get clean以释放更多空间。这个命令会将已安装软件包裹的.deb文件一并删除。大多数情况下您不会再用到这些.debs文件,因此如果您为磁盘空间不足 而感到焦头烂额,这个办法也许值得一试:

1
apt-get autoclean

apt-key

管理Debian Linux系统中的软件包密钥

apt-key命令 用于管理Debian Linux系统中的软件包密钥。每个发布的deb包,都是通过密钥认证的,apt-key用来管理密钥。

语法

1
apt-key(参数)

参数

操作指令:APT密钥操作指令。

实例

1
2
3
4
apt-key list          # 列出已保存在系统中key。
apt-key add keyname # 把下载的key添加到本地trusted数据库中。
apt-key del keyname # 从本地trusted数据库删除key。
apt-key update # 更新本地trusted数据库,删除过期没用的key。