Linux环境学习(Day6)


任务的最后一天了T-T

学习任务5: LPI-5 编译源代码和管理软件包

Part2 从源代码编译到应用程序

假设你拿到一个应用程序想安在系统上,但是没有最新版本的打包格式,只有源代码,这时候就需要从源代码来编译了.
下载
首先下载源代码,可能是.tar.gz、tar.Z、tar.bz2 或 .tgz这种压缩包,安装的程序可能依赖别的程序,先确保其他都安装好了再进行安装。
解压
.tar.gz、.tar.Z 或 .tgz 结尾:
tar xzvf archivename.tar.gz 对xzvf的解释(x 用于解压缩,z 用于 gzip 解压,v 用于显示详细信息 — 打印解压缩的文件名,而 f 意味着文件名将接着在命令行上出现
如果希望验证 tar 包被正确地组装在一起并会创建一个主目录来放源代码,可以这样查看内容:
$ tar tzvf archivename.tar.gz | moret 用于显示压缩文档的文本清单。不进行解压缩)
如果压缩文档清单的左边没有列出公共目录,则要创建一个新的目录,将 tar 包移至该目录下,进入该目录,这时再解压缩这个 tar 包。不这样做的话,你会面对一堆乱麻!

解压bzip2压缩包
.tar.bz2 格式的压缩文档是用bzip2压缩的,这种压缩效果比gzip好得多,唯一的不足之处是压缩和解压缩的速度较慢,并且在运行时, bzip2 比 gzip 消耗更多的内存
因为bzip2越来越受欢迎,所以很多Linux分发版都有经过补丁修正的tar版本,传递一个参数y或者i都可以告诉tar,这是bzip2格式的包,要用bzip2自动解压。
判断是不是有补丁修正过的tar:
在这里插入图片描述
fine~我没有,那就用另一种办法:
bzip2管道
第一步,先看bzip2的内容:
$ cat archive.tar.bz2 | bzip2 -d | tar tvf - | most
第二步,解压内容:
$ cat archive.tar.bz2 | bzip2 -d | tar xvf -
如果解压过程中系统提示找不到bzip2,可能因为你没有装bzip2

检测源代码
解包之后,可以进入主目录查看里面的内容,最好是能找到与安装有关的文档。一般是主源代码目录的 READMEINSTALL 文件,还可以查找 README.platformINSTALL.platform文件,这里的 platform 是您的特定操作系统名称。

配置
现在,许多源代码在主源代码目录中包含配置脚本。这个脚本是用来设置源代码以使它能在你系统上正确编译。这个配置脚本在运行时会探测系统以确定系统性能,然后创建制作文件(Makefile),其中包含在您的系统上构建和安装源代码的指令。
配置脚本几乎总是被命名为configure。如果在主源代码目录中找到配置脚本,那么它可以供你使用。如果没有发现配置脚本,那么你的源代码可能带有一个设计用来跨越不同系统工作的标准制作文件 — 这意味着可以略过以下配置步骤。

使用配置
在运行配置脚本之前,最好是先熟悉它。输入./configure --help,可以查看程序能够使用的所有不同配置选项。你所看到的选项,特别是在 --help 打印输出的顶部列出的那些项,都是几乎可以在每个配置脚本中找到的标准选项。在结尾部分列出的选项通常与您正尝试编译的特定软件包相关。查看它们并注意那些您希望启用或禁用的选项

–prefix选项
大多数基于 GNU autoconf 的配置脚本都有 --prefix 选项来允许您控制程序的安装位置。缺省情况下,大多数源代码安装时都用 /usr/local前缀。这意味着二进制文件最终在 /usr/local/bin 中,手册页则在/usr/local/man 中,等等。/usr/local通常用于存储你自己编译的程序

使用prefix
如果想把源代码安装在别的地方,如果是./usr,则要向配置脚本传递--prefix=/usr,同样如果是/opt,则输入--prefix=/opt

FHS
一个源代码压缩文档可能有许多没有遵守 Linux 文件系统层次结构标准(FHS)的安装路径,好在配置脚本不仅允许更改安装前缀,而且允许我们更改各个系统部件(如手册页)的安装位置
为了使源代码包符合 FHS,你几乎总要向配置命令行添加 --mandir=/usr/share/man--infodir=/usr/share/info

