apt get linux 源码,打造ArchLinux下的类apt-get source工具

首先广告一下,Arch Linux是我用过的最喜欢的一个Linux发行版,它是一个滚动升级模式的i686/x86-64 Linux发行版,它的开发注重于系设计简洁、结构优雅、代码 准确、体验新潮的完美权衡。它给你一个最小的系统,但是提供很强大的包管理,从而你可以自由的构建一个理想的系统,它的包管理强大之处在于它有两套包管理系统,一个是基于pacman的二进制包管理系统,类似ubuntu下的apt-get 系统,使用官方仓库,提供大量打包好的软件包可供直接使用,另外一个就是全功能的类ports的ABS(Arch Build System)软件包管理系统,类似gentoo的emerge系统,可以很方便的从源码构建软件,而且构建出来的软件也纳入pacman的包管理系统,这样就可以方便的缷载软件,避免了最普通的configure&&make&&make install这一种从源码构建方式不易缷载的问题。ABS实际上维护了一个PKGBUILD文件集合,其中每个PKGBUILD文件对应一个软件,可以使用makepkg命令来通过PKGBUILD构建软件。ABS其中的软件包是社区维护用户的,任何人都可以提交可以构建软件的PKGBUILD,从而形成了一个非常巨大的仓库,这个仓库就叫AUR(Arch Linux User-community Repository)。

很多人习惯了用apt-get source来下载一个软件的源码包,但是pacman却没有直接提供这样的功能,显得有些不便,其实ArchLinux把包源码相关的事都交给ABS去做了,下载源码可以通过abs命令及其它的命令组合来完成,稍显麻烦,所以写了一个脚本进行了包装,实现把源码下载到当前目录的功能,同时也把下载好的源码包解开,同时打上patch(如果有的话)。

#!/bin/sh

# This script is used for downloading package source tarball under Archlinux, just like apt-get source pkg in ubuntu.

#make sure abs is installed

pacman -Q abs >/dev/null 2>&1

if [ $? -ne 0 ];then

echo "abs is not installed."

echo "installing abs..."

if [ `whoami` == "root" ];then

pacman -S abs

abs -t

else

sudo pacman -S abs

if [ $? -ne 0 ];then

exit

fi

sudo abs -t

fi

fi

#geting source through the PKGBUILD file

find /var/abs -type d -name $1 -exec cp -a {} /tmp/ \;

if [ -d /tmp/$1 ];then

echo package found.

else

echo package not found.

exit

fi

pushd /tmp/$1 >/dev/null 2>&1

sed -i 's:\./configure.*$:exit:' PKGBUILD

makepkg

popd >/dev/null 2>&1

cp -a /tmp/$1/src ./$1 >/dev/null 2>&1

脚本原理就是利用abs得到AUR中的软件的PKGBUILD,然后修改一下PKGBUILD从而让makepkg只做下载源码包并解开和打补丁的工作,在配置和编译前停下来,这样就得到了需要的软件包的源码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值