Linux入门系列——软件包管理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux入门系列——软件包管理相关的知识,希望对你有一定的参考价值。
参考技术A RedHat 系统中使用的是: rpm (redhat package manager) 现在称:RPM is Package ManagerDebian : 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
硬件平台包括了:i386、i486、i586、i686、x86_64、ppc、sparc、alpha
主包
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入门系列——软件包管理的主要内容,如果未能解决你的问题,请参考以下文章