一旦已经检查了各种配置选项并确定了要使用的选项,就可以运行配置脚本了。
运行:

$ ./configure <options>
or
$ ./configure
or
$ ./configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-threads

config.cache
配置完以后,配置脚本把配置数据存在config.cache,这个文件和配置脚本本身都在同一目录中。如果在更新系统配置后需要再次运行 ./configure,请确保执行rm config.cache 命令;否则配置脚本将只使用旧的设置而不重新检查系统

配置脚本和制作文件
配置完脚本,就可以编译运行了,用make来完成,如果软件包含配置脚本,那运行的时候会创建一些定制的文件,文件会告诉make怎么构建源码以及如何安装所产生的二进制文件、手册页和支持文件。

制作文件介绍
每个含有源文件的目录通常都有一个制作文件(makefile),另外主源代码目录中还有一个制作文件。autoconf 生成的制作文件含有确定如何构建某些目标的指示信息(正式名称是规则)。make 指出所有规则运行的顺序

调用make
直接在当前目录输入make即可,make 程序随即将在当前目录中查找并解释名为 makefileMakefile 的文件。如果只输入“make”本身 ,那么它将构建缺省目标。有些 makefile 没有缺省目标,因此要指定一个以使编译得以开始:$ make all

安装
编译好之后还有更重要的就是安装,需要将程序的所有组件从源代码目录复制到文件系统上适当的、“活动的”位置。例如,需要将所有的二进制文件复制到 /usr/local/bin,将所有的手册页安装到 /usr/local/man,等等。
(注意:安装软件以前,要成为 root 用户)

make install
安装源代码比较简单。只需在主源代码目录中输入:# make install
如果没有指定--prefix 选项,则很有可能有相当多的文件和目录将被复制到 /usr/local目录

运行
安装完以后就可以运行了,可以通过输入以下命令来阅读这个程序的手册页:$ man programname,,启动程序:$ programname

可能会遇到的一些问题

  • 遗漏一些库:configure失败,往往是因为某个库没有安装
  • 库太旧了甚至可能太新了,或者系统不匹配


Part3 软件包管理概念

除了源代码安装外,还可以直接安装更新和卸载软件包,与直接从源代码安装相比,软件包管理有明显优势:

  • 易于安装和卸载
  • 易于更新已安装的软件包
  • 保护配置文件
  • 轻松跟踪已安装文件

安装rpm
使用-i命令就可以了,

# rpm -i xsnow-1.41-1.i386.rpm

重装rpm
如果不小心破坏了原来的程序,你可能想重装一下软件,首先得把旧的那个rpm删掉,用rpm -e命令除去,再重新安装,但是卸载的时候可能它跟别的程序有依赖关系,卸不了,那就得->

强制安装rpm
使用--force重新安装

# rpm -ivh --force xsnow-1.41-1.i386.rpm

还有另一个不太推荐的卸载办法:
–nodeps
这一选项取消了 rpm 的内部相关性检查,所以在大多数情况下不推荐使用。然而,它偶尔会有用处:

# rpm -e --nodeps xsnow
# rpm -ivh xsnow-1.41-1.i386.rpm
xsnow                       ##################################################

也可以用来安装软件:

# rpm -ivh --nodeps xsnow-1.41-1.i386.rpm
xsnow                       ##################################################

更新软件包
rpm -U来更新安装:

# rpm -Uvh xsnow-1.42-1.i386.rpm
xsnow                       ##################################################

有一个小窍门:我们几乎不使用 rpm -i,因为如果系统上不存在 rpm,则 ==rpm -U ==会安装一个,如果在命令行指定多个软件包,其中有些软件包当前已安装而有些则没有,那么这一选项会特别有用。

# rpm -Uvh xsnow-1.42-1.i386.rpm xfishtank-2.1tp-1.i386.rpm
xsnow                       ##################################################
xfishtank                   ##################################################

rpm -q
安装rpm需要完整的文件名,但是除去rpm只要文件名称就可以了。这是因为 rpm 维护一个当前已安装软件包的内部数据库,所以可以通过名称来引用安装的软件包

