linux软件管理

基础知识

二进制应用程序的组成部分:二进制文件、库文件、配置文件、帮助文件
程序包管理器:rpm
源代码命名方式:name-VERSION.tar.gz,VERSION:major.minor.release
rpm包命名方式:name-VERSION-ARCH.rpm,VERSION:major.minor.release,ARCH:release.os.arch,zlib-1.2.7-13.el7.i686.rpm

包依赖关系,yum、dnf:rpm包管理器的前端工具

ldd,打印出二进制程序依赖 的 共享库,ldd /bin/ls

管理及本机装载的库文件:
ldconfg -p:显示I本机已经缓存的所有可用库文件名及文件路径映射关系;
配置文件为:/etc/ld.so.conf,/etc/ld.so.conf.d/*.conf
缓存文件:/etc/ld.so.cache

获取程序包的途径:
1、系统发行版的光盘或官方的服务器:
centos镜像:http://mirrors.aliyun.com,http://mirrors.sohu.com,http://mirrors.163.com
2、项目官方
3、第三方组织
F edora-EPEL
http://pkgs.org
http://rpmfind.net
http://rpm.phone.net
4、自己制作

检查合法性:来源合法性、程序包完整性

编译安装

编译安装三步骤
1 ./configure:
    (1)通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的指定以及Makefile.in文件生成makefile;
    (2)检查依赖到的外部环境。
2. make:
    根据makefile文件,构建应用程序
3.make install

开发工具:
    autoconf:生成configure脚本
    automake:生成Makefile.in
建议:安装前查看INSTALL,README

开源程序源代码的获取:
    官方自建站点:apache.org,mariadb.com
    代码托管:SourceForge,Github.com,code.google.com

编译器
c/c++:gcc(GNU C Complier)

编译C源代码

前提:提供开发工具及开发环境

        开发工具:make、gcc等
        开发环境:开发库、头文件
            glibc:标准库
        通过“包组”提供开发组件
            CentOS 6:“Development Tools","Server Platform Development"
            CentOS 7:开发工具

第一步,configure

    选项:指定安装位置、指定启用的特性
    --help:获取其支持使用的选型
    --prefix=/PATH:指定安装路径,默认为/usr/local
    --sysconfdir=/PATH:配置文件安装路径

第二步,make

第三步,make install

第四步,安装后的配置

    (1)配置PaTH环境变量

            编辑配置文件/etc/profile.d/NAME.sh
            export PATH=/path/to/bin:$PATH

    (2)导出库文件路径

            编辑/etc/ld.so.conf.d/NAME.conf
            添加新的库文件所在目录至此文件中
            让系统重新生成缓冲
            ld -V

    (3)导出头文件

            基于链接的方式
            ln -sv /path/.../include  /usr/include/NAME
            
            很多编译器使用 -i 选项来指定额外的头文件目录(你说的库文件)
            修改你自己用户的环境变量文件
            ~/.bash_profile 申明你安装好的lib库进去
            source ~/.bash_profile 这样加载环境变量
            另外PHP程序依赖的库应该可以从该程序的配置文件路径中申明就可以了,不一定需要系统默认路径
            configure --- 参数的时候会指定你的配置文件路径,你的依赖库路径等等

    (4)导出帮助手册

            编辑/etc/man.config文件
            添加一个MANPATH
            编辑/etc/man.config,添加一条:MANTH /path/../man(man1、man8的上一级目录)

rpm安装

1.安装

rpm包管理:安装
    http://172.16.0.1/cobbler/
 rpm -i, --install
 # rpm -i /path/to/rpm_package ...
  -v: 
  -vv:
  -vvv:
  -h: hash, 以#的个数显示安装进度,一个#表示2%的进度;

 --test:仅测试,不真正执行安装过程

 如果存在依赖:
     解决依赖关系
     忽略依赖关系: --nodeps

2.重新安装

     -ivh --replacepkgs
      原来的配置文件不会被覆盖,新安装的配置文件将会重命名为以.rpmnew为后缀的文件;

3.卸载

rpm包管理:卸载
    rpm -e, --erase
    rpm -e package_name
如果卸载被其它程序所依赖的包:
  1、把依赖者一同卸载;
  2、忽略依赖关系;
   --nodeps
  3、不再卸载

4.查询

rpm包管理:查询
 rpm -q

 1.查询所有已经安装的包

 查询所有已经安装的包:rpm -qa

2.查询包的描述信息

 查询包的描述信息:rpm -qi package_name
  Name : bash Relocations: (not relocatable)
  Version : 4.1.2 Vendor: CentOS
  Release : 15.el6_4 Build Date: Thu 18 Jul 2013 09:21:24 PM CST
  Install Date: Wed 12 Feb 2014 09:48:43 AM CST Build Host: c6b10.bsys.dev.centos.org
  Group : System Environment/Shells Source RPM: bash-4.1.2-15.el6_4.src.rpm
  Size : 3139291 License: GPLv3+
  Signature : RSA/SHA1, Thu 18 Jul 2013 09:46:10 PM CST, Key ID 0946fca2c105b9de
  Packager : CentOS BuildSystem <http://bugs.centos.org>
  URL : http://www.gnu.org/software/bash
  Summary : The GNU Bourne Again shell
  Description :
  The GNU Bourne Again shell (Bash) is a shell or command language
  interpreter that is compatible with the Bourne shell (sh). Bash
  incorporates useful features from the Korn shell (ksh) and the C shell
  (csh). Most sh scripts can be run by bash without modification.

3.查询某单个包是否安装

 查询某单个包是否安装:rpm -q package_name

4.查询包安装之后在当前系统生成文件列表

 查询包安装之后在当前系统生成文件列表:rpm -ql package_name

5.查询某文件是哪个包安装生成的

 查询某文件是哪个包安装生成的:rpm -qf /path/to/somefile

6.查询包安装后生成的帮助文档

 查询包安装后生成的帮助文档:rpm -qd package_name

7.查询包安装后生成的配置文件

 查询包安装后生成的配置文件:rpm -qc package_name

8.查询包相关的脚本

 查询包相关的脚本:rpm -q --scripts package_name
  脚本有四类:
   preinstall: 安装前脚本
   postinstall: 安装后脚本
   preuninstall: 卸载前脚本
   postuninstall: 卸载后脚本

9.查询尚未安装的rpm包文件的相关信息

 查询尚未安装的rpm包文件的相关信息:
1..查询安装后会生成的文件列表
  查询安装后会生成的文件列表:rpm -qpl /path/to/package_file 
2.查询其简单描述信息
  查询其简单描述信息:rpm -qpi /path/to/package_file

5.升级

rpm包之升级:
 rpm -U: 升级或安装
 rpm -F:升级
 rpm {-Uvh|-Fvh} /path/to/package_file

 --nodeps:忽略依赖关系
 --force: 强行安装

 注意:不要对内核执行升级操作;
  多版本内核可并存,因此,建议执行安装操作;

6.校验

rpm包管理:校验
 检查包安装后生成的文件是否被修改过;
 rpm -V package_name

       S file Size differs
       M Mode differs (includes permissions and file type)
       5 digest (formerly MD5 sum) differs
       D Device major/minor number mismatch
       L readLink(2) path mismatch
       U User ownership differs
       G Group ownership differs
       T mTime differs
       P caPabilities differ


rpm包管理:检验来源合法性和软件包完整性
 包完整性:通过单向加密机制(md5|sha1)
 来源合法性:通过公钥加密机制(RSA)

 命令:gpg, pgp

 导入制作者的公钥,CentOS发行版的公钥在iso文件中; 
 导入命令:rpm --import /path/to/gpg-key-file

 检查:rpm -K /path/to/package_file
   rpm --checksig /path/to/package_file
   --nosignature: 不检查来源合法性
   --nodigest: 不检查完整性

7.数据库重建

rpm包管理:数据库重建
 数据库:/var/lib/rpm/

 重建:
  rpm --initdb: 初始化
   如果事先不存在一个数据库,则新建之;
  rpm --rebuilddb: 重建
   直接重建数据库,会覆盖原有的库;

8.打包

总结:打包、

yum安装

1.概述
依赖关系:
 程序包管理器的前端工具:yum (Yellowdog Update Modifier)

 自动解决依赖关系:X --> Y --> Z

 文件服务器(共享rpm包):通过yum所支持的文件共享机制将各rpm包通过文件服务共享
  repository: 仓库
   1、各rpm包; 
   2、依赖关系、程序包安装后所能够生成文件列表等元数据文件; 

   ftp, http, nfs, file


 yum客户端:
   1、配置文件:指定各可用的yum仓库;
   2、缓存元数据:yum会到各可用yum仓库获取元数据,并缓存至本地; 
   3、分析元数据:根据具体操作请求完成元数据分析, 可能包括检查依赖关系、文件列表等信息;
   4、执行具体操作:

  客户端配置文件指定对应服务器访问方式:
   ftp ftp://server/path/to/repo
   http http://server/path/to/repo
   nfs nfs://server/nfs_path
   file file:///path/to/repository


 教室的repository: 
  http://172.16.0.1/cobbler/ks_mirror/CentOS-6.5-x86_64/
  http://172.16.0.1/fedora-epel/6/


 yum [options] COMMAND

  check Check for problems in the rpmdb
  check-update Check for available package updates
  clean Remove cached data
  deplist List a package's dependencies
  distribution-synchronization Synchronize installed packages to the latest available versions
  downgrade downgrade a package
  erase Remove a package or packages from your system
  groupinfo Display details about a package group
  groupinstall Install the packages in a group on your system
  grouplist List available package groups
  groupremove Remove the packages in a group from your system
  help Display a helpful usage message
  history Display, or use, the transaction history
  info Display details about a package or group of packages
  install Install a package or packages on your system
  list List a package or groups of packages
  load-transaction load a saved transaction from filename
  makecache Generate the metadata cache
  provides Find what package provides the given value
  reinstall reinstall a package
  repolist Display the configured software repositories
  resolvedep Determine which package provides the given dependency
  search Search package details for the given string
  shell Run an interactive yum shell
  update Update a package or packages on your system
  update-minimal Works like update, but goes to the 'newest' package match which fixes a problem that affects your system
  updateinfo Acts on repository update information
  upgrade Update packages taking obsoletes into account
  version Display a version for the machine and/or available repos.


要使用yum管理应用程序,首先得配置其可用的yum仓库,保存在配置文件中:
 /etc/yum.conf
 /etc/yum.repos.d/*.repo

 配置文件格式:由两段组成,类似windows的ini配置文件
  [main] :主配置段
  [repo] :仓库配置段

 配置repo:
  [repo_ID]
  name=String
  baseurl=仓库的访问路径
  enabled={1|0}
  gpgcheck={1|0}
  gpgkey=公钥文件(可以在本地,也可是服务器端路径)
  cost=定义此仓库开销,默认为1000

[base]
name=CentOS 6.5 X86_64 relase 
baseurl=http://172.16.0.1/cobbler/ks_mirror/centos-6.5-x86_64/
enabled=1
gpgcheck=1
gpgkey=http://172.16.0.1/cobbler/ks_mirror/centos-6.5-x86_64/RPM-GPG-KEY-CentOS-6


2.yum的各命令

1.列出所有可用yum repo

 repolist [all|enabled|disabled]: 列出所有可用yum repo

2.清理缓存

 clean [all|packages|metadata|expire-cache|rpmdb|plugins]: 清理缓存

3.列出rpm包

 list [all|installed|available]: 列出rpm包

4.列出rpm包

 info package_name: 列出包的描述信息

5.列出所有包组

 grouplist: 列出所有包组

6.显示包组信息

 groupinfo "package_group_name":显示包组信息
  

7.三个跟开发相关的包组

   Desktop Platform Development:有图形程序时需安装此组;
   Server Platform Development
   Development Tools

8.安装指定的程序包

 install package_name ...: 安装指定的程序包

9.重新安装指定的程序包

 reinstall package_name ...: 重新安装指定的程序包

10.检查可升级的包

 check-update: 检查可升级的包

11.升级指定的程序包

 update package_name ...: 升级指定的程序包
  现在的版本:x-1.2.1, x-1.2.2, x-1.2.3
  要升级到指定版本:yum update x-1.2.2

12.降级

 downgrade package_name:降级

 erase|remove package_name ...:

13.查询某文件是由哪个包安装生成的 

 whatprovides|provides /path/to/somefile: 查询某文件是由哪个包安装生成的 

14.安装指定的包组

 groupinstall "group_name":安装指定的包组

15.卸载指定的包组

 groupremove "group_name": 卸载指定的包组

16.安装本地包

 安装本地包:
  install /path/to/package_file
   手动禁止检查来源及完整性:--nogpgcheck
    yum install /tmp/zsh-2.3.1-2.el6.x86_64.rpm --nogpgcheck

提示:如果系统为CentOS 5,常用的开发包组为“Development Tools”和“Development Libraries”
             CentOS 6,常用的开发包组为“Development Tools”和“Server Platform Development”

练习:安装相关的包组,确保如下命令可执行
 # gcc --version
 gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-4)
 Copyright (C) 2010 Free Software Foundation, Inc.
 This is free software; see the source for copying conditions. There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


yum配置文件中可用的四个宏:
 $releasever: 程序的版本,对Yum而言指的是redhat-release版本;只替换为主版本号,如RedHat 6.5,则替换为6; 
 $arch: 系统架构
 $basearch: 系统基本架构,如i686,i586等的基本架构为i386;
 $YUM0-9: 在系统中定义的环境变量,可以在yum中使用;

 获取当前系统相应宏替换结果的办法:
  # python
  Python 2.6.6 (r266:84292, Nov 22 2013, 12:16:22) 
  [GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2
  Type "help", "copyright", "credits" or "license" for more information.
  >>> import yum,pprint
  >>> yb = yum.YumBase()
  >>> pprint.pprint(yb.conf.yumvar,width=1)
  Loaded plugins: fastestmirror, refresh-packagekit
  {'arch': 'ia32e',
   'basearch': 'x86_64',
   'releasever': '6',
   'uuid': 'ea249181-2f82-4c40-8c42-d51b3fce319a'}
  >>> quit()

 [fedora-epel]
 name=Fedora Community EPEL
 baseurl=http://172.16.0.1/fedora-epel/6/x86_64/
 enabled=1
 gpgcheck=0

 [fedora-epel]
 name=Fedora Community EPEL
 baseurl=http://172.16.0.1/fedora-epel/$releasever/$basharch/
 enabled=1
 gpgcheck=0


总结:yum --> yum repository
 yum: /etc/yum.conf, /etc/yum.repos.d/*.repo



yum repository: 文件服务器

 repodata/:
  repomd.xml: 

测试实现yum repository的配置:
 1、准备文件服务器;使用httpd为例,请事先确保已经安装httpd程序包;
 2、在/var/www/html目录,使用一个目录来保存准备制作成为yum仓库的所有rpm包;
   # cd /var/www/html
  # lftp 172.16.0.1/pub/Sources/6.x86_64
  # lftp: > mirror openstack
  # bye
 3、创建yum仓库
  # rm -rf /var/www/html/openstack/repodata
  # createrepo /var/www/html/openstack
 4、启动httpd服务
  # service httpd start
 5、配置使用自建的yum仓库
  [openstack]
  name=Openstack Repository
  baseurl=http://172.16.100.7/openstack/
  enabled=1
  gpgcheck=0 
 6、配置好epel的yum源
 7、测试使用
  # yum install openstack-keystone




转载于:https://www.cnblogs.com/linux777/p/10779536.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值