Linux入门系列——软件包管理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux入门系列——软件包管理相关的知识,希望对你有一定的参考价值。

参考技术A RedHat 系统中使用的是: rpm (redhat package manager) 现在称:RPM is Package Manager

Debian : dpt

Ubuntu : apt

在安装软件的时候,有可能出现软件包的相互依赖关系;所以红帽公司推出了:yum(Yellowdog update modifier)

包的组成部分:

主包:

bind-9.7.1-1..e15.i586.rpm

子包:

bind-libs-9.7.1-1..e15.i586.rpm

bind-utils-9.7.1-1..e15.i586.rpm

包名:

PackageName-Version-Release.Arch.rpm

bind-major-minor-releases-release.arch.rpm

包名-主版本号-次版本号-发行号-rpm包的制作者的发行号.硬件平台.rpm

主版本号:重大改进;

次版本号:某个子功能发生重大变化;

发行号:修改BUG,调整了一点功能;

bind-9.7.1-1.noarch.rpm 这里的noarch表示不区分硬件平台,32和64都可以使用;如果是ppc则是在PowerPc上使用的包;

# rpm -ivh /path/to/Package_Name

-i,--install 表示安装

-v 表示显示安装过程的信息

-h 表示以#显示安装的进程,总数为50个;

-vv 显示更详细的过程;

--nodeps 安装的时候忽略依赖关系;

--force 无论之前是否安装过,都强制安装,可以实现重装、降级;

--replacepkgs 重新安装,替换原有的安装;

--oldpackage 对软件包进行降级;

--test Do not install the package, simply check for and report potential conflicts. 不进行安装,只测试看在安装的时候有没有依赖包要装;

rpm -q soft_name

# rpm -q httpd

rpm -qa 查询当前系统中已经安装的rpm软件包;

# rpm -qa |grep ‘ssh*’

rpm -qi soft_name 查询软件包的安装信息:

[root@ns2 rpm]# rpm -qi zlib-devel

Name : zlib-devel Relocations: /usr

Version : 1.2.3 Vendor: CentOS

Release : 4.el5 Build Date: 2011年05月11日 星期三 18时57分15秒

Install Date: 2013年07月21日 星期日 17时02分41秒 Build Host: builder10.centos.org

Group : Development/Libraries Source RPM: zlib-1.2.3-4.el5.src.rpm

Size : 269981 License: BSD

Signature : DSA/SHA1, 2011年09月04日 星期日 03时24分25秒, Key ID a8a447dce8562897

URL : http://www.gzip.org/zlib/

Summary : Zlib 开发的头文件和库。

Description :

zlib-devel 软件包包括开发使用 zlib 压缩和解缩库的程序

所需的头文件和库。

[root@ns2 rpm]#

rpm -ql soft_name 查看该软件包在系统中存放了哪些文件;

rpm -qf /path/to/file_name 查看该文件是由哪个rpm包生成的。

rpm -qc soft_name 查看指定rpm包安装的配置文件的位置;

rpm -qd soft_name 查看指定rpm包安装的帮助文件的位置;

rpm -q --scripts soft_name 查看指定rpm包在安装、卸载、更新的前后,所要执行的shell脚本;

rpm -qp[i|l|d|c|] 即要加上一个“p”选项;

rpm -Uvh /path/to/package_name

如果安装的指定的软件包已经安装过,则进行升级操作,如果没有安装过,则就使用指定的这个软件包进行安装;

rpm -Fvh /path/to/package_name

如果安装过,则升级,否则不进行任何操作;

rpm -Fvh --oldpackage package_name 通常用这个来降级一个rpm包;

rpm -e package_name

--nodeps 强制卸载

rpm -V package_name 也可以使用--verify

通常用来检查安装后的文件是不是被修改过;

加密算法:

对称加密: 加密和解密使用同一个key

非对称加密:有一对密钥(公钥和私钥),公钥大家都可以知道,私钥只有持有人知道;公钥加密私钥解,私钥加密公钥也可以解。不能由公钥摧出私钥,也不能由私钥摧出公钥;私钥还用来做签名,因为只有私钥持有人自己才有;

单向加密:使用这种加密算法加密后,是不可以再还原的。通常用它来做数据完整性的验证,也就是验证数据在传输的过程中有没有被别人修改过。

在红帽的系统中,/etc/pki/rpm-gpg/目录下面存放了红帽公司的gpg-key(相当于公钥),所以只需要把这个gpgkey导入到系统中就可以验证了。导入方法如下:

# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

接下来就可以对将要安装的rpm包进行验证了:

# rpm -K /path/to/package_file

dsa,gpg验证来源的合法性,也就是验证签名。但是可以使用--nosignature 来跳过签名验证;

sha1,md5验证软件包的完整性,可以使用--nodigest 来跳过完整性验证;

rpm --rebuilddb 重建数据库

--initdb 初始化数据库

yum install -y pack1 pack2 安装指定的软件包

yum remove pack1 pack2 -y 删除指定的软件包

yum update pack1 pack2 更新指定的软件包

yum list installed 列出所有已经安装的软件包

yum update 更新源

yum search string 搜索包含string的软件包

yum install package_name 获取软件包信息

# tar zxf nginx-1.4.7.tar.gz -C /usr/src

# configure --prefix=/usr/local/nginx --conf-path=/etc

# make

# make install

由于使用的是源码包安装在非正常路径下。所以还要做以下的调整:

修改/etc/profile文件。或是在/etc/profile.d/下创建一个以.sh结尾的文件;再把二进制程序的路径export出来就行了;

在/etc/ld.so.conf.d/中创建一个以.conf文件结尾的文件,而后把要增添的路径直接写入此文件中就行了;

这样系统就会在下次启动的时候,自动加载这些新增加的库;如果想让系统马上可以找到这些新增加的库,就必须执行下面的命令:

# ldconfig 通知系统重新搜索库文件,还可以加上-v选项,表示显示过程;

默认的头文件搜索路径是:/usr/include/

要添加新的头文件搜索路径,可以使用链接的方式:

ln -s /usr/local/nginx/include/* /usr/include/



ln -s /usr/local/nginx/include /usr/include/nginx

这时可以修改/etc/man.conf文件,在里面添加以下内容:

MANPATH /usr/local/nginx/man

还有一种方式就是临时使用:

# man -M /usr/local/nginx/man nginx 这样就可以查看nginx的man手册了;

linux基础入门之管理linux软件

Linux软件包

软件包分类

源码包

修改源代码 编译 安装 运行效率更高更 加稳定

二进制包

优点 管理简单

缺点 不能修改源代码依赖性问题

    Redhat  centOS    rpm

    Debain  Ubuntu    deb

RPM包命名

name-version-release.arch.rpm                src.rpm 源码包

名称-版本-发行版.平台.rpm

version

主版本号 软件有了重大改进

次版本号 某个子功能发生重大变化

修订号   修复了软件的一些bug调整了部分功能

 

Release

发行版本号 是源程序配置完成后编译制作rpm包的版本

 

OS

el6  RHEL 6.x(Red Hat Enterprise Linux)/CentOS 6.x

fc20  Fedora

 

硬件平台CPU

硬件平台包括了:i386i486i586i686x86_64ppcsparcalpha

 

主包

   bind-9.7.1-i586.el5.rpm

子包

bind-libs-9.7.1-i586.el5.rpm

bind-utils-9.7.1-i586.el5.rpm

 

查看Linux内核

uname 查看linux操作系统版本和CPU类型

-a, --all                     以如下次序输出所有信息。其中若-p -i 的探测结果不可知则被省略:

  -s, --kernel-name                 输出内核名称

  -n, --nodename                   输出网络节点上的主机名

  -r, --kernel-release            输出内核发行号

  -v, --kernel-version            输出内核版本

  -m, --machine                输出主机的硬件架构名称

  -p, --processor                   输出处理器类型或"unknown"

  -i, --hardware-platform           输出硬件平台或"unknown"

  -o, --operating-system            输出操作系统名称

rpm管理

Redhat Package Manager

rpm 选项

     -i install  安装

     -U update)   升级软件

     -e erase  删除软件

     -q query   查询安装的软件

 

-a   显示全部

-h   显示安装的进度

-v   显示安装详细信息

-vv   显示更加详细的安装信息

安装软件

安装软件包 需要软件包的位置

[root@WebServer ~]# rpm -ivh /mnt/cdrom/Packages/zsh-4.3.10-5.el6.x86_64.rpm

[root@WebServer ~]# rpm -ivh /mnt/cdrom/Packages/nano-2.0.9-7.el6.x86_64.rpm

在软件包所在目录下可以不指定路径

[root@WebServer ~]# cd /mnt/cdrom/Packages/

[root@WebServer Packages]# rpm -ivh traceroute-2.0.14-2.el6.x86_64.rpm

 

--test     测试是否能够安装成功

--force     如果软件包冲突 也强制安装

--nodeps    不检测是否依赖其他软件  rpm -e dchp --nodeps  

--noscripts  不执行任何安装脚本

--nopre     不执行安装前的脚本

 

查询软件

rpm -q             查看软件包的全名

rpm q pkgname

 

rpm qa             列出所有安装过的包

rpm qi             查看软件详细信息

rpm -ql              查看软件生成的文件

rpm –qc             查看配置文件位置

rpm qf /bin/sh            可以查看文件是由哪个程序生成的

rpm -q --scripts bash          查询软件包相关的脚本

 

查询未安装的软件包会产生哪些文件

rpm -qlp /mnt/cdrom/Packages/samba-3.6.9-151.el6.x86_64.rpm

查看软件包详细信息

rpm -qip /mnt/cdrom/Packages/samba-3.6.9-151.el6.x86_64.rpm

 

粗略查询软件包名称包含ftp的软件

[root@WebServer ~]# rpm -qa | grep "ftp"

 升级

-U  upgrade 如果不存在老版本 就是全新安装

-f  freshen 老版本必须存在

[root@WebServer ~]# umount /dev/cdrom

[root@WebServer ~]# mount /dev/cdrom /mnt/cdrom/

[root@WebServer ~]# rpm -Uvh /mnt/cdrom/Packages/zsh-4.3.10-7.el6.x86_64.rpm

 

[root@WebServer ~]# rpm -q zsh

zsh-4.3.10-5.el6.x86_64

zsh-4.3.10-7.el6.x86_64.rpm

zsh-5.0.2-7.el7.x86_64.rpm

软件升级不要跨操作系统主版本号

删除软件

-e  erase 删除

rpm -e zsh

校验

安装软件会按功能放到不同的文件中

/usr/bin        一些可运行文件

/usr/lib       一些程序使用的动态函式库

/etc          一些配置档放置的目录,例如 /etc/crontab

/usr/share/doc   一些基本的软件使用手册与说明档

/usr/share/man   一些 man page 文件

 

软件相关的数据库

[root@WebServer ~]# /var/lib/rpm

 

如果软件的文件发生变化,会列出变化的文件

[root@WebServer ~]# rpm -V vsftpd

missing   c /etc/vsftpd/ftpusers  

S.5....T.  c /etc/vsftpd/user_list

SM5..UGT.  c /etc/vsftpd/vsftpd.conf

 

提示代码的含义:

S (file Size differs) 文件的容量大小是否被改变

M (Mode differs) 文件的类型或文件的属性 (rwx) 是否被改变?如是否可运行等参数已被改变

5 (MD5 sum differs) MD5 这一种指纹码的内容已经不同

D (Device major/minor number mis-match) 装置的主/次代码已经改变

L (readLink(2) path mis-match) Link 路径已被改变

U (User ownership differs) 文件的所属人已被改变

G (Group ownership differs) 文件的所属群组已被改变

T (mTime differs) 文件的创建时间已被改变

missing: 文件丢失

 

软件数字签名

对称加密  加密秘钥和解密秘钥是同一个秘钥  优点效率高 缺点 不适用在网络中传输秘钥 秘钥维护复杂

 

非对称加密  加密秘钥和解密秘钥不是同一个秘钥  公钥和私钥

            公钥加密 必须使用私钥解密

            私钥加密 必须使用公钥解密

            缺点 加密效率低

            优点 公钥适合在网络中传递 秘钥维护简单

数字签名    不能抵赖 确认来源 签名之后没更改过

 

--nosignature 不检查签名

--nodigest  不检查完整性

 

只检测软件包完整性

[root@WebServer ~]# rpm -K --nosignature

/mnt/cdrom/Packages/traceroute-2.0.14-2.el6.x86_64.rpm

/mnt/cdrom/Packages/traceroute-2.0.14-2.el6.x86_64.rpm: sha1 md5 OK

 

查看Linux系统上红帽公司的公钥

[root@WebServer ~]# ls /etc/pki/rpm-gpg/

RPM-GPG-KEY-redhat-beta           RPM-GPG-KEY-re

以上是关于Linux入门系列——软件包管理的主要内容,如果未能解决你的问题,请参考以下文章

linux 从入门到跑路 - rpm ,yum , dnf (软件包管理三兄弟)

Linux笔记 - 软件包管理

Linux笔记 - 软件包管理

Linux 软件安装

golang包管理解决之道——go modules初探

Linux安装杀毒软件和防火墙