北在北方

太白枝头看,花开不计年,杯中浮日月,楼外是青天。

导航

Linux软件包管理

Posted on 2012-12-19 21:37  CN.programmer.Luxh  阅读(502)  评论(0编辑  收藏  举报

  RedHat系Linux软件包管理

一、RPM包的管理

  rpm软件包的一个例子:

sudo-1.7.4p5-11.el6.i686.rpm

  其中包括软件名(sudo),版本号(1.7.4p5),发行号(11.el6)和硬件平台(i686)

  1、卸载

[root@localhost ~]# rpm -e sudo

  如果其它软件包有依赖关系,卸载时会产生提示信息,可以使用--nodeps强行卸载

[root@localhost ~]# rpm -e --nodeps samba

  2、安装

    光盘里面带有的软件包,可以直接从光盘安装

    1)挂载光盘

[root@localhost ~]# mkdir /mnt/cdrom
[root@localhost ~]# mount /dev/cdrom /mnt/cdrom
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@localhost ~]#

    2)rpm的安装包都放在Packages目录中

[root@localhost ~]# cd /mnt/cdrom
[root@localhost cdrom]# ls
CentOS_BuildTag  Packages                    RPM-GPG-KEY-CentOS-Security-6
EULA             RELEASE-NOTES-en-US.html    RPM-GPG-KEY-CentOS-Testing-6
GPL              repodata                    TRANS.TBL
images           RPM-GPG-KEY-CentOS-6
isolinux         RPM-GPG-KEY-CentOS-Debug-6
[root@localhost cdrom]# 

    3)找到sudo的安装包

[root@localhost cdrom]# cd Packages
[root@localhost Packages]# ls | grep sudo
sudo-1.7.4p5-11.el6.i686.rpm
[root@localhost Packages]# 

    4)执行安装

[root@localhost Packages]# rpm -ivh sudo-1.7.4p5-11.el6.i686.rpm 
warning: sudo-1.7.4p5-11.el6.i686.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Preparing...                ########################################### [100%]
   1:sudo                   ########################################### [100%]
[root@localhost Packages]#

    5)查询软件包是否已安装

[root@localhost Packages]# rpm -q sudo
sudo-1.7.4p5-11.el6.i686
[root@localhost Packages]# 

    没有安装的会给出提示

[root@localhost ~]# rpm -q samba
package samba is not installed
[root@localhost ~]# 

    6)--excludedocs 不安装软件包中的文档文件

[root@localhost Packages]# rpm -ivh --excludedocs sudo-1.7.4p5-11.el6.i686.rpm

    7)--prefix PATH 将软件包安装到由PATH指定的路径下

[root@localhost Packages]# rpm -ivh --prefix=/usr/local/sudo sudo-1.7.4p5-11.el6.i686.rpm 

    不过指定rpm包的安装路径意义不大,rpm一般都不允许改变安装目录,rpm包在设计的时候就已经指定好相应的安装目录了

    8)--test 只对安装进行测试,并不实际安装

[root@localhost Packages]# rpm -ivh --test sudo-1.7.4p5-11.el6.i686.rpm

    9)软件包已被安装

[root@localhost Packages]# rpm -ivh sudo-1.7.4p5-11.el6.i686.rpm 
warning: sudo-1.7.4p5-11.el6.i686.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Preparing...                ########################################### [100%]
        package sudo-1.7.4p5-11.el6.i686 is already installed
[root@localhost Packages]#

    如果要覆盖安装该软件包,可以使用--replacepkgs选项

[root@localhost Packages]# rpm -ivh --replacepkgs sudo-1.7.4p5-11.el6.i686.rpm 
warning: sudo-1.7.4p5-11.el6.i686.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Preparing...                ########################################### [100%]
   1:sudo                   ########################################### [100%]
[root@localhost Packages]# 

    10)文件冲突

    如果要安装的软件包中有一个文件已在安装其它软件包是安装了,就会出现文件冲突,可以使用--replacefiles选项

