您的位置:首页 > 移动开发 > Android开发

Ubuntu10.04 64(32)位 android开发环境建立

2011-05-02 11:32 567 查看
无论我们使用哪种操作系统,仅使用操作系统自带的程序包一般都满足不了我们的使用需求,所以我们都需要安装程序。这篇博文我们来讲解一下在Linux操作系统中我们该如何安装程序。 本篇文章会涉及rpm管理程序包、yum管理程序包、yum仓库的指定、自己编译源码安装程序、简要介绍一下该如何自己建立一个yum仓库给其他主机提供程序包。

一、rpm管理程序包 (1)如何获取安装包 1)系统发行版的光盘或者官方的文件服务器(或者镜像站点):http://mirrors.aliyun.com/http://mirrors.163.com/http://mirrors.sohu.com/2)第三方组织:(a)EPEL:社区组织 http://mirrors.kernel.org/fedora-epel/(b)非生产环境下使用的搜索引擎 href="http://pkgs.org/" target=_blank>http://pkgs.org 最好用http://rpmfind.nethttp://rpm.pbone.net (2)rpm管理程序包提供的操作有:安装、升级、卸载、查询和校验、数据库维护使用格式:rpm [OPTIONS] [PACKAGE_FILE]概述: 安装:-i,--install卸载:-e,--erase升级:-U,--update,-F,--freshen查询:-q,--query校验:-V,-verify数据库维护:--builddb,--initdb 1)安装 使用格式:rpm {-i|--install} [install-options] PACKAGE_FILE … 通用选项:-v:详细信息-vv:更详细的信息输出--quiet:尽量少的输出命令的提示信息,一般仅输出错误信息 注:这里的通用选项对以下卸载等操作同样适用
安装选项:-h:hash marks,输出进度条;每个#表示2%的进度;--test:只准备不安装,测试、检查和报告依赖关系和冲突信息等;--nodeps:忽略依赖关系;不建议,因为安装了有可能使用不了; --replacepkgs:重新安装,一般改错了配置文件时可删掉配置文件,重新安装可恢复;--nosignature:不检查包签名信息,不检查来源合法性;--nodigest:不检查包完整性信息; --noscripts:不执行以下四类rpm自带的脚本;--nopre:不执行安装过程开始之前运行的脚本;--nopost:不执行安装过程完成之后运行的脚本;--nopreun: 不执行卸载过程真正开始执行之前运行的脚本;--nopostun:不执行卸载过程完成之后运行的脚本;
2) 升级
使用选项:rpm {-U|--upgrade} [install-options] PACKAGE_FILE ... rpm {-F|--freshen} [install-options] PACKAGE_FILE ...-U:升级或安装;-F:仅升级,仅有指定要安装程序的老版本包时升级。 升级选项: --oldpackage:降低版本; --force:强制升级; 注意:(1)不要对内核做升级操作;Linux支持多内核版本并存,因此,直接安装新版本内核即可 (2)如果某源程序包的配置文件安装后曾被修改过,升级时,新版本程序提供的同一配置文件不会 覆盖原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpmnew)后提供; 3)卸载 使用格式:rpm {-e|--erase} [--nodeps] [--noscripts] [--test] PACKAGE_NAME ... 卸载选项: --allmatches:卸载所有匹配指定名称的程序包的各版本;--nodeps:忽略依赖关系;--test:测试卸载,查看依赖关系。 4)查询 使用格式:rpm {-q|--query} [select-options] [query-options] 挑选选项: PACKAGE_NAME:查询指定的程序包是否已经安装及其版本。-a, --all:查询所有已经安装的包。-f FILE:查询指定的文件由哪个程序包安装生成。 -p, --package PACKAGE_FILE:用于对未安装的程序包执行查询操作(和query-options结合使用)。--whatprovides CAPABILITY:查询指定的CAPABILITY(功能)有那个程序包生成示例: rpm -q --whatprovides 'config(bash)'--whatrequires CAPABILITY:查询指定的CAPABILITY被那个包所依赖 查询选项:
--changelog:查询rpm包的changelog;-l, --list,列出一个包安装生成的所有文件列表。-i, --info:程序包相关的信息,版本号、大小、所属的包组等和 -q 联合使用;-c, --configfiles:查询指定的程序包提供的配置文件;-d, --docfiles:查询指定程序包的帮助文档;--provides:查询指定程序包提供的所有CAPABILITY-R, --requires:查询指定程序包的依赖关系--scripts:查看程序包自带的脚本片段的信息 5)校验 使用格式: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 #MD5码改变 D Device major/minor number mismatch #主次设备不匹配 L readLink(2) path mismatch #readLink路径不匹配 U User ownership differs # 属主改变 G Group ownership differs # 属组改变 T mTime differs # 时间戳改变 P caPabilities differ #功能改变 6)包合法性验证和完整性验证



来源合法性验证:数字签名:包的制作者单向加密程序包的校验码,再用私钥加密程序包的校验码。使用者用公钥可以解密即为来源合法。完整性检验:得出校验码,再把程序包单向加密之后比对,如一致则为完整性合法。 对于CentOS的发行版rpm而言,导入公钥即可]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 验证:(1)安装此组织签名的程序时,会自动执行验证;(2)手动验证: rpm -K PACKAGE_NAME 7)数据库管理rpm管理数据库路径:/var/lib/rpm/查询操作通过此处的数据库进行。 rpm数据库重建:获取帮助:man 8 rpmdb (CentOS 7)rpm {--initdb|--rebuilddb}:--initdb:初始化数据库,当前无任何数据库可初始化创建一个新的;如果有不执行任何操作;--rebuildb:重新构建。通过读取当前系统上所有已经安装过的程序包进行重新创建;二、yum管理程序包 yum是rpm的前台管理程序,可以自动解决rpm无法解决的依赖关系,方便用户的程序包管理
(1)yum的工作机制




