linux包管理

前一章,写了脚本的初步,这一章当然接着说脚本了。标题为啥那么怪呢!因为我们是运维人员,我们不写程序,我们只是程序的搬运工。既然是使用程序那我们必不可少的,需要了解程序的类型,程序的编译,程序的管理。

一 程序的类型

脚本就是程序,只不过这个程序比较特殊。脚本需要使用解释器,每条命令都需要实时翻译为机器指令。还有程序是事先编译好的,用的时候直接拿去执行,直接发送给cpu就可以。除此之外还有一些奇葩的程序,也是当代使用量最多的程序。直接写机器指令的大神直接略过。

1事先编译的程序,这种语言主要是为了解决特别基础常用问题的语言与机器交互最多的程序。这种程序一般都特别能压榨机器的性能,但是他们的书写难度特别大。

首屈一指的是汇编语言,然后是c,c++,go等等

2实时编译的程序,这种程序的性能一般不高,他们生来也不是为写大程序的,而是为了解决实际生活中,遇到的一些重复性的工作。

有python,shell等等

3奇葩的java

Java设计之初就秉承着一个理念,我的程序要运行在所有的平台上。它的主要目的是打通各大平台程序不通用的痛点。因此他要有一个特点,把不同平台的接口打造成同样的接口。基于这个特点,java就制造了一个东西——虚拟机。在虚拟机的内部实现代码执行。那java写的代码,编译的时候就不用基于某种平台编译了,这时它需要把代码编译为可以在虚拟机中可执行的指令就可以了。这也就导致了它的性能不是很好。

二 程序的管理

这半天扯了一堆和我们运维一毛钱关系没有的皮,其实很有用。当我们安装程序的时候,我们首先需要了解我们使用的程序是什么样的,我们才可以更好的利用。

我们要使用一款程序,我们需要怎么办,下载程序的源码包然后编译,好麻烦。回想安装windows程序我基本上都是下一步下一步就按照好了,完全没有编译的过程啊,在linux中也有这种机制,由他人编译好程序,我们直接拿过来放到目录里直接使用。在windows中安装程序时,尤其是windows组件时,我们明明只想装一个程序,但是windows却提示,需要先安装其它程序这个程序才可以运行。

不扯皮了,上干货。Linux中安装程序的方法有三种(简单划分):编译安装,rpm,yum。

1Rpm安装,这种安装使用的是别人编译好的程序,我们下载好后,解压到特定的目录下,然后我们使用。

安装rpm [option] packages
       option的选项
       -v                 显示安装过程
       -h                 显示进度条
       -i                  安装,
       --scripts    我们安装绿色文件的时候需要一些配置,有时安装好后还需要配置,有些rpm包内有一些准备脚本,我们可以强制rpm安装的时候不让脚本运行,脚本分为安装前脚本--nopre,安装后脚本--nopost,一般没有使用的
       -U                升级程序,没有该程序的时候默认安装,一般不推荐升级,最好两个版本并存
       -F                 升级程序,没有不安装
       --replacepkgs           只重装程序,不更改配置文件
       --replacefiles            完全重装程序
       --oldpackages          降级
       -e                               卸载
       --force                       强制安装(慎重)

Windows中的各种管家,管理我们程序的工具太好用了。rpm自带这种功能,它和windows的程序管理程序的机制差不多,没有经过rpm安装的程序,虽然可以使用,但是rpm不知道该程序的存在,这时因为,rpm每安装一个程序都会把该程序的信息保存到/var/lib/rpm/目录下的一个文件中(我不记得哪个了)。查询程序信息的参数

-q                 根据包名可以查出,已安装包的版本信息
       -qa               列出所有的已安装包,配合grep,我们可以熟练的找到我们想要的包
       -ql                列出某个已安装包的所有文件的路径
       -qd               列出已安装包的文档
       -qc               列出已安装包的配置文件
       -p                 列出包(这里的包是包的路径)的信息,与以上几个命令配合使用
       --provides          列出这个包的能力
