程序安装及管理

1. Linux 应用程序基础

 Linux命令与应用程序的关系

1):文件位置

系统命令:一般在/bin和/sbin目录中,或为Shell内部指令

应用程序:通常在/usr/bin和/usr/sbin目录中

2):主要用途

系统命令:完成对系统的基本管理工作,例如IP配置工具

应用程序:完成相对独立的其他辅助任务,例如网页浏览器

3):适用环境

系统命令:一般只在字符操作界面中运行

应用程序:根据实际需要,有些程序可在图形界面中运行

4):运行格式

系统命令:一般包括命令字、命令选项和命令参数

应用程序:通常没有固定的执行格式

 典型应用程序的目录结构

文件类型

保存目录

普通执行程序文件

/usr/bin

服务器执行程序文件和管理程序文件

/usr/sbin

应用程序配置文件

/etc

日志文件

/var/log

应用程序文档文件

/usr/share/doc

应用程序手册页文件

/usr/share/man

2. 常见的软件包封装类型

封装类型

说明

rpm软件包 

扩展名为“.rpm

deb软件包

扩展名为“.deb

源代码软件包

一般为“.tar.gz”、“.tar.bz2”等格式的压缩包包含程序的原始代码

附带安装程序的软件包 

在压缩包内提供install.sh、setup等安装程序或以“.bin”格式的单个执行文件提供

绿色免安装的软件包

在压缩包内提供已编译好的执行程序文件解开压缩包后的文件即可直接使用

软件包封装类型包括rpm包. Deb包. 源代码包. 带安装程序的包。

源代码:程序员写好的初始代码,无法被计算机读取,需要被编译成二进制计算机语言,Linux中的C语言编译器为gcc。

3.RPM 包管理工具

RPM Package Manager

由Red Hat 公司提出,被众多Linux 发行版所采用

建立统一的数据库文件,详细记录软件包安装、卸载等变化信息,能够自动分析软件包依赖关系

RPM包含RPM数据库,RPM软件包文件和RPM命令三个部分

RPM软件包

 软件素材参考:http://rpmfind.net / www.rpw.org

一般命名格式:软件名-软件版本-发布次数.操作系统类型.硬件架构类型.rpm

注意:执行“man rpm”命令可获得关于 rpm 命令的详细帮助信息

4.查询 RPM 软件包信息

1):查询已安装的rpm软件信息

 语法:rpm  -q[子选项]  [软件名]

 用法:结合不同的子选项完成不同查询

-qa:查看系统中已安装的所有RPM软件包列表

-qi:查看指定软件的详细信息(--info)

-ql:查询指定软件包所安装的目录、文件列表(--list)

-qc:仅显示指定软件包安装的配置文件

-qd:仅显示指定软件包安装的文档文件

-qf:查看指定文件或目录由那个软件包所安装(--file)

 

2):查询文件或目录属于哪个RPM 软件

语法:rpm  - qf文件或目录名

3):查询未安装的RPM 包文件

语法:rpm  - qp[子选项]  RPM包文件

用法:结合不同的子选项完成不同查询

-qpi:通过.rpm包文件查看该软件的详细信息

-qpl:查看.rpm安装包内所包含的目录、文件列表

-qpc:查看.rpm安装包内包含的配置文件列表

-qpd:查看.rpm安装包内包含的文档文件列表

注意:使用r pm 命令只能查询通过 RPM方式安装的软件包信息用其他途径安装到系统中的软件包,rpm 命令将无法获取相关信息

3. 安装、升级、卸载 RPM 软件包

安装或升级RPM软件

语法:rpm  [选项]  RPM包文件...

用法:不同选项适用于不同情况

-i:安装一个新的rpm 软件包

-U:升级某个rpm 软件,若原本未装,则进行安装

-F:更新某个rpm 软件,若原本未装,则放弃安装

-h:以“#”号显示安装的进度

-v:显示安装过程中的详细信息

 卸载指定的RPM软件

语法:rpm  -e  软件名

--nodeps:删除软件包,即使有依赖关系的软件包任然安装在系统上

--test:不执行任何动作,只打印输出

5. 维护RPM数据库

