day1 软件包管理及shell命令

1.Linux的发展

  1. Unix的起源

  1. 1969年,由kenthompson在AT&T贝尔实验室实现的。使用的是汇编语言。

  1. 1970年,KenThompson和DennisRitchie是使用C语言对整个系统进行了再加工和编写,是的Unix能够很容易的移植到其他硬件的计算机上。

  1. Unix家庭树 :1970年---1980---1990---2000--->

  1. 什么是Linux?

  1. GNU&GPL

GNU = GNU is Not Unix

由Richard Stallman在1984创建

最初的软件:gcc、make、glibc

GPL = General Public License

http://www.gnu.org/copyleft/copyleft.html

http://www.gnu.org/licenses/gplfaq.html

  1. Linux是一种操作系统

1991年,芬兰赫尔辛基大学的学生Linux Torvals为了能在家里的PC机上使用与学校一样的操作系统,开始编写了类UNIX.

1991.8.25,Linux就在comp.os.minix新闻组中首次发布了一个Linux内核的公共版本

  1. 各种Linux发行版本

  1. 更为流行的Linux版本

Solaris 、IBM AIX、Red Hat、Fedora Core、SUSE、Debian、Mac OS X、Ubuntu、FreeBSD、OpenBSD、NetBSD、Yellow Dog linux....

  1. 脱颖而出的Ubuntu

  1. Ubuntu 发行版本代号

  1. Linux体系结构

4.1 Linux操作系统的组件
  1. Linux内核

  1. Shell

  1. 文件系统

  1. 实用程序

命令、程序或shell脚本

shell

↓ 用户空间

↓ 内核空间

  1. 系统调用(system calls)

文件系统 I/O 内存管理 进程调度 中断异常处理

Cache

4.2 Linux内核版本

2001年版本是2.4

2012年版本是3.3

4.3命令终端

(1)选择命令终端窗口

目前,在桌面环境下的命令终端仿真器程序有很多,他们各有特色,都拥有各自的用户群。目前流行的终端窗口有:

Xterm、Gnome-terminal、Konsole、Rxvt等

(2)Ubuntu Linux默认安装的命令终端有Gnome-terminal、Xterm,其他的命令终端都需要另行安装

(3)Gnome-terminal是GNOME默认的命令终端。比Xterm具有更多、更强的功能,提供了剪切、粘贴、多标签显示,以及

设置终端配置文件等功能,中文支持和用户界面也很友好。用户可以使用窗口菜单,或快捷键完成操作。

(4)快捷操作

Ctrl+Alt+T 打开一个终端

Ctrl+Alt+T 在当前路径下打开一个终端

Ctrl+Shift+T 打开一个标签

(5)命令行设置

Edit ---> Profiles ---> Edit


2.软件包管理

【1】流行的两种软件包管理机制

(1)Debian Linux首先提出“软件包”的管理机制---Deb软件包

将应用程序的二进制文件、配置文件、man/info帮助页面等文件合并打包在一个文件中,用户使用软件包管理器直接操作软件包,完成获取、安装、卸载、查询等操作。

(2)Redhat Linux基于这个理念推出了自己的软件包管理机制---Rpm软件包

(3)随着Linux操作系统规模不断扩大,系统中软件包间复杂的依赖关系,导致Linux用户麻烦不断

(4)Debian Linux开发出了APT软件包管理器。

  1. 检查和修复软件包依赖关系

  1. 利用Internet网络帮助用户主动获取软件包

(5)APT工具再次促进了Deb软件包更为广泛地使用,成为Debian Linux的一个无法替代的亮点。

【2】软件包的类型

(1)Ubuntu有两种类型的软件包:二进制软件包(deb)和源码包(deb-src)

  1. 二进制软件包(Binary Packages):它包含可执行文件、库文件、配置文件、man/info页面、版权声明和其它文档。

  1. 源码包(Source Packages):包含软件源代码、版本修改说明、构建指令及编译工具等。

先由tar工具归档为.tar.gz文件,然后再打包成.dsc文件。

(2)在用户不确定一个软件包类型时,可以使用file命令查看文件类型。

【3】软件包的命名

软件包的命名遵循以下约定:

Filename_Version-Reversion_Architecture.deb

软件包名称 Filename

软件版本 Version

修订版本 Reversion

体系架构A rchitecture

【4】软件包管理工具分类

(1)根据用户交互方式的不同,可以将常见的软件包管理工具分为三类:

类 别

常见工具举例

描述

命令行

dpkg-deb、dpkg、apt

在命令行模式下完成软件包管理任务。为完成软件包的获取、查询、软件包依赖性检查、安装、卸载等任务需要使用各自不同的命令

文本窗口界面

dselect、aptitude、tasksel

在文本窗口模式中,使用窗口和菜单可以完成软件包管理任务

图形界面

synaptic

在X-Window图形桌面环境中运行,具有更 好的交互性、可读性、易用性等特点

【5】dpkg相关命令