[root@localhost Packages]# rpm -ivh --replacefiles sudo-1.7.4p5-11.el6.i686.rpm

    11)未解决依赖关系

    RPM软件包可能依赖于其它软件包,在安装了依赖的软件包之后才能安装该软件包。强制安装使用--nodeps选项,如果依赖包没安装,强制安装的软件一般用不了。

  3、升级

    比如升级到 sudo-1.8.0p5-11.el6.i686.rpm

[root@localhost Packages]# rpm -Uvh sudo-1.8.0p5-11.el6.i686.rpm

 

 二、YUM包管理

  应用yum包的好处:

    自动解决软件包依赖关系

    方便的软件包升级

   1、安装 yum install  (需要网络访问)

[root@bogon ~]# yum install sudo
Loaded plugins: fastestmirror, security
Determining fastest mirrors
 * base: mirror.neu.edu.cn
 * extras: mirror.neu.edu.cn
 * updates: mirror.neu.edu.cn
base                                                     | 3.7 kB     00:00     
base/primary_db                                          | 3.5 MB     00:07     
extras                                                   | 3.5 kB     00:00     
extras/primary_db                                        |  24 kB     00:00     
updates                                                  | 3.5 kB     00:00     
updates/primary_db                                       | 3.8 MB     00:08     
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package sudo.i686 0:1.7.4p5-13.el6_3 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package       Arch          Version                     Repository        Size
================================================================================
Installing:
 sudo          i686          1.7.4p5-13.el6_3            updates          419 k

Transaction Summary
================================================================================
Install       1 Package(s)

Total download size: 419 k
Installed size: 1.0 M
Is this ok [y/N]: y
Downloading Packages:
sudo-1.7.4p5-13.el6_3.i686.rpm                           | 419 kB     00:01     
warning: rpmts_HdrFromFdno: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
Importing GPG key 0xC105B9DE:
 Userid : CentOS-6 Key (CentOS 6 Official Signing Key) <centos-6-key@centos.org>
 Package: centos-release-6-3.el6.centos.9.i686 (@anaconda-CentOS-201207051201.i386/6.3)
 From   : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
Is this ok [y/N]: y
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Warning: RPMDB altered outside of yum.
  Installing : sudo-1.7.4p5-13.el6_3.i686                                   1/1 
  Verifying  : sudo-1.7.4p5-13.el6_3.i686                                   1/1 

Installed:
  sudo.i686 0:1.7.4p5-13.el6_3                                                  

Complete!
[root@bogon ~]#

  2、检测升级 yum check-update

[root@bogon ~]# yum check-update sudo
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
 * base: mirror.neu.edu.cn
 * extras: mirror.neu.edu.cn
 * updates: mirror.neu.edu.cn
[root@bogon ~]#

  3、升级 yum update

[root@bogon ~]# yum update sudo
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
 * base: mirror.neu.edu.cn
 * extras: mirror.neu.edu.cn
 * updates: mirror.neu.edu.cn
Setting up Update Process
No Packages marked for Update
[root@bogon ~]#

  4、软件包查询yum list

[root@bogon ~]# yum list | grep sudo
sudo.i686                               1.7.4p5-13.el6_3                 @updates
[root@bogon ~]#

  5、软件包信息yum info

[root@bogon ~]# yum info sudo
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
 * base: mirror.neu.edu.cn
 * extras: mirror.neu.edu.cn
 * updates: mirror.neu.edu.cn
Installed Packages
Name        : sudo
Arch        : i686
Version     : 1.7.4p5
Release     : 13.el6_3
Size        : 1.0 M
Repo        : installed
From repo   : updates
Summary     : Allows restricted root access for specified users
URL         : http://www.courtesan.com/sudo/
License     : ISC
Description : Sudo (superuser do) allows a system administrator to give certain
            : users (or groups of users) the ability to run some (or all)
            : commands as root while logging all commands and arguments. Sudo
            : operates on a per-command basis.  It is not a replacement for the
            : shell.  Features include: the ability to restrict what commands a
            : user may run on a per-host basis, copious logging of each command
            : (providing a clear audit trail of who did what), a configurable
            : timeout of the sudo command, and the ability to use the same
            : configuration file (sudoers) on many different machines.