linux中保留了当前安装软件的数据库,该数据库位于/var/lin/rpm/目录中。使用file /var/lib/rpm/*命令查看目录内容,可以看到都是二进制形式的散列数据库文件。

查看数字签名

 6.解决软件包依赖关系

安装有依赖关系的多个软件时:被依赖的软件包需要先安装;可同时指定多个.rpm 包文件进行安装

卸载有依赖关系的多个软件时:依赖其他程序的软件包需要先卸载;可同时指定多个软件名进行卸载

忽略依赖关系:结合“--nodeps”选项,但可能导致软件异常

举个栗子:演示vim-common和vim-enhanced软件包的卸载、安装过程,参考步骤如下:

1)首先正常卸载vim-common,应提示被vim-enhanced所依赖而失败

2)因此正常卸载顺序:先卸载vim-enhanced,然后再卸载vim-common

3)然后从光盘中重新安装这两个软件包,首先安装vim-enhanced,应提示需要先安装vim-common

4)因此正常安装顺序:先安装vim-common,然后再安装vim-enhanced,演示时也可以在一条rpm命令中同时指定这两个文件

—— 提醒注意:如果需要同时安装相互依赖的数十个.rpm软件包,可以结合Shell通配符“*”同时指定这些文件作为参数

     执行rpm命令可以完成对rpm软件包的查询. 安装. 升级. 卸载等管理操作。

扩展:RPM相关注意事项

 RPM软件包的先决条件可以运用命令行选项—requires和—provides直接查看

   安装vsftpd的先决条件:命令rpm -q -requires vsftpd

显示软件包显性提供内容:命令rpm -q -provides vsftpd

显示vsftpd的安装脚本:命令rpm -q --scripts vsftpd

按时间顺序显示系统上安装的RPM包:命令rpm -qa –last

解决RPM的些常见问题(访问数据库)

Killall-9 rpm 命令杀死所有当前挂起的rpm进程

将RPM数据库目录(/var/lib/rpm/)中所有以 _db. 开头的文件删除

7.源代码编译概述

1):优点

获得最新的软件版本,及时修复bug;根据用户需要,灵活定制软件功能

2):应用场合举例

安装较新版本的应用程序时;自由软件的最新版本大都以源码的形式最先发布

当前安装的程序无法满足需要时;编译安装可由用户自行修改、定制功能

需要为应用程序添加新的功能时;用户可以重新配置、自由修改源代码,加入新的功能

8.编译安装源代码包

Tarball封包:.tar.gz 和.tar.bz2 格式居多;软件素材参考:http://sourceforge.net

完整性校验

md5sum校验工具;计算MD5校验和,并与官方提供的值相比较,判断是否一致

[root@localhost ~]# md5sum axel-1.0a.tar.gz

2d94c0b36b374834567f1fcec5f89119  (MD5校验和) axel-1.0a.tar.gz

对于下载回来的软件包文件,如果MD5校验和与官方提供的不一致,则说明该软件包在网络传输过程中可能被非法改动过

对于校验和不一致的软件包,应尽量不要使用,以免带来病毒、木马等不安全因素

编译安装的基本过程

环境:需安装支持C/C++程序语言的编译器,如:gcc-4.4.7-4.el6、gcc-c++-4.4.7-4.el6 ;make-3.81-20.el6.……

过程:

步骤1. 解包:习惯上将软件包释放到/usr/src/ 目录;解包后的源代码文件位置: /usr/src/软件名-版本号/

步骤2. 配置:使用源码目录中的configure 脚本;执行“./configure --help” 可以查看帮助;典型的配置选项: --prefix=软件安装目录

在linux系统中通过源代码方式安装软件时,也可以将所有程序文件安装到同一个文件夹,如:(/configure—prefix=/usr/local/apache)中。

步骤3. 编译:执行make 命令

步骤4. 安装:执行make install 命令

在linux中编译源代码需要使用gcc. Make编译环境;从源代码安装应用程序的基本过程包括解包. 配置. 编译. 安装这四个步骤。

账号和权限管理

1.用户账号和组账号概述

用户帐号:

超级用户,即root用户:类似于Windows系统中的Administrator用户,非执行管理任务时不建议使用root用户登录系统

普通用户:帐号一般只在用户自己的宿主目录中有完全权限

程序用户:用于维持系统或某个程序的正常运行,一般不允许登录到系统。例如:bin、daemon、ftp、mail等

组帐号:

基本组(私有组):每一个账号至少属于一个组。

附加组(公共组):一个账号属于一个基本组后,再加入了另一个组。

 UIDGID

UID(User IDentity,用户标识号)

GID(Group IDentify,组标识号)

注意:root用户的UID的固定值为0root组帐号的GID号为固定值0 1~499UIDGID默认保留给程序用户使用,普通用户/组使用的UIDGID号在50060000之间

2.用户账号文件 /etc/passwd

保存用户名称、宿主目录、登录Shell等基本信息;每一行对应一个用户的帐号记录;所有用户都可以访问passwd文件中的内容,但只有root用户才能更改

Password文件配置七个字段的含义:账户名称;用户密码或密码占位符;用户账号的uid号;基本组账号的gid号;用户说明;宿主目录;登陆shell。

3.用户账号文件 /etc/shadow

保存用户的密码、账号有效期等信息;每一行对应一个用户的密码记录;文件的每一行内容包含九个用冒号“:”分隔的配置字段

shadow文件配置九个字段的含义:账户名称;md5值. 若为“*/!!” 表明此用户不能登陆,若为空则不需要密码;上次修改密码时间;密码最短有效天数,默认为0;密码最长有效天数,默认为99999;提前多少天警告用户口令即将过期,默认为7;密码过期多少天后禁用该账户;账号失效时间,默认为空,表示永久使用;保留字段。