rpm2cpio 包文件|cpio –itv          预览包内文件
rpm2cpio 包文件|cpio –id          “ *.conf” 释放包内文件

2Yum

yum安装,这种方法安装程序极其特别简单,尤其是在centos7上可以补全安装包名,这很过分,这么强大是怎么做到的。它是基于rpm运行的,也是为了解决rpm安装程序时那个烦人的依赖问题。

Yum是怎么解决包依赖问题的?yum是先把所有的包建一个类似索引的数据库,把某个目录内的所有包的信息存入该目录的子目录repodate中。安装的时候,自动遍历数据库解决依赖问题。然而这还不能满足我们对懒的追求,有时我们需要的包可能来自两个机构不同的网站内,咋整,我们把所有的提供包的网站整理到/etc/yum.repo.d/目录下,安装程序时直接遍历所有的网站。 /etc/yum.repo.d/目录下的文件只要是以.repo结尾都算是配置文件。配置文件的格式如下:

[reponame]
name=
baseurl=
gpgkey=
gpgcheck=
enabled=
cost=

先说安装,yum install packagename [option]这样就可以安装包了。

       Option的选项
       -y                        确认安装
       --disablerepo    临时禁用某个repo
       --enablerepo     临时启用某个repo
       --noplugins       禁用所有插件
       whatprovides     提供该功能的包
       list                       列出包
       seach
       repolist
       groplist
       update
       upgrade
       groupinstall
       groupinfo
       history
       Available,installed,

三 程序的编译

编译是个有大学问,编译方式就分为两种,静态编译和动态编译。首先说静态编译,静态编译是全部的代码都由自己的程序提供,编译后就可以独立运行。动态编译自己只提供一部分代码,这部分代码是基于某几个公共程序写的,这种公共程序比如说加减乘除,这么基础的代码,每次都有自己写多麻烦,并且使用量特别大,我们就把这些程序做成了一个公共程序,放到一个约定好的地方,使用的时候直接调用。

既然有两种编译方式,那个更好。很难说,静态编译的程序性能绝对一流,因为程序运行的时候所有指令都在一个进程中,完全用不到系统调用,系统调用就好比在一个大公司上班,提前预支薪水需要层层审批,小公司天天见领导,知根知底想支钱很容易。但是每个程序的代码都是独立的,代码中难免很多重复的代码。在硬盘中这种情况还不是很明显,到了内存里这个矛盾就比较突出了,动态编译,大家共用同一代码块,内存使用会少很多。

编译前电脑中要安装编译器gcc和与之配套的组件,linux把这个组件命令为Development Tools。

编译程序的流程

1,       解压并进入源码包内
2,       ./configure [option]           option的参数可以通过--help查看参数的使用方法。
3,       make              这一步是执行编译,需要比较多的时间,编译好的文件会生成在当前目录
4,       make install         把编译好的文件,安装到指定的目录
5,       编辑$PATH变量
6,       导出库文件/etc/ld.so.conf.d/name.conf
7,       导出头文件ln -s azdir /usr/lib/dir

总结

管理程序rpm和yum基本上可以满足我们的需求。这一节主要说了,程序的类型,程序编译类型的优缺点,两种包管理工具rpm和yum。

时间: 2024-10-14 22:11:31

linux包管理的相关文章

Linux包管理工具(rpm/dpkg,yum/apt,alien)

概括: rpm/yum  redhat dpkg/apt  debian alien 转换 在 GNU/Linux( 以下简称 Linux) 操作系统中,RPM 和 DPKG 为最常见的两类软件包管理工具,他们分别应用于基于 RPM 软件包的 Linux 发行版本和 DEB 软件包的 Linux 发行版本.软件包管理工具的作用是提供在操作系统中安装,升级,卸载需要的软件的方法,并提供对系统中所有软件状态信息的查询.RPM 全称为 Redhat Package Manager,最早由 Red Ha

Linux包管理命令与Ubuntu下安装nginx的方法