[root@bogon ~]# 

  6、卸载 yum remove

[root@bogon ~]# yum remove sudo
Loaded plugins: fastestmirror, security
Setting up Remove Process
Resolving Dependencies
--> Running transaction check
---> Package sudo.i686 0:1.7.4p5-13.el6_3 will be erased
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package       Arch          Version                    Repository         Size
================================================================================
Removing:
 sudo          i686          1.7.4p5-13.el6_3           @updates          1.0 M

Transaction Summary
================================================================================
Remove        1 Package(s)

Installed size: 1.0 M
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Erasing    : sudo-1.7.4p5-13.el6_3.i686                                   1/1 
  Verifying  : sudo-1.7.4p5-13.el6_3.i686                                   1/1 

Removed:
  sudo.i686 0:1.7.4p5-13.el6_3                                                  

Complete!
[root@bogon ~]#

  7、帮助yum -help、man yum

三、RPM查询应用案例

  1、查询文件隶属的软件包 rpm -qf

[root@bogon ~]# rpm -qf /etc/services
setup-2.8.14-16.el6.noarch
[root@bogon ~]# rpm -qf /bin/ls
coreutils-8.4-19.el6.i686
[root@bogon ~]# 

  2、查询软件包信息 rpm -qi、rpm -qip(查询还未安装的软件包)

[root@bogon ~]# rpm -qi sudo
Name        : sudo                         Relocations: (not relocatable)
Version     : 1.7.4p5                           Vendor: CentOS
Release     : 13.el6_3                      Build Date: 2012年08月06日 星期一 22时43分51秒
Install Date: 2012年12月15日 星期六 15时24分40秒      Build Host: c6b7.bsys.dev.centos.org
Group       : Applications/System           Source RPM: sudo-1.7.4p5-13.el6_3.src.rpm
Size        : 1078427                          License: ISC
Signature   : RSA/SHA1, 2012年08月06日 星期一 23时31分02秒, Key ID 0946fca2c105b9de
Packager    : CentOS BuildSystem <http://bugs.centos.org>
URL         : http://www.courtesan.com/sudo/
Summary     : Allows restricted root access for specified users
Description :
Sudo (superuser do) allows a system administrator to give certain
users (or groups of users) the ability to run some (or all) commands
as root while logging all commands and arguments. Sudo operates on a
per-command basis.  It is not a replacement for the shell.  Features
include: the ability to restrict what commands a user may run on a
per-host basis, copious logging of each command (providing a clear
audit trail of who did what), a configurable timeout of the sudo
command, and the ability to use the same configuration file (sudoers)
on many different machines.
[root@bogon ~]# 

  3、查询软件包安装文件rpm -ql、rpm -qlp(查询还未安装的软件包)