1):useradd命令:添加用户账号

在rhel 6 中,使用useradd命令主要完成在/etc/passwd和/etc/shadow文件末尾添加该用户的账号记录;若未指定用户宿主目录,则在/home目录下创建与账号同名的宿主目录;若未指定用户所属的组,则自动创建与用户账号同名的基本组,保存在/etc/group. /etc/gshadow中。

语法useradd  [选项]...  用户名

常用命令选项

-u:指定UID 标记号

-d:指定宿主目录,缺省为/home/用户名

-e:指定帐号失效时间

-g:指定用户的基本组名(或UID号)

-G:指定用户的附加组名(或GID号)

-M:不为用户建立并初始化宿主目录

-s:指定用户的登录Shell

2):用户账号的初始配置文件

文件来源:新建用户帐号时,从/etc/skel目录中复制而来

主要的用户初始配置文件

~/.bash_profile:用户每次登录时执行

~/.bashrc:每次进入新的Bash环境时执行

~/.bash_logout:用户每次退出登录时执行

3):passwd命令:为用户账号设置密码

语法:passwd  [选项]...  用户名

常用命令选项:-d:清空用户的密码,使之无需密码即可登录;-l:锁定用户帐号;-S:查看用户帐号的状态(是否被锁定);-u:解锁用户帐号

注意:通过password命令锁定的用户账号,将无法在登录系统(shadow文件中的对应密码字符串前将添加“!!”字符),只能由管理员来解除锁定。

4):usermod命令:修改用户账户属性

语法:usermod  [选项]...  用户名

常用命令选项

-l:更改用户帐号的登录名称

-L:锁定用户账户

-U:解锁用户账户

以下选项与useradd命令中的含义相同(把指定改为修改即可): -u、-d、-e、-g、-G、-s

5):userdel命令:删除用户账号

语法:userdel  [-r]  用户名

添加-r 选项时,表示连用户的宿主目录一并删除

4. 组账号文件

/etc/group:保存组帐号基本信息;/etc/gshadow:保存组帐号的密码信息

1):groupadd命令:添加组账号

语法:groupadd  [-g GID]  组账号名

2):gpasswd命令:添加. 设置. 删除组成员

语法:gpasswd  [选项]...  组帐号名

常用命令选项:-a:向组内添加一个用户;-d:从组内删除一个用户成员;-M:定义组成员列表,以逗号分隔

3):groupdel命令:删除组账号

语法:groupdel组帐号名 (删除组帐号后,从/etc/group文件中将查不到相应的记录)

5.查询账号信息

id命令:用途:查询用户身份标识;语法:id  [用户名]

groups命令:用途:查询用户所属的组;语法:groups  [用户名]

finger命令:用途:查询用户帐号的详细信息;语法:finger  [用户名]

userswwho命令:用途:查询已登录到主机的用户信息

6.文件/目录的权限和归属

访问权限

读取r:允许查看文件内容、显示目录列表

写入w:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录

可执行x:允许运行程序、切换目录

归属(所有权)

属主:拥有该文件或目录的用户帐号

属组:拥有该文件或目录的组帐号

7.设置目录和文件的权限chmod

语法1chmod   [ugoa]  [+-=]  [rwx]  文件或目录...(+、-、= 分别表示增加、去除、设置权限)(u、g、o、a 分别表示属主、属组、其他用户、所有用户(ugo的总和))(r,w,x权限字符可分别表示为8进制字符4,2,1,表示一个权限组合时需要将数字进行累加;如rwx=7,rw-r-r=644)

语法22chmod  nnn  文件或目录...(3位八进制数)

常用命令选项:-R:递归修改指定目录下所有子项的权限

8.设置目录和文件的归属chown

语法:chown  属主 文件或目录

Chown :属组  文件或目录

Chown 属主:属组 文件或目录

常用命令选项:-R:递归修改指定目录下所有文件、子目录的归属

