在 Linux 下建立软体套件

上传人:飞*** 文档编号:5578844 上传时间:2017-09-06 格式:DOC 页数:14 大小:52.50KB
返回 下载 相关 举报
在 Linux 下建立软体套件_第1页
第1页 / 共14页
在 Linux 下建立软体套件_第2页
第2页 / 共14页
在 Linux 下建立软体套件_第3页
第3页 / 共14页
在 Linux 下建立软体套件_第4页
第4页 / 共14页
在 Linux 下建立软体套件_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《在 Linux 下建立软体套件》由会员分享,可在线阅读,更多相关《在 Linux 下建立软体套件(14页珍藏版)》请在金锄头文库上搜索。

1、在 Linux 下建立软体套件作者:佚名 阅读人次:853 文章来源:未知 发布时间:2005-11-3 网友评论(3)条这是份广泛指引文件,可用来建立一般性 UNIX 软体发行套件在 Linux 下. 1. 简介 很多软体套件提供给各式 UNIX, 包括 Linux, 是将原始码档案压缩成档 案(archives)而发行的. 相同的套件可以建立以便在不同对象的机器上执行, 并 且这可节省些软体成品而免於必须制造各种发行版本. 软体套件的单一发行版本 结果能执行在各式实体(incarnations), 像是在 Intel 机器, DEC Alpha, RISC 工作站, 甚至是电算主机. 但不

2、幸的是, 这将建立软体的工作推给了最终使用 者(end user), 实际上是系统管理者, 即坐在键盘前的同志.你. 虽然这样, 认真来说这过程并不是像它看起来那麽可怕或不可思议, 就像这指引所解说一 样. 2. 从取得开始 你有下载或其它方式取得一个软体套件. 最常见情况是它被打包起来 (tarred) 而且被压缩 (gzipped), 成为 .tar.gz 或 .tgz 形式. 首先将它复制到一工作目 录. 然後用 untar 和 gunzip 处理它. 处理它最适合的命令是 tar xzvf filename, 这的 filename 当然是软体档名. 这种解开程序常常会安装适当档 案在

3、它所开启的子目录中. 注意的是如果套件名称有 .Z 结尾, 那将要使用 uncompress PACKAGENAME, 然後再用 tar xvf PACKAGENAME 而不要用之前的步 骤. 有时打包起来的档案必须 untarred 且安装自使用者的家目录(home directory), 或者也许是在某个其它目录, 像是套件设定资料所指定的. 假若你 设法要 untar 它而得到的是错误讯息, 也许就是那原因. 读一下套件文件, 特别 是 README 和/或 Install 档案, 如果存在, 编辑设定档案和/或 Makefiles 如 所需要的, 即与安装指示符合. 注意的是通常 不

4、去更改 Imake 档案, 因为这可 能有未预期的结果. 某些软体套件允许自动安装程序,它是藉由执行 make install 来放置二元码在适当系统位置. 偶而, 你可能需要使用 patch 档案,该档案有列出原本的与新的原始档案的差异, 来升级或加入臭(bug)的修正至未打包(unarchived)的原始档案. doc 档案与/或 README 档案会告知你这算不算该情况. 对於使用 Larry Wall 的强力 修 补(patch) 工具之正常的语法(syntax)是 patch libX11.so.3.1.0. 大概软体也需要这个形式连结 libX11.so - libX11.so.3

5、.1.0. 当然, 要将这断掉(missing)的连结建 好, 要以 root 身分使用这指令 ln -s libX11.so.3.1.0 libX11.so. * 某些套件会要求你去安装一个或以上的升级版本. 举例而言, StarDivision GmbH 的 StarOffice 组件(suite)是恶名昭彰(notorious)的要求 libc version 5.4.4 或更新. 以 root 身分, 你需要复制一个或以上的函式 库(libraries)至合适的目录, 删去旧的函式库(libraries),然後重设符号连 结. 小心: 在这要格外注意, 因为如果你弄糟, 你可能会付出你

6、的系统不能 运作的代价. 你通常可以找到升级的函式库(libraries)在 5Sunsite. 在 Linux 下建立软体套件作者:佚名 阅读人次:854 文章来源:未知 发布时间:2005-11-3 网友评论(3)条4.2 其它问题 * 在安装好的 Perl 或 shell script 给你一个 No such file or directory 错误讯息. 在这情况,检查档案权限来确定档案可执行 以及检查档案标头是 否含有使用 shell 或程式, 指明 script 所在地方. 举例而言, script 开 始如: #!/usr/local/bin/perl 如果 Perl 实际装在

7、你的 /usr/bin 目录, 而不是 /usr/local/bin 目录, 那麽 script 无法执行. 有两个方法来修改. script 档案标头改成 #!/usr/bin/perl, 或用符号连结至正确的目录, ln -s /usr/bin/perl /usr/local/bin/perl. * 某些 X11 软体要求有 Motif 函式库(libraries)才能建立. 而标准的 Linux 发行套件并没有安装 Motif libraries, 而且目前 Motif 还要额外 $100-$200 的花费 (虽然免费软体 6Lesstif 在某些场合也能够用). 如果 你需要 Moti