[root@bogon ~]# rpm -ql sudo
/etc/pam.d/sudo
/etc/pam.d/sudo-i
/etc/sudo-ldap.conf
/etc/sudoers
/etc/sudoers.d
/usr/bin/sudo
/usr/bin/sudoedit
/usr/bin/sudoreplay
/usr/libexec/sesh
/usr/libexec/sudo_noexec.so
/usr/sbin/visudo
/usr/share/doc/sudo-1.7.4p5
/usr/share/doc/sudo-1.7.4p5/ChangeLog
/usr/share/doc/sudo-1.7.4p5/HISTORY
/usr/share/doc/sudo-1.7.4p5/LICENSE
/usr/share/doc/sudo-1.7.4p5/NEWS
/usr/share/doc/sudo-1.7.4p5/README
/usr/share/doc/sudo-1.7.4p5/README.LDAP
/usr/share/doc/sudo-1.7.4p5/TROUBLESHOOTING
/usr/share/doc/sudo-1.7.4p5/UPGRADE
/usr/share/doc/sudo-1.7.4p5/sample.pam
/usr/share/doc/sudo-1.7.4p5/sample.sudoers
/usr/share/doc/sudo-1.7.4p5/sample.syslog.conf
/usr/share/doc/sudo-1.7.4p5/schema.ActiveDirectory
/usr/share/doc/sudo-1.7.4p5/schema.OpenLDAP
/usr/share/doc/sudo-1.7.4p5/schema.iPlanet
/usr/share/doc/sudo-1.7.4p5/sudoers2ldif
/usr/share/man/man5/sudoers.5.gz
/usr/share/man/man5/sudoers.ldap.5.gz
/usr/share/man/man8/sudo.8.gz
/usr/share/man/man8/sudoedit.8.gz
/usr/share/man/man8/sudoreplay.8.gz
/usr/share/man/man8/visudo.8.gz
/var/db/sudo
[root@bogon ~]#

  4、查询软件包帮助文档rpm -qd

[root@bogon ~]# rpm -qd sudo
/usr/share/doc/sudo-1.7.4p5/ChangeLog
/usr/share/doc/sudo-1.7.4p5/HISTORY
/usr/share/doc/sudo-1.7.4p5/LICENSE
/usr/share/doc/sudo-1.7.4p5/NEWS
/usr/share/doc/sudo-1.7.4p5/README
/usr/share/doc/sudo-1.7.4p5/README.LDAP
/usr/share/doc/sudo-1.7.4p5/TROUBLESHOOTING
/usr/share/doc/sudo-1.7.4p5/UPGRADE
/usr/share/doc/sudo-1.7.4p5/sample.pam
/usr/share/doc/sudo-1.7.4p5/sample.sudoers
/usr/share/doc/sudo-1.7.4p5/sample.syslog.conf
/usr/share/doc/sudo-1.7.4p5/schema.ActiveDirectory
/usr/share/doc/sudo-1.7.4p5/schema.OpenLDAP
/usr/share/doc/sudo-1.7.4p5/schema.iPlanet
/usr/share/doc/sudo-1.7.4p5/sudoers2ldif
/usr/share/man/man5/sudoers.5.gz
/usr/share/man/man5/sudoers.ldap.5.gz
/usr/share/man/man8/sudo.8.gz
/usr/share/man/man8/sudoedit.8.gz
/usr/share/man/man8/sudoreplay.8.gz
/usr/share/man/man8/visudo.8.gz
[root@bogon ~]# 

  5、查询软件包配置文件

[root@bogon ~]# rpm -qc sudo
/etc/pam.d/sudo
/etc/pam.d/sudo-i
/etc/sudo-ldap.conf
/etc/sudoers
[root@bogon ~]# 

   6、校验

[root@bogon tutor]# rpm -V sudo
[root@bogon tutor]# 

  如果没有任何内容显示,说明sudo这个软件没有被改变过

  7、软件包文件提取

    比如不小心把/etc/inittab文件删除了,需要从软件包中重新提取恢复

    1)先查找/etc/inittab这个文件属于哪个软件包

[root@bogon backup]# rpm -qf /etc/inittab
initscripts-9.03.31-2.el6.centos.i686
[root@bogon backup]# 

    2)从软件包中解压/etc/inittab文件到当前目录

[root@bogon backup]# rpm2cpio /mnt/cdrom/Packages/initscripts-9.03.31-2.el6.centos.i686.rpm | cpio -idv ./etc/inittab
./etc/inittab
11182 块
[root@bogon backup]# ls
etc
[root@bogon backup]# ls etc
inittab
[root@bogon backup]# 

    3)然后从当前目录复制到/etc/inittab

[root@bogon backup]# cp etc/inittab /etc/inittab

 

四、源代码包安装

  以安装proftpd为例子:

  1)解压解包

[root@bogon softs]# ls
proftpd-1.3.4b.tar.gz
[root@bogon softs]# tar -xzvf proftpd-1.3.4b.tar.gz

  2)进入解压后的目录