linux中安装程序及账户管理的更多相关文章

  1. 在CentOS 8 Linux中安装使用Cockpit服务器管理软件

    在本文中,我们将帮助您在CentOS 8服务器中安装Cockpit Web 控制台,以管理和监视本地系统以及网络环境中的Linux服务器.您还将学习如何将远程Linux主机添加到Cockpit并在Ce ...

  2. Python原来这么好学-1.2节: 在Linux中安装python

    这是一本教同学们彻底学通Python的高质量学习教程,认真地学习每一章节的内容,每天只需学好一节,帮助你成为一名卓越的Python程序员: 本教程面向的是零编程基础的同学,非科班人士,以及有一定编程水 ...

  3. Linux中安装C++编译器codeBlock,并配置opencv链接库

    1.Linux中安装codeBlock https://blog.csdn.net/xinyunyishui/article/details/50967395 2.CodeBlock中的中文显示不完全 ...

  4. Linux中安装python3.6和第三方库

    Linux中安装python3.6和第三方库 如果本机安装了python2,尽量不要管他,使用python3运行python脚本就好,因为可能有程序依赖目前的python2环境,比如yum!!!!! ...

  5. 解决Windows 8.1 应用商店中安装程序挂起的解决

    阅读目录: 在Windows 8.1系统的应用程序商店中安装程序时,总是提醒“挂起”状态.无法进行后续安装,看了下国内不少用户有这个困扰,特此总结自己的解决方案. 1. 确保Windows updat ...

  6. Linux中安装配置spark集群

    一. Spark简介 Spark是一个通用的并行计算框架,由UCBerkeley的AMP实验室开发.Spark基于map reduce 算法模式实现的分布式计算,拥有Hadoop MapReduce所 ...

  7. 在Linux中安装和配置OpenVPN Server的最简便方法!

    本文介绍了如何在基于RPM和DEB的系统中安装和配置OpenVPN服务器.我们在本文中将使用一个名为openvpn-install的脚本,它使整个OpenVPN服务器的安装和配置过程实现了自动化.该脚 ...

  8. 完全零基础在Linux中安装 JDK

    完全零基础在Linux中安装 JDK 总体思路:先确定没有Java程序了 — 然后创建相应路径文件夹 — 下载JDK — 解压到当前路径 — 自定义文件名称 — 配置环境变量 — 检查是否安装成功 第 ...

  9. 在Linux中安装MariaDB并添加远程访问

    在Linux中安装MariaDB并添加远程访问 最近学习到了数据库部分,因为有一台台式机一台笔记本换着用,就没有把数据库安装在本机,本来打算用之前买的虚拟空间的数据库的,结果速度太慢用起来太难受了,就 ...

随机推荐

  1. 压力测试工具Ab简介

    Apache安装包中自带的压力测试工具 Apache Benchmark(简称ab) 简单易用,这里就采用 ab作为压力测试工具了. 1.独立安装 通过 yum-utils中的yumdownload  ...

  2. 2014年7月10日,我人生的最重要Upgrade

    2014年7月10日上午,我的小公主顺利的出生于国妇婴.之前各种紧张,各种不安.在不安中的前天晚上陪着来上海的董博士于方先生在人民广场聚餐.大家都是工作几年的,各种感慨,对于工作中的零零种种.还有对未 ...

  3. Inventory Transactions Manager

    Overview Inventory Transaction Manager用于处理库存接口表(MTL_TRANSACTION_INTERFACE或者MTL_MATERIAL_TRANSACTIONS ...

  4. Java中类的创建及类与对象的关系

    //import java.util.Scanner; //创建一个类 class Person{ //属性和方法的定义不是必须的 //属性 String name ; int age ; //方法 ...

  5. AngularJS进阶(四十)创建模块、服务

    AngularJS进阶(四十)创建模块.服务 学习要点 使用模块构架应用 创建和使用服务 为什么要使用和创建服务与模块? 服务允许你打包可重用的功能,使之能在此应用中使用. 模块允许你打包可重用的功能 ...

  6. SQL join 语句 画图果然更容易理解

    我认为 Ligaya Turmelle 的关于SQL联合(join)语句的帖子对于新手开发者来说是份很好的材料.SQL 联合语句好像是基于集合的,用韦恩图来解释咋一看是很自然而然的.不过正如在她的帖子 ...

  7. XML解析之sax解析案例(二)使用sax解析把 xml文档封装成对象

    Demo1类: import java.io.File; import java.util.List; import javax.xml.parsers.SAXParser; import javax ...

  8. 我眼中的Linux设备树(二 节点)

    二 节点(node)的表示首先说节点的表示方法,除了根节点只用一个斜杠"/"表示外,其他节点的表示形式如"node-name@unit-address".@前边 ...

  9. 【UI 设计】PhotoShop基础工具 -- 移动工具

    还是学点美工的东西吧, 业余爱好   比学编程还难 PS版本 : PhotoShop CS6 1. 移动工具 (1) 工具栏和属性栏 工具栏 和 属性栏 : 左侧的是工具栏, 每选中一个工具, 在菜单 ...

  10. Caffe框架,了解三个文件

    不知道从什么时候开始,Deep Learning成为了各个领域研究的热点,也不知道从什么时候开始,2015CVPR的文章出现了很多Deep Learning的文章,更不知道从什么时候开始,三维重建各个 ...