首先在本地建立yum命令的仓库配置文件,而后向远程主机的yum仓库申请元数据文件,下载了元数据文件后,将元数据文件缓存在本地,之后安装程序包时可以先查询本地cache,查看依赖关系,之后看对比本地已下载的程序包,从yum仓库下载未下载的程序包至本地,先安装被依赖的程序包,之后安装所需程序包。安装完成后会删除下载的程序包以节约空间,但是缓存在本地的yum仓库元数据不会删除。 (2)建立yum仓库指向配置文件 /etc/yum.repos.d/*.repo:此目录下的自定义文件为仓库的指向提供配置信息 文件内容解释: [repositoryid] --------->此配置文件的唯一标识
name=Some name for this repository -------->名称
baseurl=url://path/to/repository/ -------->yum仓库的位置指向 ftp:// http://
nfs://
file:/// -------->此处的最后一个/为根

enabled={1|0} -------->是否启用此配置文件,1为启用,0为不启用

gpgcheck={1|0} -------->是否执行校验,1为开启,0为不启用

gpgkey=URL -------->指明密钥文件

enablegroups={1|0} -------->是否使用组来划分程序包

cost={1000} -------->开销,默认为1000,当两个yum仓库中拥有同一资源,定 义开销值来决定去哪一个yum仓库下载。

注:此文件中的1、2、3、4、5必须给出,gpgcheck=1则第6项也必须给出。另外更多信息请执行 man 5 yum.conf 查看 另外:yum的repo配置文件中可用的变量: $releasever:当前OS的发现版的主版本号; $arch:平台 $basearch:基础平台 $YUM0-$YUM9: 提供的自定义变量(可在shell环境变量中设置)示例:
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
tips:如何将光盘配置成yum仓库 1 挂载光盘至某目录,例如/media/cdrom#mount -r -t iso9660 /dev/cdrom /media/cdrom 2 创建配置文件
[Base]
name="Centos cdrom repo"
baseurl=file:///media/
enable=0
gpgcheck=0
(3)yum命令 1)显示仓库列表:yum repolist [all | enabled | disabled]

2)显示程序包: yum list [all | glob_exp1] [glob_exp2] [...] yum list available| updates|installed [glob_exp1] […]

3)安装程序包: yum install package1 [package2] [...]

4)重新安装reinstall package1 [package2] [...]

5)升级程序包:update [package1] [package2] [...] 6)降级程序包:downgrade package1 [package2] [...] 7)检查可用升级:check-update

8)卸载程序包:remove | erase package1 [package2] [...]注意:依赖于这个卸载的包的程序也会被卸载;

9)查看程序包信息info [...]

10)查看指定的特性(CAPABILITY)(也可以是某文件)由那个程序提供
注:相当于 rpm -qfprovides | whatprovides feature1 [feature2] [...]


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

12)生成缓存:makecache

13)搜索:search string1 [string2] [...] 以指定关键字搜索程序包名及摘要信息

14)查看指定程序包的依赖关系deplist package1 [package2] [...]

15)查看yum事务历史: history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]

16)包组管理相关命令:* groupinstall group1 [group2] [...] * groupupdate group1 [group2] [...] * grouplist [hidden] [groupwildcard] [...] * groupremove group1 [group2] [...] * groupinfo group1 [...] 用法同上

(4)自己建立一个yum仓库
1)新建一个yum仓库目录,而后在此目录下新建一个Packages的目录,里面放入rpm包。 2)之后在rpm包目录中执行createrepo --basedir=/tmp/myyumrepo/ ./ 此时会在/tmp/myyumrepo/在存在一个repodata目录



3)我们可以在/etc/yum.repo.d/下新建一个仓库指向文件,来验证我们新建的仓库是否可用。
[myyumrepo]
name=myyumrepo
baseurl=file:///tmp/myyumrepo/
enabled=1
gpgcheck=0


注:1、关于校验问题可以自行使用md5单向加密程序包获得特征码,而后再使用私钥加密得到 key文件,之后在yum指向文件中指向这个key文件。 2、如果想让其他人访问到自建的yum仓库,需建立文件服务器。此文对此不做太多涉及。
三、自己编译源码安装程序 前提:1、系统内配置好了编译环境; 通过“包组”提供开发组件 CentOS 6:"Develoment Tools"和"Server Platform Develoment" CentOS 7:"Develoment Tools" 2、下载源码包并解压 (1)编译安装:
这里以httpd的安装为示例
1、configure脚本选项:指定安装位置,指定启用的特性 选项分类: 安装路径设定: --prefix=/PATH/TO/SOMEWHERE:指定默认安装位置,默认为/usr/local --sysconfdir=/PATH/TO/SOMEWHERE:指定配置文件安装位置 注:./configure --help:获取其支持使用的选项

2、make

3、make install

4、查看httpd安装情况

(2)安装后的操作 1)导出二进制程序目录至PATH环境变量中; 编辑文件/etc/profile.d/NAME.sh export PATH=/PATH/TO/BIN:$PATH 2)导出库文件路径 编辑/etc/ld.so.con.d/NAME.conf 添加新的库文件所在目录至此文件 ldconfig [-v] 3)导出头文件 基于链接的方式实现: ln -sv 4)导出帮助手册 编辑/etc/man.config文件 添加一个MANPATH指向自己编译安装的程序包的帮助手册目录
注:此文示例均是在CentOS上做的测试。本文出自 “RoadtoOM” 博客,请务必保留此出处http://flyalways.blog.51cto.com/7680670/1728686
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: