在Linux系统上管理软件需要通过程序包管理器来实现。
程序包管理:
将编译好的应用程序的各组成文件打包成一个或几个程序包文件,从而更方便地实现程序包的安装、升级、卸载和查询等管理操作;
常用的有RPM、YUM、手动编译源码安装。
rpm 执行安装包
二进制包(Binary)以及源代码包(Source)两种。二进制包可以直接安装在计算机中,而源代码包将会由RPM自动编译、安装。源代码包经常以src.rpm作为后缀名。
rpm包命名格式:
rpm主包和支包区分:
某个软件包可能会比较大,那么就会做成几部分。比较常用的功能做成主包,其它附加功能做成子包。而子包需要依赖主包运行。
主包:name-VERSION-release.arch.rpm
支包:name-function-VERSION-release.arch.rpm
function:devel, utils, libs, ...
例如:
zlib-1.2.3-29.el6.x86_64.rpm
zlib-devel-1.2.3-29.el6.x86_64.rpm
rpm命令管理程序包:
安装、升级、卸载、查询和校验、数据库维护
rpm命令:rpm [OPTIONS] [PACKAGE_FILE]
安装:-i, --install
升级:-U, --update, -F, --freshen
卸载:-e, --erase
查询:-q, --query
校验:-V, --verify
数据库维护:--builddb, --initdb
常用命令组合:
-ivh:安装显示安装进度--install--verbose--hash -Uvh或-Fvh:升级软件包--Update; -qpl:列出RPM软件包内的文件信息[Query Package list]; -qpi:列出RPM软件包的描述信息[Query Package install package(s)]; -qf:查找指定文件属于哪个RPM软件包[Query File]; -Va:校验所有的RPM软件包,查找丢失的文件[View Lost]; -e:删除包 --oldpackage:降级; --force:强制升级;
先将ISO镜像文件挂载
[root@bogon mnt]# mount -o loop /dev/cdrom /mnt/centos_iso/
检查本机是否安装zsh
[root@bogon Packages]# rpm -q zsh package zsh is not installed
安装rpm包
[root@bogon Packages]# rpm -ivh zsh-4.3.11-4.el6.centos.x86_64.rpm warning: zsh-4.3.11-4.el6.centos.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY Preparing... ########################################### [100%] 1:zsh ########################################### [100%]
[root@bogon Packages]# rpm -q zsh zsh-4.3.11-4.el6.centos.x86_64
重新安装包
[root@bogon Packages]# rpm -ivh --replacepkgs zsh-4.3.11-4.el6.centos.x86_64.rpm
测试安装包(并不安装)
[root@bogon Packages]# rpm -ivh --test zsh-4.3.11-4.el6.centos.x86_64.rpm warning: zsh-4.3.11-4.el6.centos.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY Preparing... ########################################### [100%] [root@bogon Packages]# rpm -q zsh package zsh is not installed
升级包
[root@bogon Packages]# rpm -Uvh zsh-4.3.11-4.el6.centos.x86_64.rpm
降级
[root@bogon Packages]# rpm -Uvh --oldpackage PackageName
卸载包
[root@bogon Packages]# rpm -e zsh-4.3.11-4.el6.centos.x86_64
YUM:Yellowdog Update Modifier。
基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。要使用yum必须有一个yum源。
常见yum源及epel源
http://fedoraproject.org/wiki/EPEL
http://mirrors.aliyun.com/
http://mirrors.sohu.com/
http://mirrors.163.com/
http://mirrors.ustc.edu.cn/fedora/epel/
配置文件:
/etc/yum.conf:为所有仓库提供公共配置
/etc/yum.repos.d/*.repo:为仓库的指向提供配置
仓库指向的定义:
[repositoryID]
name= #名称描述
baseurl= #yum源目录,源地址
gpgcheck=1 #检查GPG-KEY,0为不检查,1为检查
enabled=1 #是否用该yum源,0为禁用,1为使用
gpgkey= #gpgcheck=0时无需配置
enablegroups={1|0}
failovermethod={roundrobin|priority}
默认为:roundrobin,意为随机挑选;
cost=
默认为1000
配置本地yum源步骤:
[root@bogon etc]# ls /etc/yum.repos.d CentOS-Base.repo CentOS-fasttrack.repo CentOS-Vault.repo CentOS-Debuginfo.repo CentOS-Media.repo [root@bogon yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak [root@bogon yum.repos.d]# vim Centos-Local.repo
内容为:
[Base]
name=Centos-Local-repo
baseurl=file:///mnt/centos_iso/Packages
enabled=1
gpgcheck=1
gpgkey=file:///mnt/centos_iso/RPM-GPG-KEY-CentOS-6
查看yum源列表
[root@bogon yum.repos.d]# yum list
yum常用命令
显示程序包:
[root@bogon yum.repos.d]# yum list
显示程序包的详细信息:
[root@bogon yum.repos.d]# yum info httpd Loaded plugins: fastestmirror, security Loading mirror speeds from cached hostfile Available Packages Name : httpd Arch : x86_64 Version : 2.2.15 Release : 45.el6.centos Size : 829 k Repo : Base Summary : Apache HTTP Server URL : http://httpd.apache.org/ License : ASL 2.0 Description : The Apache HTTP Server is a powerful, efficient, and : extensible web server.
安装程序包:
[root@bogon yum.repos.d]# yum -y install Package_Name
重新安装:
[root@bogon yum.repos.d]# yum reinstall Package_Name
检查升级
[root@bogon yum.repos.d]# yum check-update
升级程序包:
[root@bogon yum.repos.d]# yum update Package_Name
降级程序包:
[root@bogon yum.repos.d]# yum downgrade Package_Name
卸载程序包:
[root@bogon yum.repos.d]# yum remove Package_Name
查看指定的特性(可以是某文件)是由哪个程序包所提供:
provides | whatprovides feature1 [feature2] [...] [root@bogon yum.repos.d]# yum provides Package_Name
清理本地缓存:
[root@bogon yum.repos.d]# yum clean all Loaded plugins: fastestmirror, security Cleaning repos: Base Cleaning up Everything Cleaning up list of fastest mirrors
构建缓存:
[root@bogon yum.repos.d]# yum makecache Loaded plugins: fastestmirror, security Determining fastest mirrors Base | 4.0 kB 00:00 ... Base/group_gz | 219 kB 00:00 ... Base/filelists_db | 6.2 MB 00:00 ... Base/primary_db | 4.6 MB 00:00 ... Base/other_db | 2.8 MB 00:00 ... Metadata Cache Created
搜索:
[root@bogon yum.repos.d]# yum search Package_Name
以指定的关键字搜索程序包名及summary信息;
查看指定包所依赖的capabilities:
[root@bogon yum.repos.d]# yum deplist Package_Name
yum的历史事务
[root@bogon yum.repos.d]# yum history Loaded plugins: fastestmirror, security ID | Login user | Date and time | Action(s) | Altered ------------------------------------------------------------------------------- 4 | root| 2016-03-20 16:09 | Erase | 1 3 | root | 2016-03-20 16:02 | Reinstall | 1 2 | root | 2016-03-20 16:00 | Install | 6 < 1 | System | 2016-03-16 08:30 | Install | 385 > history list
源码编译安装
C代码编译安装三步骤:
./configure:
(1) 通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的指定以及Makefile.in文件生成makefile;
(2) 检查依赖到的外部环境;
make:
根据makefile文件,构建应用程序;
make install
开发工具:
autoconf: 生成configure脚本
automake:生成Makefile.in
建议:安装前查看INSTALL,README
安装后的配置:
(1) 导出二进制程序目录至PATH环境变量中;
编辑文件/etc/profile.d/NAME.sh
export PATH=/PATH/TO/BIN:$PATH
(2) 导出库文件路径
编辑/etc/ld.so.conf.d/NAME.conf
添加新的库文件所在目录至此文件中;
让系统重新生成缓存:
ldconfig [-v]
(3) 导出头文件
基于链接的方式实现:
ln -sv
(4) 导出帮助手册
编辑/etc/man.config文件
添加一个MANPATH
示例:
先将下载后的源码文件解压
[root@bogon sr]# ls httpd-2.2.31.tar.bz2 [root@bogon sr]# tar -xf httpd-2.2.31.tar.bz2
进入目录查看
[root@bogon httpd-2.2.31]# ls ABOUT_APACHE configure.in LAYOUT os acinclude.m4 docs libhttpd.dep README Apache.dsw emacs-style libhttpd.dsp README.platforms build httpd.dep libhttpd.mak README-win32.txt BuildAll.dsp httpd.dsp LICENSE ROADMAP BuildBin.dsp httpd.mak Makefile.in server buildconf httpd.spec Makefile.win srclib CHANGES include modules support config.layout INSTALL NOTICE test configure InstallBin.dsp NWGNUmakefile VERSIONING
编译
[root@bogon httpd-2.2.31]# ./configure --prefix=/usr/local/apache2 --sysconfdir=/etc/apache2
make
[root@bogon httpd-2.2.31]# make
make install
[root@bogon httpd-2.2.31]# make install
安装完成后查看安装后的目录
[root@bogon bin]# tree -L 1 /usr/local/apache2/ /usr/local/apache2/ ├── bin ├── build ├── cgi-bin ├── error ├── htdocs ├── icons ├── include ├── lib ├── logs ├── man ├── manual └── modules 12 directories, 0 files
测试apache
[root@bogon local]# /usr/local/apache2/bin/httpd -k start httpd: apr_sockaddr_info_get() failed for bogon httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
这个问题应该是没有在 /etc/httpd/conf/httpd.conf 中设定 ServerName。所以apache会用主机上的名称来取代,首先会去找 /etc/hosts 中有没有主机的定义。
解决办法:
(1)可以设定httpd.conf文件中的 ServerName,如下:ServerName localhost:80
(2)在 /etc/hosts 中填入自己的主机名称 bogon,如下:127.0.0.1 tao (用户名称)
解决后再次启动
[root@bogon bin]# /usr/local/apache2/bin/httpd -k start httpd (pid 51466) already running
查看80端口是否被监听
[root@bogon bin]# ss -tnl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 :::80 :::* LISTEN 0 128 :::22 :::* LISTEN 0 128 *:22 *:* LISTEN 0 100 ::1:25 :::* LISTEN 0 100 127.0.0.1:25 *:*
可以通过直接访问来测试了
OK!