本文共 6959 字,大约阅读时间需要 23 分钟。
liunx安装软件 1、rpm 2、yum(dnf) 3、编译安装
我用的是centos7系统系统必转rpm工具首先有两个操作 关闭防火墙 :systemctl disable firewalld 和关闭seliunx :sed -i 's/SELINUX=disabled/SELINUX=disabled=enforcing/'包安装
rpm {-i|--install} [install-options] PACKAGE_FILE… -v: verbose -vv:(更详细) -h: 以#显示程序包管理执行进度 [install-options] --test: 测试安装,但不真正执行安装,即dry run模式 --nodeps:忽略依赖关系 --replacepkgs | replacefiles --nosignature: 不检查来源合法性 --nodigest:不检查包完整性 --noscripts:不执行程序包脚本 %pre: 安装前脚本 --nopre %post: 安装后脚本 --nopost %preun: 卸载前脚本 --nopreun %postun: 卸载后脚本 --nopostun rpm {-U|--upgrade} [install-options] PACKAGE_FILE... rpm {-F|--freshen} [install-options] PACKAGE_FILE... upgrade:安装有旧版程序包,则“升级” 如果不存在旧版程序包,则“安装” freshen:安装有旧版程序包,则“升级” 如果不存在旧版程序包,则不执行升级操作 rpm -Uvh PACKAGE_FILE ... rpm -Fvh PACKAGE_FILE ... --oldpackage:降级 --force: 强制安装 包查询 rpm {-q|--query} [select-options] [query-options] [select-options] -a:所有包 -f:查看指定的文件由哪个程序包安装生成 -p rpmfile:针对尚未安装的程序包文件做查询操作 --whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供 --whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖 rpm2cpio 包文件|cpio –itv 预览包内文件 rpm2cpio 包文件|cpio –id “*.conf” 释放包内文件 [query-options] --changelog:查询rpm包的changelog -c:查询程序的配置文件 -d:查询程序的文档 -i:information -l:查看指定的程序包安装后生成的所有文件 --scripts:程序包自带的脚本 --provides:列出指定程序包所提供的CAPABILITY -R:查询指定的程序包所依赖的CAPABILITY 包卸载: rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ... 当包卸载时,对应的配置文件不会删除, 以FILENAME.rpmsave形式保留 包校验 rpm {-V|--verify} [select-options] [verify-options] 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-指向(2)路径不匹配 U User ownership differs-用户拥有不同 G Group ownership differs-组用户不同T mTime differs-内容被改变 P capabilities differ-能力不同rpm -V packagename 可以看到如上对应的每一个被修改的参数。 实验:假设系统没有装一款工具 首先准备号工具的编译好的包 rpm -ivh 对应包在系统内位置 (即完成包的安装) 假设最小化安装系统,之际预装了rpm工具,需要准备所有需要的包执行对应的: rpm -ivh packagename ... 总结:对多款工具软件,和有依赖的包,安装过于麻烦YUM: Yellowdog Update Modifier,rpm的前端程序,可解决软件包相关依赖性,可在多个库之间定位软件包,up2date的替代工具
yum repository: yum repo,存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下) 支持文件服务器:1、:// yum客户端配置文件:/etc/yum.conf:为所有仓库提供公共配置/etc/yum.repos.d/*.repo:为仓库的指向提供配置 yum为所有仓库提供公共配置vim /etc/yum.config[main] cpu架构 版本号cachedir=/var/cache/yum/$basearch/$releasever 缓存目录 keepcache=0 是否保存缓存 0不保存 debuglevel=2 调试用的 logfile=/var/log/yum.log 日志目录 exactarch=1 精确匹配yum obsoletes=1 过时包 gpgcheck=1 检查合法性完整性 plugins=1 插件 installonly_limit=5 最多并同时执行5个 同时只能一个人用 bugftrackel_url=htt :// distroverpkg=centos-release yum仓库 配置文件/etc/yum.repos.d 仓库指向的定义: [repositoryID] 仓库名 name=Some name for this repository baseurl=url://path/to/repository/ 仓库真实路径 enabled={1|0} gpgcheck={1|0} 检查包的完整性和签名 gpgkey=URL 导gpgkey enablegroups={1|0} 启用组 failovermethod={roundrobin|priority}---roundrobin:意为随机挑选,默认值--priority:按顺序访问 cost= 默认为1000 yum的repo配置文件中可用的变量: $releasever: 当前OS的发行版的主版本号 $arch: 平台,i386,i486,i586,x86_64等 $basearch:基础平台;i386, x86_64 $YUM0-$YUM9:自定义变量 yum命令的用法:yum [options] [command] [package ...] yum repolist [all|enabled|disabled]--显示仓库列表: yum list-显示程序包: yum list [all | glob_exp1] [glob_exp2] [...]yum list {available|installed|updates} [glob_exp1] [...]有效|以装|可更 yum install package1 [package2] [...]--安装程序包: yum reinstall package1 [package2] [...] (重新安装) yum update [package1] [package2] [...]--升级程序包: yum downgrade package1 [package2] [...] (降级) yum check-update--检查可用升级: yum remove | erase package1 [package2] [...]--卸载程序包: yum info [...]--查看程序包information: 查看指定的特性(可以是某文件)是由哪个程序包所提供:yum provides | whatprovides feature1 [feature2] [...] 清理本地缓存:清除/var/cache/yum/$basearch/$releasever缓存 yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ] yum makecache --构建缓存:yum search string1 [string2] [...]--搜索: yum deplist package1 [package2] [...]--查看指定包所依赖的capabilities:查看yum事务历史: yum history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats] yum history yum history info 6 yum history undo 6 yum命令--安装及升级本地程序包: yum localinstall rpmfile1 [rpmfile2] [...]--(用install替代) yum localupdate rpmfile1 [rpmfile2] [...]--(用update替代) 包组管理的相关命令: yum groupinstall group1 [group2] [...] yum groupupdate group1 [group2] [...] yum grouplist [hidden] [groupwildcard] [...] yum groupremove group1 [group2] [...] yum groupinfo group1 [...] yum的命令行选项: --nogpgcheck:禁止进行gpg check -y: 自动回答为“yes” -q:静默模式 --disablerepo=repoidglob:临时禁用此处指定的repo --enablerepo=repoidglob:临时启用此处指定的repo --noplugins:禁用所有插件 yum-config-manager 自动生成源 生成172.16.0.1_cobbler_ks_mirror_CentOS-X-x8664.repo yum-config-manager --add-repo= yum-config-manager --disable “仓库名" 禁用仓库 yum-config-manager --enable “仓库名” 启用仓 /etc/ yum.conf(这里我选择了系统自带的配置文件展示) [main] cachedir=/var/cache/yum/$basearch/$releasever keepcache=0 debuglevel=2 logfile=/var/log/yum.log exactarch=1 obsoletes=1 gpgcheck=1 plugins=1 installonly_limit=5 bugtracker_url= set_project.php?project_id=19&ref=distroverpkg=centos-release --(这是备注) -- This is the default, if you make this bigger yum won't see if the metadata -- is newer on the remote and so you'll "gain" the bandwidth of not having to -- download the new metadata and "pay" for it by yum not having correct -- information. -- It is esp. important, to have correct metadata, for distributions like -- Fedora which don't keep old packages around. If you don't like this checking -- interupting your command line usage, it's much better to have something -- manually check the metadata once an hour (yum-updatesd will do this) -- metadata_expire=90m -- PUT YOUR REPOS HERE OR IN separate files named file.repo --in /etc/yum.repos.d /etc/yum.repos.d/base.repo(这是我自己用阿里云简单配置的yum源)[base]name=aliyun basebaseurl=gpgcheck=1gpgkey=enbaled=1 接下里就可以使用yum安装软件了 yum install httpd -y (自动回答yes安装) DNF (DaNdiFied) 配置文件:/etc/dnf/dnf.conf 仓库文件:/etc/yum.repos.d/ *.repo 日志: /var/log/dnf.rpm.log dnf 用法:与yum一致 man dnf dnf [options] <command> [<arguments>...] dnf --version dnf repolist dnf clean all dnf makecache dnf list installed dnf list available dnf search nano dnf history dnf history undo 1 (不做赘述,自我理解)
源代码-->预处理-->编译-->汇编-->链接-->执行
例:对单个c文件编译 拿到c源代码,使用gcc编译成二进制文件,最后运行 gcc file.c -o file 实验:实验开始前我用yum装了yum install gcc ncuress-devel 准备cmatrix-1.2a.tar.gz源码包放入/data下(在一个分区一个路径下操作) 1、tar xvf cmatrix-1.2a.tar.gz 解包 cd cmatrix-1.2a --这时里面会有 README(软件说明) INSTALL(安装教程) (这里软件内部有开发人员提供的configure工具直接对源码包的所有c文件编译--configuer --help 可以看到软件多个特性和怎么设置特性 2、.configure --prefix=/apps/cmatrix (我只定义了安装位置方便卸载) (这里会出提示你有未安装的包-我前面安装过了) 安装包过后 3、make --这里可以针对cpu情况使用 make -j cpu核数 加快编译 (如果出错安装包过后执行不了make删除包从头来过这时并没有生成一些其他文件)--make工作原理: 用 Makefile 部署需要在内部定义安装路径和多个特性configure脚本定义特性借助模板文件Makefile.in生成Makefile 4、make install 5、bash cmatrix --运行 --也可以加入PATH变量直接使用: echo 'PATH=/apps/cmatrix/bin:$PATH' >> /etc/profile.d/cmatrix.sh . /etc/profile.d/cmatrix.sh 卸载(因为只指定了一个安装位置,所以卸载方便) rm -rf /apps/cmatrix rm -rf /data/cmatrix-1.2a转载于:https://blog.51cto.com/14230286/2368240