8、f 来建立某一套件, 但缺少 Motif libraries, 那麽也许可以取 得 静态连结的二元码(statically linked binaries). 静态连结在二元码本 身纳入函式库行程(library routines). 这造成二元码档案大了许多, 但是 码可在缺少该函式库的系统上执行. * 执行 configure script 会创造奇怪的 Makefile, 那像是与你所要设法建立 的套件亳不相干. 这表示跑著错误的 configure, 其找到你的 path 上某处 其他的 configure. 所以要下 configure 指令 应该要下成 ./configure 即

9、目前目录下的. * 某些程式会要求有 setuid root, 为了要以有 root 权力 来执行. 要达成这 目录的指令是 以 root 下指令 chmod u+s filename. (注意的是这程式已经 是 root 所拥有了). 这在设定档案权限中的 setuid bit 很有用. 这样用在 当程式在存取系统硬体,像是 modem 或 CD ROM drive, 或当 SVGA libs 被 使在於主控台模式(console mode), 像是在一个特别恶名昭彰 的(notorious)模拟器(emulation)套件. 如果程式正被 root 执行, 但给一 般使用者一个 acces

10、s denied 的错误讯息, 想像就是这样造成的. 警告: 一个有 setuid 成 root 的程式可能提出对你的系统有安全上的风 险. 这个程式可以 root 权力来跑而所以有某些破害的潜在性. 在设定 setuid bit 前, 确定你知道该程式在做什麽, 必要时看一下原始码. 4.3 旋扭与微调 你可能希望检查 Makefile 来确定有选用对你系统最佳编译选项. 举例来说, 设 定 -O2 旗标来选最高层级的最佳化而 -fomit-frame-pointer 旗标来造最小二元 码 (虽然 debugging 会没有打开). 除非你知道你在做什麽, 而且在任何情况 下, 除非艰苦建立

11、的工作已完成, 否则不要玩这些. 4.4 去哪取得进一步的协助 在我的经验, 大概 25%的应用程式建立完全没有困难. 另外大约 50%能被说服 的建立, 要付出努力的围从无聊到极为困难. 那仍然表示有某些套件无论如何 都无法建立. 即使那样, 那些 Intel ELF 和/或 a.out 二元码, 也可能在 7Sunsite, 8TSX-11 archive 或其它地方找到. 也许, 软体的创造者可以提 供编译好的二元码给你的特别的机器使用. 注意的是如果你取得预先编译好的二元码, 你会需要检查是否与你的系统相容: * 这二元码必须在你的 硬体上跑 (i.e., Intel x86). *

12、这二元码必须与你的核心(kernel)相容 (i.e., a.out 或 ELF). * 你的函式库(libraries)必须是最新的. 如果全都失败, 你可以在合适的 新闻群组寻求帮忙, 像是在 9comp.os.linux.x 或 10comp.os.linux.development. 万一你只是不够幸运 的话, 嘿, 试试也是有趣的. 5. 最後步骤 读一下软体套件的文件来决定是否有某些环境变数需要设 (在 .bashrc 或 .cshrc) 以及 是否 .Xdefaults 和 .Xresources 档案需要调整. 可能有个应用程式内定的档案, 通常叫做 Xfoo.ad 在原本的

13、Xfoo 发行套件. 如 果这样, 编辑 Xfoo.ad 档案适合你的机器, 然後重新命名 (mv) 成 Xfoo 而且 以 root 身分 安装它到 /usr/lib/X11/app-defaults 目录, 没这样做可能会造 成软体行为很奇怪, 甚至拒绝执行. 大多数的软体套件附有一个或以上的格式化 man pages. 以 root 身分, 复制 Xfoo.man 档案到合适的 /usr/man 目录 (man1 - man9), 而根据那再重新命名. 举例而言, 如果 Xfoo.man 结果是在 /usr/man/man4, 那应该命名为 Xfoo.4 (mv Xfoo.man Xfo

14、o.4). 根据一般约定使用者的命令摆在 man1, 游戏是在 man6, 而管理的套件是在 man8 (看一下 man 文件 以取得更详细资料).当然,在 你系统你可以不照这个约定, 只要你喜欢. 某些套件不会安装二元码(binaries)在合适的系统目录, 换句话说, 他们没有 install 选项在 Makefile 中. 如果是这情况, 你可以用 root 身分复制二元 码(binaries)到 usr/local/bin 目录来手动安装二元码(binaries). 注意的是某些或全部上述步骤,在大部分情形下,应该会由 make install 来自动 操作. 如果是这样, READM

15、E 或 INSTALL 文件档会提到这个. 6. 第一个例子: Xscrabble Matt Chapman 的 Xscrabble 似乎像是个颇有趣的程式, 因为我曾是个贪婪的 Scrabble(TM)(拼字游戏)玩家.我下载下,解压, 而且建立它以 README 档案中的 下列步骤: xmkmf make Makefiles make includes make 当然它不能正常运作. _ gcc -o xscrab -O2 -O -L/usr/X11R6/lib init.o xinit.o misc.o moves.o cmove.o main.o xutils.o mess.o pop

16、up.o widgets.o display.o user.o CircPerc.o -lXaw -lXmu -lXExExt -lXext -lX11 -lXt -lSM -lICE -lXExExt -lXext -lX11 -lXpm -L./Xc -lXc BarGraf.o(.text+0xe7): undefined reference to XtAddConverter BarGraf.o(.text+0x29a): undefined reference to XSetClipMask BarGraf.o(.text+0x2ff): undefined reference to XSetClipRectangles BarGraf.o(.text+0x37

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 研究报告 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号