[root@bogon softs]# cd proftpd-1.3.4b
[root@bogon proftpd-1.3.4b]#

  3)先看看这个源码包中的文件

[root@bogon proftpd-1.3.4b]# ls
acconfig.h    include        README               README.PAM
aclocal.m4    INSTALL        README.AIX           README.ports
ChangeLog     install-sh     README.capabilities  README.Solaris2.5x
config.guess  lib            README.classes       README.Unixware
config.h.in   locale         README.controls      RELEASE_NOTES
config.sub    ltmain.sh      README.cygwin        sample-configurations
configure     m4             README.DSO           src
configure.in  Makefile.in    README.facl          stamp-h.in
contrib       Make.rules.in  README.FreeBSD       tests
COPYING       modules        README.IPv6          utils
CREDITS       NEWS           README.LDAP
doc           proftpd.spec   README.modules
[root@bogon proftpd-1.3.4b]# 

  可以看到里面有一个源码包典型的可以执行文件 configure

  4)配置

[root@bogon proftpd-1.3.4b]# ./configure --prefix=/usr/local/proftpd
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking target system type... i686-pc-linux-gnu
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details.
[root@bogon proftpd-1.3.4b]#

  ./configure  在当前目录下执行

  --prefix  指定安装目录

  执行上述的配置命令后,出现错误,没有找到c编译器

  使用yum安装gcc编译器,可以方便的解决gcc依赖的问题

[root@bogon proftpd-1.3.4b]#yum install gcc

  安装好gcc编译器之后,重新执行配置

[root@bogon proftpd-1.3.4b]# ./configure --prefix=/usr/local/proftpd

  5)编译

[root@bogon proftpd-1.3.4b]# make

  把源代码编译成可执行文件

  6)安装

[root@bogon proftpd-1.3.4b]# make install

 

五、脚本安装

  以安装webmin为例子:

  1)解压解包

[root@bogon softs]# tar -xzvf webmin-1.610.tar.gz

  2)进入解压目录

[root@bogon softs]# cd webmin-1.610

  3)可以查看一下README文件,路面有安装方式的说明

[root@bogon webmin-1.610]# more README

  4)执行脚本安装

[root@bogon webmin-1.610]# ./setup.sh

  安装过程会有一些交互,安装目录、日志文件存放目录、设置用户名密码之类的

[root@bogon webmin-1.610]# ./setup.sh
***********************************************************************
*            Welcome to the Webmin setup script, version 1.610        *
***********************************************************************
Webmin is a web-based interface that allows Unix-like operating
systems and common Unix services to be easily administered.

Installing Webmin in /softs/webmin-1.610 ...

***********************************************************************
Webmin uses separate directories for configuration files and log files.
Unless you want to run multiple versions of Webmin at the same time
you can just accept the defaults.

Config file directory [/etc/webmin]: 
Log file directory [/var/webmin]: 

***********************************************************************
Webmin is written entirely in Perl. Please enter the full path to the
Perl 5 interpreter on your system.

Full path to perl (default /usr/bin/perl): 

Testing Perl ...
Perl seems to be installed ok

***********************************************************************
Operating system name:    CentOS Linux
Operating system version: 6.3

***********************************************************************
Webmin uses its own password protected web server to provide access
to the administration programs. The setup script needs to know :
 - What port to run the web server on. There must not be another
   web server already using this port.
 - The login name required to access the web server.
 - The password required to access the web server.
 - If the webserver should use SSL (if your system supports it).
 - Whether to start webmin at boot time.

Web server port (default 10000): 
Login name (default admin): 
Login password: 
Password again: 
The Perl SSLeay library is not installed. SSL not available.
Start Webmin at boot time (y/n): n
***********************************************************************
Creating web server config files..
..done

  安装完成我们就看见在远程用浏览器登录来管理服务器了

 

  webmin是一个非常强大基于Web的Unix/Linux系统管理工具