(前面加sudo授权权限)

  1. dpkg -i <package> 安装一个在本地文件系统上存在的Debian软件包

  1. dpgk -r <package> 移除一个已经安装的软件包

  1. dpkg -P <package> 移除已安装软件包及配置文件

  1. dpkg -L <package> 列出安装的软件包清单

  1. dpkg -s <package> 显出软件包的安装状态

【6】APT工作原理

(1)Ubuntu采用集中式的软件仓库机制,将各式各样的软件包分门别类地存在软件仓库中,进行有效地组织和管理。

然后将软件仓库置于许许多多的镜像服务器中,并保持基本一致,因此,对于用户,这些镜像服务器就是他们的软件源(reposity)

(2)在Ubuntu系统中,使用软件源配置文件/etc/apt/sources.list列出最适合访问的镜像站点地址。

(3)软件源配置文件只是告诉Ubuntu系统可以访问的镜像站点地址。但那些镜像站点都拥有什么软件资源并不清楚。

若是每安装一个软件包,就在服务器上寻找一边,效率是很低的。因而就有必要为这些软件资源列出个清单(建立索引年文件),

以便本地主机查询,这就是APT软件包管理器的工作原理。

(4)/etc/apt/sources.list。本质就是一个普通的文本文件,就可以在超级管理员授权下,使用任何文本编辑器进行编辑。在该文件中,

添加的软件源镜像站点称为一个配置项,并遵循以下格式:

DebType AddressType://Hostaddress/Ubuntu Distribution Component1 Component2......

deb http://cn.archive.ubuntu.com/ubuntu/ feisty main restricted universe multiverse

(5) 根据软件包的开发组织对该软件的支持程度,以及遵从的开源程度,划分为如下四类:

1)核心(Main):官方维护的开源软件,是由Ubuntu官方完全支持的软件,包括大多数流行的、稳定的开源软件,是Ubuntu默认安装的基本软件包;

2)公共(Universe):社区维护的开源软件,是由Ubuntu社区的计算机爱好者维护的软件。这些软件包没有安全升级的保障。

用户在使用时,需要考虑这些软件包存在的不稳定性;

3)受限(Restricted):官方维护的非开源软件,是专供特殊用途,而且没有自由软件版权,不能直接修改软件,但依然被Ubuntu团队支持的软件;

4)多元化(Multiverse):非Ubuntu官方维护的非开源软件,用户的使用这些软件包时,需要特别注意版权问题。

(6)刷新软件源

1)修改了配置文件---/etc/apt/source.list,目的只是告知软件源镜像站点的地址。但那些所指向的镜像站点所具有的软件资源并不清楚,

需要将这些资源列个清单,以便本机主机知晓可以申请哪些资源。

2)使用“apt-get update”命令会扫描每一个软件源服务器,并为该服务器所具有软件包资源建立索引文件,存放在本地的/var/lib/apt/lists目录中。

【7】软件管理相关工作

  1. 管理软件包

1)在Ubuntu Linux中,通常使用apt-get命令管理软件包,只需告知软件包名字,就可以自动完成软件包的获取、安装、编译和卸载,以及检查软件包依赖关系。

2)apt-get命令提供了一个软件包管理额命令行平台。在这个平台上使用更丰富的子命令,完成具体的管理任务。

apt-get subcommands [-d|-f|-m|-q|--purge|--reinstall|-b|-s|-y|-u|-h|-v] pkg

  1. 修复软件包依赖关系

1)如果由于故障而中断软件安装过程,可能会造成关联的软件包只有部分安装。之后,用户就会发现该软件既不能重装又不能删除。

2)作为组合命令,下面前者用于检查软件包依赖关系,后者用于修复依赖关系。

“apt-get check”--“apt-get -f install”

3) 在处理依赖关系上,apt-get会自动下载并安装具有依赖关系(depends)的软件包,但不会处理与安装软件包存在推荐(recommends)和建议(suggests关系的软件包。

  1. 更新软件包

1)在Ubuntu Linux中,只需使用命令“apt-get upgrade”就可以轻松地将系统中的所有软件包一次性升级到最新版本

  1. 安装软件包

1)在准备好软件源并连通网络后,用户只需告知安装软件的名称,“apt-get install”命令就可以轻松完成整个安装过程,而无需考虑软件包的版本、优先级、依赖关系等

2)使用“apt-get install”下载软件包大体分为四步:

STEP1: 扫描本地存放的软件包更新列表(有apt-get update命令刷新更新列表),找到最新版本的软件包

STEP2: 进行软件包依赖关系检查,找到支持该软件正常运行的所有软件包;

STEP3: 从软件源所指的镜像站点中,下载相关软件包;

STEP4: 解压软件包,并自动完成应用程序的安装和配置。

  1. 重新安装软件包

当用户不小心损坏了已经安装的软件包,而需要修复。或者,希望重新安装软件包中某些文件的最新版本,可以重新安装软件包

  1. 卸载软件包

1)不完全卸载

“apt-get remove”会关注那些与被删除的软件包相关的其它软件包,删除一个软件包时,将会连带删除与该软件包有依赖关系的软件包。