rpm包和deb包是两种Linux系统下最常见的安装包格式,在安装一些软件或服务的时候免不了要和它们打交道.rpm包主要应用在RedHat系列包括 Fedora等发行版的Linux系统上,deb包主要应用于Debian系列包括现在比较流行的Ubuntu等发行版上. 二者对应的安装命令分别为rpm与dpkg. Ubuntu的软件包格式是deb,如果要安装rpm的包,则要先用alien把rpm转换成deb.alien安装与转换命令: sudo apt-get install alien #安装ali

Linux包管理工具

rpm和yum是centos上软件安装比较常用的工具 RPM包管理的用途 1.可以安装.删除.升级和管理软件:当然也支持在线安装和升级软件: 2.通过RPM包管理能知道软件包包含哪些文件,也能知道系统中的某个文件属于哪个软件包: 3.可以在查询系统中的软件包是否安装以及其版本: 4.作为开发者可以把自己的程序打包为RPM 包发布: 5.软件包签名GPG和MD5的导入.验证和签名发布 6.依赖性的检查,查看是否有软件包由于不兼容而扰乱了系统: RPM的使用权限: RPM软件的安装.删除.更新只有r

Linux 包管理工具之RPM详解

讲到包管理工具,先来了解下应用程序接口 (API)与应用程序二进制接口 (ABI). API: 编程接口 Application Program Interface 换句话说也就是你编写"应用程序"时候调用的函数之类的东西.对于内核来说,它的"应用程序"有两种:一种是在它之上的,用户空间的真正的应用程序,内核给它们提供的是系统调用这种接口,比如 read(2),write(2):另一种就是内核模块了,它们和内核处于同一层,内核给它们提供的是导出的内核函数,比如 km

Linux 包管理基础:apt、yum、dnf 和 pkg

介绍 大多数现代的类 Unix 操作系统都提供了一种中心化的机制用来搜索和安装软件.软件通常都是存放在存储库中,并通过包的形式进行分发.处理包的工作被称为包管理.包提供了操作系统的基本组件,以及共享的库.应用程序.服务和文档. 包管理系统除了安装软件外,它还提供了工具来更新已经安装的包.包存储库有助于确保你的系统中使用的代码是经过审查的,并且软件的安装版本已经得到了开发人员和包维护人员的认可. 在配置服务器或开发环境时,我们最好了解下包在官方存储库之外的情况.某个发行版的稳定版本中的包有可能已经

linux 包管理

1:rpm 包管理 1:包文件名说明  httpd-2.2.15-45.el6.centos.x86_64.rpm httpd:软件名称,2.2.14:软件版本2为主版本后面的2为次版本号     45:为重复编译次数            el6.centos.x86_64:适用系统平台为enterprise linux6,centot       rpm:为包格式 2:rpm 包安装后,该软件的相关信息会被写入/var/lib/rpm,的这个数据库中. 3:相关的安装路径 二进制程序:/bi

Linux包管理 rpm yum

程序包管理       内核功能:进程管理   内存管理  网络协议栈  驱动程序            包管理器  : 打包  ,包管理 (安装,升级,卸载,查询及校验)          deb     debian            rpm     redhat   (redhat package manager)                rpm is package manager                     程序包的组成部分            二进制程序:  

Linux包管理rpm,yum

RPM软件包管理器 英文原义:RPM Package Manager, 一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中. rpm使用格式: 安装:rpm {-i|--install} [install-options] PACKAGE_FILE ... -i:--install安装: -v: --verbose显示详细安装过程: -h: 显示进度: 升级:rpm {-U|--upgrade} [install-options] PACKAGE_FILE ... rpm {-

用于 ‘Suse‘ Linux 包管理的 Zypper 命令大全

SUSE( Software and System Entwicklung,即软件和系统开发.其中‘entwicklung‘是德语,意为开发)Linux 是由 Novell 公司在 Linux 内核基础上建立的操作系统.SUSE Linux 有两个发行分支.其中之一名为 openSUSE,这是一款自由而且免费的操作系统 (free as in speech as well as free as in wine).该系统由开源社区开发维护,支持一些最新版本的应用软件,其最新的稳定版本为 13.2.