例如,查询 rpm 安装的是什么版本的 Xsnow:

# rpm -q xsnow
xsnow-1.41-1

还可以用 rpm -qi 查询有关 Xsnow rpm 的更多信息:

# rpm -qi xsnow
Name        : xsnow                        Relocations: (not relocateable)
Version     : 1.41                              Vendor: Dan E. Anderson http://www.dan.drydog.com/
Release     : 1                             Build Date: Thu 10 May 2001 01:12:26 AM EDT
Install date: Sat 02 Feb 2002 01:00:43 PM EST      Build Host: danx.drydog.com
Group       : Amusements/Graphics           Source RPM: xsnow-1.41-1.src.rpm
Size        : 91877                            License: Copyright 1984, 1988, 1990, 1993-1995, 2000 by Rick Jansen. Allows packaging & necessary changes for Unix/Linux distributions.
Packager    : Dan E. Anderson http://dan.drydog.com/
URL         : http://www.euronet.nl/~rja/Xsnow/
Summary     : An X Window System based dose of Christmas cheer.
Description :
The Xsnow toy provides a continual gentle snowfall, trees, and Santa
Claus flying his sleigh around the screen on the root window.
Xsnow is only for the X Window System, though; consoles just get coal.

rpm -ql 列出给定的已安装软件包所拥有的文件:

# rpm -ql xsnow
/etc/X11/applnk/Games/xsnow.desktop
/usr/X11R6/bin/xsnow
/usr/X11R6/man/man1/xsnow.1x.gz

结合 -c 选项或 -d 选项,可以将输出分别限制为配置文件文档文件.

# rpm -qlc xsnow
/etc/X11/applnk/Games/xsnow.desktop

# rpm -qld xsnow
/usr/X11R6/man/man1/xsnow.1x.gz

查询软件包
rpm -qp命令,允许查询一个 rpm 文件而不是查询数据库

# rpm -qp xsnow-1.41-1.i386.rpm
xsnow-1.41-1

# rpm -qpl xsnow-1.41-1.i386.rpm
/etc/X11/applnk/Games/xsnow.desktop
/usr/X11R6/bin/xsnow
/usr/X11R6/man/man1/xsnow.1x.gz

# rpm -qplc xsnow-1.41-1.i386.rpm
/etc/X11/applnk/Games/xsnow.desktop

# rpm -qpld xsnow-1.41-1.i386.rpm
/usr/X11R6/man/man1/xsnow.1x.gz


学习任务6: LPI-7 Connect the Internet

介绍 TCP/IP 和以太网 Linux 联网的基本原理,说明如何使用 inetd 和 xinetd 超级服务器,提供保护 Linux 系统的重要技巧,还将说明如何设置和使用 Linux 打印服务器。

Part 1 TCP/IP联网

每个以太网LAN的以太网卡会有一个唯一的硬件地址:00:01:02:CB:57:3C
;为了能让以太网LAN使用TCP/IP通信,还要将每个网卡与IP地址进行关联,

在 Linux 下有一个将 IP 地址与以太网接口关联的简便方法:

ifconfig eth0 192.168.1.1 broadcast 192.168.1.255 netmask 255.255.255.0

ifconfig 命令被用来关联 eth0(也就是 eth0 的硬件地址)和 192.168.1.1IP 地址。另外,还指定了各种其它与 IP 相关的信息,包括广播地址(192.168.1.255)和网络掩码(255.255.255.0)。当命令完成时,eth0 接口将被启用并具有关联的 IP 地址。

使用ifconfig -a
可以通过输入 ifconfig -a 查看当前正在运行的所有网络设备
在这里插入图片描述
可以看到一个已配置的 enp0s3 接口和 lo(localhost)接口。lo 接口是特殊的虚拟接口,它经过配置以使您在即便没有网络的情况下也可以在本地运行 TCP/IP 应用程序。

当所有网络接口都设置好并与相应的 IP 地址关联后,以太网网络也可以用来传送 TCP/IP 流量LAN 上的系统现在可以用 IP 地址相互寻址,像 ping、telnet 和 ssh 这样的命令将在机器间正常工作。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值