2)完全卸载

“apt-get --purge remove”命令在卸载软件包文件的同时,还删除该软件包所使的配置文件。

  1. 清理软件包缓冲区

1)如果用户认为软件包缓冲区中的文件没有任何价值了,有必要删除全部下载的软件包。可以使用“apt-get clean”清理整个软件包缓冲区,除了lock锁文件和partial目录。

缓冲目录: /var/cache/apt/archives

清理命令: sudo apt-get clean

2)按照依赖关系清理缓冲区中多余的软件包

如果用户希望缓冲区中只保留最新版本的软件包,多余版本全部清楚,可以使用“apt-get sutoclean”命令。

  1. 查询软件包信息

1) 使用apt-cache命令完成查询软件源和软件包的相关信息。

apt-cache subcommands [-p|-s|-q|-i|-c|-h] pkg

2) 使用“apt-cache show”命令获取指定软件包的详细信息,包括软件包安装状态、优先级、适用架构、版本、存在依赖关系的软件包,以及功能描述。该命令可以同时显现多个软件包的详细信息。

  1. 获取软件包安装状态

1)使用“apt-cache policy”可以获取软件包当前的安装状态

2)如果用户仅想了解某个软件包依赖于哪些软件包,可以使用“apt-cache depends”命令

3)如果用户仅想了解某个软件包被哪些软件包所依赖,可以使用“apt-cache rdepends”命令。


3.shell中的特殊字符

【1】shell中的通配符

(1)通配符

当需要用命令处理一组文件,例如file.txt、file2.txt、file3.txt....,用户不必意义输入文件名,

可以使用shell通配符。shell命令的通配符含义如下表

通配符

含义

实例

*

匹配任意长度的字符串

用file_*.txt,匹配file_wang.txt、file_lee.txt、file3_liu.txt

匹配一个长度的字符

用file_?.txt,匹配file_1.txt、file_2.txt、file_3.txt

[...]

匹配其中指定的一个字符

用file_[otr].txt,匹配file_o.txt、file_r.txt和file_t。txt

[-]

匹配指定的一个字符范围

用file_[a-z].txt,匹配file_a.txt、file_b.txt,直到file_z.txt

[^...]

除了其中指定的字符均可匹配

用file_[^otr].txt,除了file_o.txt、file_t.txt、file_r.txt的其它文件

【2】shell中的管道

(1)管道

管道可以把一系列命令链接起来,意味着第一个命令的输出将作为第二个命令的输入,通过管道传递给第二个命令,

第二个命令的输出又将作为第三个命令的输入,以此类推。就像通过使用“|”符连成一个管道。

ls /use/bin | wc -w

【3】输入输出重定向

(1)输入/输出重定向是改变shell命令或程序默认的标准输入/输出目标,重新定向到新的目标。

(2)linux中默认的标准输入定义为键盘,标准输出定义为终端窗口。

(3)用户可以为当前操作改变输入或输出,迫使某个特定命令的输入或输出来源为外部文件。 重定向符 含义实例

  • > file将file文件重定向为输出源,新建模式 ls /usr > Lsoutput.txt,将ls /usr的执行结果,

  • 写到Lsoutput.txt文件中,若有同名文件将被删除

  • >> file将file文件重定向为输出源,追加模式ls /usr >> Lsoutput.txt,将ls /usr的执行结果,追加到Lsoutput.txt文件已有内容后

  • < file将file文件重定向为输入源wc < file1,将file1中的内容作为输入传给wc命令

  • 2> 或 &>将由命令产生的错误信息输入到文件中ls noexistingfile.txt 2> err.log,使用ls命令, 查看一个不存在的文件时,将系统错误提示保存在err.log文件中

(4)cat命令功能为在标准输出上显示文件。下面通过一个实例,可以更好地理解重定向的功能。

1)cat #使用标准输入/出设备

have a good day! #用户使用标准输入设备——键盘,键入字符串,并按Enter键

have a good day! #系统在标准输出——显示器上,显示用户刚刚输入的字符串

2)cat > file1.txt #输出重定向,将输出定向到文件file1.txt

have a good day! #用户使用标准输入设备——键盘,键入字符串,并按Enter键

#用户输入的字符串被保存在file1.txt文件中

3)cat < file1.txt #输入重定向,将cat命令的输入指定为file1.txt文件

have a good day! #系统在标准输出显示器上,显示cat命令从文件中读出的字符串

【4】命令置换

(1)命令替换是将一个命令的输出作为另一个命令的参数。命令格式如下所示。

1)其中,命令command2的输出将作为命令command1的参数。需要注意,命令置换的单引号为ESC键下方的“`”键

command1 `command2`

2)pwd命令用于显示当前目录的绝对路径。在上面的命令行中,使用命令置换符,将pwd的运行结果作为ls命令的参数。最终,命令执行结果是显示当前目录的文件内容。

linux@ubuntu:~$ ls `pwd`

Desktop Examples historycommandlist mywork

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值