Linux系统下用什么工具做安装包?

Linux系统下用什么工具做安装包?,第1张

【享】linux安装程序

初者都知道何linux安装程序面简单说

Linux系统安装软件见两种:

种软件源代码您需要自手编译种软件安装包通用gzip压缩tar包(缀名.tar.gz)

另种软件执行程序要安装种软件安装包通RPM包(RedHat Linux Packet ManagerRedHat软件包管理器)缀名.rpm 用RPM格式打包源代码、用gzip压缩执行套装程序要您理解思路两种形式安装包

源代码编译安装

Linux软件源代码发指提供该软件所程序源代码发布形式需要用户自编译执行二进制码并进行安装其优点配置灵随意掉或保留某些功能/模块适应种硬件/ *** 作系统平台及编译环境;缺点难度较般适合初者使用

各软件源代码包般都各软件项目主页提供载例:等

1.*.src.rpm形式源代码软件包

安装:

rpm -rebuild *.src.rpm

cd /usr/src/dist/RPMS

rpm -ivh *.rpm

卸载:

rpm -e packgename

说明:rpm --rebuild *.src.rpm命令源代码编译并/usr/src/dist/RPMS二进制RPM软件包再安装该二进制包即Packgename前所述

2.*.tar.gz/*.tgz/*.bz2形式源代码软件包

tar.gz或tgz或tar.bz2等格式结尾软件包般都源代码式发布软件安装类软件首先需要软件进行解压:

# tar zxvf filename.tar.gz

# tar xvfz filename.tgz

# tar xvf j filename.tar.bz2

解压进入解压目录:

# cd filename/

于类文档见安装步骤:配置、编译安装3步其麻烦配置所软件安装相关配置都步指定:比软件安装位置等

配置:./configure

编译:make

安装:make install

卸载:make uninstall 或手删除

说明:建议解压先阅读说明文件(ReadMeInstall)解安装需求必要需改编译配置些软件包源代码编译安装用make uninstall命令进行卸载提供功能则软件卸载必须手进行由于软件能文件散安装系统目录往往难删除干净应该编译前进行配置指定软件要安装目标路径:./configure --prefix=目录名使用rm -rf 软件目录名命令进行干净彻底卸载与其安装式相比需要用户自编译安装难适合于使用Linux已定经验般推荐初者使用

RPM格式软件包安装

RPMRedHat公司发软件包管理器使用容易RPM形式软件包进行安装、升级、卸载、验证、查询等 *** 作安装简单卸载软件安装处目录文件删除干净推荐初者尽能使用RPM形式软件包软件包往往特定命令规范名字由文件名+版本号+.rpm组字串例apache-3.1.12-i386.rpmapache-devel-3.1.12-i386.rpm软件包名称别apacheapache-devel各支持RPM格式Linux见软件RPM包网站rpmfind.net找

1.安装

命令格式:

rpm-i(or--install) options file1.rpm ... fileN.rpm

参数:

file1.rpm...fileN.rpm指要安装RPM包文件名

详细选项:

-h(or—hash)安装输hash记号;test安装进行测试并实际安装;--percent百比形式输安装进度;--excludedocs安装软件包文档;--includedocs安装文档;--replacepkgs强制重新安装已经安装软件包;--replacefiles替换属于其软件包文件;--force忽略软件包及文档冲突;--noscripts运行预安装安装脚本;--prefix NEWPATH软件包安装由NEWPATH指定路径;--ignorearch校验软件包结构;--ignoreos检查软件包运行 *** 作系统;--nodeps检查依赖性关系;--ftpproxy HOST用HOST作FTP代理;--ftpport PORT指定FTP端口号PORT

通用选项:

-v显示附加信息;-vv显示调试信息;--root DIRECTORY让RPMDIRECTORY指定路径作根目录预安装程序安装程序都安装目录;--rcfile FILELIST设置rpmrc文档FILELIST;--dbpath DIRECTORY设置RPM资料库所路径DIRECTORY

2.删除

命令格式:

rpm -e(or--erase) options pkg1 ... pkgN

参数:

pkg1...pkgN:要删除软件包

详细选项:

--test执行删除测试;--noscripts运行预安装安装脚本程序;--nodeps检查依赖性

通用选项:

-vv显示调试信息;--root DIRECTORY让RPMDIRECTORY指定路径作根目录预安装程序安装程序都安装目录;--rcfile FILELIST设置rpmrc文档FILELIST;--dbpath DIRECTORY设置RPM资料库所路径DIRECTORY

3.升级

命令格式:

rpm -U(or--upgrade) options file1.rpm ... fileN.rpm

参数:

file1.rpm...fileN.rpm指软件包名字

详细选项:

-h(or—hash)安装输hash记号;—oldpackage允许旧版本;--test进行升级测试;--excludedocs安装软件包文件;--includedocs安装文件;--replacepkgs强制重新安装已经安装软件包;--replacefiles替换属于其软件包文件;--force忽略软件包及文件冲突;--percent百比形式输安装进度;--noscripts运行预安装安装脚本;--prefix NEWPATH软件包安装由NEWPATH指定路径;--ignorearch校验软件包结构;--ignoreos检查软件包运行 *** 作系统;--nodeps检查依赖性关系;--ftpproxy HOST用HOST作FTP代理;--ftpport HOST指定FTP埠号HOST

通用选项:

-v显示附加信息;-vv显示调试信息;--root DIRECTORY让RPMDIRECTORY指定路径作根目录预安装程序安装程序都安装目录;--rcfile FILELIST设置rpmrc文件FILELIST ;--dbpath DIRECTORY设置RPM资料库所路径DIRECTORY

4.查询

命令格式:

rpm -q(or--query) options

参数:

pkg1...pkgN:查询已安装软件包

详细选项:

-p PACKAGE_FILE查询软件包文件;-f FILE查询FILE属于哪软件包;-a查询所安装软件包;--whatproVides CAPABILITY查询提供CAPABILITY功能软件包;-g group查询属于group组软件包;--whatrequires CAPABILITY查询所需要CAPABILITY功能软件包

选项:

-i显示软件包概要信息;-l显示软件包文件列表;-c显示配置文件列表;-d显示文件列表;-s显示软件包文档列表并显示每文件状态-;-scripts显示安装、卸载、校验脚本;--queryformat(or--qf)用户指定式显示查询信息;--dump显示每文件所已校验信息;--proVides显示软件包提供功能;--requires(or-R)显示软件包所需功能

通用选项:

-v显示附加信息;-vv显示调试信息;--root DIRECTORY让RPMDIRECTORY指定路径作根目录预安装程序安装程序都安装目录;-rcfile FILELIST设置rpmrc文件FILELIST;--dbpath DIRECTORY设置RPM资料库所路径DIRECTORY

5.校验已安装软件包

命令格式:

rpm -V(or--verify,or-y) options

参数:

pkg1...pkgN要校验软件包名

软件包选项:

-p PACKAGE_FILE校验PACKAGE_FILE所属软件包;-a校验所软件包;-g group校验所属于组group软件包

详细选项:

--noscripts运行校验脚本;--nodeps校验依赖性;--nofiles校验文档属性

通用选项:

-v显示附加信息;-vv显示调试信息;--root PATH让RPMPATH指定路径做根目录预安装程序安装程序都安装目录;--rcfile FILELIST设置rpmrc文件FILELIST;--dbpath DIRECTORY设置RPM资料库所路径DIRECTORY

6.校验软件包文件

语:

rpm -K(or--checksig) options file1.rpm...fileN.rpm

参数:

file1.rpm...fileN.rpm软件包文件名;Checksig--详细选项;--nopgp校验PGP签名

通用选项:

-v显示附加信息;-vv显示调试信息;--rcfile FILELIST设置rpmrc文件FILELIST

7.其RPM选项

--rebuilddb重建RPM资料库;--initdb创建新RPM资料库;--quiet尽能减少输;--help显示帮助文件;--version显示RPM前版本

喜欢字符接口安装或卸载些软件包完全安装基于X-Window图形接口软件包管理程序glint, xrpm图形接口或使用KDEKPackage(单击【始】→【运行命令】其输入KPackage即启KPackage)等软件包安装、升级、卸载、验证查询通单击鼠标轻松完图所示

 需要注意每RPM软件包格式软件并定独立各RPM软件包间定依赖关系删除某RPM软件包能导致别软件能使用升级删除应该注意

本载安装linux发现版本都几百兆我觉系统都没款点软件能用或者说用起问题啊我直觉安装包越越

这两天给 Kreogist µ 打 Arch Linux 包,照着 wiki 跟着搞,同时在肥猫和 Wicast C 及暴君还有 jimmy66 等强力大腿及小伙伴的支持下,几番折腾终于打好了,也算是入了个门。

搞完过来发现也算简单,总体来说其实就是一个 PKGBUILD 文件的编写。就着给 µ 打的这个包写个简单指南。在写的时候实在太不知道怎么写的地方还可以直接参考一下其他软件包的 PKGBUILD 是怎么写的我才不会说呢。

编写 PKGBUILD

在最开头,复制一份原型: /usr/share/pacman/PKGBUILD.proto(同目录下也有其他特别类型的原型),之后就从这个文件开始编写啦。

先读完文件开头那段注释,然后删掉它~

Maintainer

最开头一行注释是维护者的信息,按照它提供的格式填写上有效的信息即可。

pkgname

软件包的名字。只能用 小写字母、数字和@ . _ + - 这些字符,且不允许用.或者-作开头。

另外不要和 AUR 甚至是官方仓库里面的软件包重名了(´・ω・`)

pkgver

软件包的版本,就是你打包的那个软件的版本。可以使用数字和小数点,以及其它字符。进一步的规则可参考:VCS package guidelines - ArchWiki

pkgrel

软件包发行号,一般设为 1,如果你因为某些原因给同版本号的软件进行反复打包,那么每次打包的时候 pkgrel 就应该在原基础上递增一个数字,而在打包新的版本的时候,应该重新设为 1。

epoch

强行干涉包的新旧关系,拥有更大的 epoch 值的包会被认做更新的包(此时无视版本号),可以用在如版本号风格改变等需要的时候。默认值为 0,取值为正整数。一般不会用到。

pkgdesc

软件包的描述信息,最好一句话,且不包含软件的名字。

arch

表示支持的 Arch Linux 的架构,比如 i686、x86_64,如果包与平台无关的话就填 any。

url

与软件包相关的链接,一般是项目首页什么的。

license

软件发布协议,如果是常见的 GPL 的话可以对照下面填写:

(L)GPL - (L)GPLv2 及更新版本。

(L)GPL2 - 仅 (L)GPL2

(L)GPL3 - (L)GPL3 及更新版本

depends

这是非常重要的一项,需要正确填写上软件的依赖。

对于直接发布可执行程序的话,可以通过 ldd 来看程序连接了哪些库文件,结合搜索判断出具体依赖是什么软件包。你可以用谷歌在  上搜索具体库的文件名,一般都能够找到对应的软件包。

如果你已经用 makepkg 打出了 .tar.xz 的包,也可以用 Namcap 来检查依赖是否存在问题,它会提供一些有用的信息帮助修正依赖。对于他的输出含义可以直接参考 ArchWiki。

多测试多测试,确保依赖真的没问题。

source

构建软件包需要的文件。可以是一个本地文件,也可以是一个远程文件。 makepkg 会在构建包的时候自动下载填写的远程文件,并且会自动解包压缩文件。

md5sums

对应的 source 里面文件的 md5 校验码。

package()

在构架包的时候执行的函数。你需要把安装软件对应的 *** 作写在这里。函数会在一个 fakeroot 环境下执行,对应的 root 目录就是 $pkgdir,比如你有一个可执行文件名为 $pkgname 要安装到 /usr/bin 下面,对应的命令就可以类似这么写:

install -m=775 $pkgname "${pkgdir}/usr/bin"

-m 选项表示目标文件的权限,和 chmod 参数同理。

常用目录

目录

用途

/etc    系统关键配置文件,如果件有多个,应该创建合适的子目录来存放  

/usr/bin    二进制文件  

/usr/lib    库  

/usr/include    头文件  

/usr/lib/{pkg}    模块,插件等  

/usr/share/doc/{pkg}    应用程序文档  

/usr/share/info    GNU Info 系统文件  

/usr/share/man    手册  

/usr/share/{pkg}    程序数据  

/var/lib/{pkg}    应用持久数据  

/etc/{pkg}    {pkg}的配置文件  

/opt/{pkg}    大的独立程序,例如 Java  

/usr/share/applications/    Desktop Entry (.desktop) 文件  

/usr/share/icons/    图标,存在该目录下对应子目录位置  

不该碰的目录:

/dev

/home

/srv

/media

/mnt

/proc

/root

/selinux

/sys

/tmp

/var/tmp

构建/调试包

在 PKGBUILD 所在目录下执行 makepkg 可以构建出对应的软件包,推荐用 namcap 检测一下构建出来的包有没有更显著的问题。

然后你可以用 pacman -U 命令安装它,看看会不会发生什么奇怪的事情,以及软件是否正常等。

当然还有可能因为 PKGBUILD 没写好,直接就报错不干了,这个时候需要顺着错误信息去修正 PKGBUILD。

发布到 AUR

在 PKGBUILD 所在目录执行 makepkg --source,会生成 .src.tar.gz 源码包,这就是需要上传到 AUR 的东西,注意不要把任何二进制文件加入源码包。

在 AUR (Arch User Repository) 注册(登入)帐号。进入 Submit 页面,选择好软件包对应的分类,然后添加源码包上传即可。

即使你是要更新一个包,也只需要直接在 Submit 页面上传,包的信息 AUR 会自己处理。

如果觉得每次上传太麻烦,你可以尝试一下 aurupload 来简化发布。

方法一:使用apt-get安装(centos中是yum)

使用apt-get install来安装应用程序算是最常见的一种安装方法了,比如我要安装build-essential这个软件,使用以下,他会帮我把所有的依赖包都一起安装了。

sudo apt-get install build-essential

apt-get后面接参数:

apt-get install xxx 安装xxx  。如果带有参数,那么-d 表示仅下载 ,-f 表示强制安装

apt-get remove xxx 卸载xxx

apt-get update 更新软件信息数据库

apt-get upgrade 进行系统升级

apt-cache search 搜索软件包

Tips:建议您经常使用“apt-get update”命令来更新您的软件信息数据库

apt-get理论上是要求能够联网,但是如果制作了本地源,就不需要联网,制作本地源可以参考:ubuntu制作本地源

方法二:使用dpkg安装(centos中是rpm)

使用dpkg用来安装deb包。

sudo dpkg -i package.deb

dpkg后面接参数意思:

dpkg -i package.deb    安装包

dpkg -r package    删除包

dpkg -P package    删除包(包括配置文件)

dpkg -L package    列出与该包关联的文件

dpkg -l package    显示该包的版本

dpkg –unpack package.deb    解开 deb 包的内容

dpkg -S keyword    搜索所属的包内容

dpkg -l    列出当前已安装的包

dpkg -c package.deb    列出 deb 包的内容

dpkg –configure package    配置包

方法三:源码编译安装

(./configure)–> 编译(sudo make) –> 安装(sudo make install)。

配置:这是编译源代码的第一步,通过 ./configure 命令完成(图形化可以用cmake-gui来配置)。执行此步以便为编译源代码作准备。常用的选项有 --prefix=PREFIX,用以指定程序的安装位置。更多的选项可通过 --help 查询。也有某些程序无需执行此步。

编译:一旦配置通过,可即刻使用 make 指令来执行源代码的编译过程。视软件的具体情况而定,编译所需的时间也各有差异,我们所要做的就是耐心等候和静观其变。此步虽然仅下简单的指令,但有时候所遇到的问题却十分复杂。较常碰到的情形是程序编译到中途却无法圆满结束。此时,需要根据出错提示分析以便找到应对之策。

安装:如果编译没有问题,那么执行 sudo make install 就可以将程序安装到系统中了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8466141.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-16
下一篇 2023-04-16

发表评论

登录后才能评论

评论列表(0条)

保存