Q1:我想把包下载到本地,方便以后安装,到哪儿下载呢?
A1:pkg用的包扩展名为txz,可以到http://pkg.freebsd.org里面下载。注意要分清用的是X86还是AMD64,主页面下方还有几个镜像可以使用,你可以挑一个快一点的。
Q2:我机器中没有pkg或者是版本比较老,但是需要安装txz软件包,应该怎么办呢?
A2:到上面的网址中下载最新的pkg,一般是pkg-2.x.x..txz,然后进入txz所有的目录,再执行:
tar xf ./pkg-1.2.1.txz -s ",/.*/,,g" "*/pkg-static"
./pkg-static add ./pkg-1.2.1.txz
第一句是把里面的pkg-static解出来,然后用pkg-static来执行pkg的安装。
另外,pkg-static是pkg的另一个静态编译的版本,不需要so依赖就能运行,可以用file命令来对比pkg和pkg-static。ldd命令对pkg-static无效的,但是对pkg则显示出一大堆依赖。
Q3:我需要安装到chroot目录中,怎么样实现呢?
A3::pkg 有个-c参数,专门用于chroot安装,先看示例:
pkg –c chroot /mnt/ add -f /temp/screen.txz
这个命令看似简单,而在实际执行的时候,会遇到很多问题:
(1)-c 参数必须紧跟着pkg,放到add之前,否则会遇到无效命令或命令错误的提示。原因是,-c是pkg的参数,add自已还有参数,这两者不能混淆。man pkg ,会发现它的命令格式为:
pkg 参数 command 子参数
如果把 –c放到add 后面,则成为子参数,而子参数中并没有-c,所以就出现无效了。
(2)-f参数必须放到add 后面,原因同上,add的子参数可以man pkg-add
(3)screen.txz应该放在哪儿呢?是/temp/screen.txz还是/mnt/tmp/screen.txz?或者换一个角度思考:pkg是先chroot还是先读取txz文件?如果先chroot的话,那么txz就应该相对于chroot后的目录,也就是/mnt/temp/screen.txz;如果是先读文件,那么应该是/temp/screen.txz。你可以试一下,答案应该是前者,先chroot,再找文件。
注:原来的pkg-add系统,用的是后者。
该贴被wulcan编辑于2014-4-13 10:15:56
该贴由hui.chen转至本版2014-11-5 17:05:00