LinuxSir.Org  
| 网站首页 | 注册账号 | 论坛帮助 |

欢迎来到LinuxSir.Org!
您还未登录,请登录后查看论坛,或者点击论坛上方的注册链接注册新账号。


发表新主题 回复
精华主题  
主题工具
旧 08-05-02, 14:17 第 1 帖
superjet
 
 
 
注册会员  
  注册日期: Jun 2006
  帖子: 188
  精华: 1
 

标题: archlinux强化篇之debian


1、前言

之所以在archlinux上提及debian强化,主要在于debian充沛的镜像资源、庞大的软件库和大多数包的打包质量优良,在arch上装上debian的包管理就可方便的从附近的debian镜像获取软件源码和非常有价值的patch及少量可以使用的二进制包,而且占地不多对系统本身没啥影响,只要你只是apt-get update和apt-get source来用,除非你apt-get dist-upgrade,那样的话,arch就gone away了,只剩下纯粹的debian了

2、实干

aur上曾有过dpkg和apt的包,不过现在搜不找不到了,可能是上传的老兄亦或被别人删了,下面贴下对应的pkgbuild,具体的(email联系)我会放到附件里。
简单步骤:
代码:
cd dpkg makepkg sudo pacman -U dpkg-1.14.18-2-i686.pkg.tar.gz cd ../apt makepkg sudo pacman -U apt-0.7.12-2-i686.pkg.tar.gz
dpkg
代码:
pkgname=dpkg pkgver=1.14.18 pkgrel=2 pkgdesc="Debian Package Manager" arch=(i686 x86_64) url="http://www.debian.org" license="GPL" depends=('bzip2' 'zlib') source=(http://ftp.debian.org/debian/pool/main/d/dpkg/dpkg_${pkgver}.tar.gz) #md5sums=('') build() { cd ${startdir}/src/${pkgname}-${pkgver} ./configure PERL_LIBDIR=/usr/lib/perl5/vendor_perl \ --prefix=/usr --sysconfdir=/etc --localstatedir=/var/lib \ --with-zlib=static --with-bz2=static \ --without-dselect --without-start-stop-daemon make DESTDIR=${startdir}/pkg install mv ${startdir}/pkg/usr/share/perl5 ${startdir}/pkg/usr/lib }
apt
代码:
pkgname=apt pkgver=0.7.12 pkgrel=2 pkgdesc="Advanced front-end for dpkg" arch=(i686 x86_64) url="http://packages.debian.org/sid/apt" license="GPL" depends=('bzip2' 'zlib' 'dpkg') source=(http://ftp.debian.org/debian/pool/main/a/apt/apt_${pkgver}.tar.gz) #md5sums=('') build() { cd ${startdir}/src/${pkgname}-${pkgver} cp ${startdir}/makefile-doc doc/makefile install -d build/doc/doxygen ./configure --prefix=/usr --sysconfdir=/etc --localedir=/var make || return 1 install -d ${startdir}/pkg/{etc/{apt/apt.conf.d,logrotate.d/apt},usr/{bin,lib/apt/methods,share/{apt,bug/apt/script,man/man{1,5,8}}}} install -d ${startdir}/pkg/usr/lib/dpkg/methods/apt install -d ${startdir}/pkg/var/{lib/apt/lists/partial,cache/apt/archives/partial} cp bin/apt-* ${startdir}/pkg/usr/bin/ find bin/ -type f -name "libapt-pkg*.so.*" \ -exec cp -a "{}" ${startdir}/pkg/usr/lib/ \; find bin/ -type l -name "libapt-pkg*.so.*" \ -exec cp -a "{}" ${startdir}/pkg/usr/lib/ \; cp bin/methods/* ${startdir}/pkg/usr/lib/apt/methods/ cp scripts/dselect/* ${startdir}/pkg/usr/lib/dpkg/methods/apt/ cp -r locale ${startdir}/pkg/usr/share/ cp debian/bugscript ${startdir}/pkg/usr/share/bug/apt/script cp debian/apt.logrotate ${startdir}/pkg/etc/logrotate.d/apt cp share/debian-archive.gpg ${startdir}/pkg/usr/share/apt cp debian/apt.conf.autoremove ${startdir}/pkg/etc/apt/apt.conf.d/01autoremove cp doc/*.1 ${startdir}/pkg/usr/share/man/man1 cp doc/*.5 ${startdir}/pkg/usr/share/man/man5 cp doc/*.8 ${startdir}/pkg/usr/share/man/man8 }
makefile-doc,放到apt目录下
代码:
# -*- make -*- BASE=.. SUBDIR=doc # Bring in the default rules include ../buildlib/defaults.mak # Debian Doc SGML Documents SOURCE = dpkg-tech.sgml design.sgml files.sgml guide.sgml guide.it.sgml \ cache.sgml method.sgml offline.sgml include $(DEBIANDOC_H) # XML man pages SOURCE = apt-cache.8 apt-get.8 apt-cdrom.8 apt.conf.5 sources.list.5 \ apt-config.8 apt_preferences.5 \ apt-sortpkgs.1 apt-ftparchive.1 apt-extracttemplates.1 \ apt-key.8 apt-secure.8 apt-mark.8 INCLUDES = apt.ent include $(XML_MANPAGE_H) # Examples SOURCE = examples/apt.conf examples/sources.list examples/configure-index TO = $(DOC) TARGET = binary include $(COPY_H) #.PHONY: headers library clean veryclean all binary program doc doc: ifdef DOXYGEN DOXYGEN_SOURCES = $(shell find $(BASE)/apt-pkg -not -name .\\\#* -and \( -name \*.cc -or -name \*.h \) ) clean: doxygen-clean doxygen-clean: rm -fr $(BUILD)/doc/doxygen rm -f $(BUILD)/doc/doxygen-stamp $(BUILD)/doc/Doxyfile: Doxyfile.in (cd $(BUILD) && ./config.status doc/Doxyfile) $(BUILD)/doc/doxygen-stamp: $(DOXYGEN_SOURCES) $(BUILD)/doc/Doxyfile rm -fr $(BUILD)/doc/doxygen $(DOXYGEN) $(BUILD)/doc/Doxyfile touch $(BUILD)/doc/doxygen-stamp doc: $(BUILD)/doc/doxygen-stamp endif
3、扫尾

安装完dpkg、apt后,基本工作就做完了,下面来解决apt的gpg验证等
首先编辑一个附近debian镜像用的sources.list
sudo vi /etc/apt/sources.list
PHP 代码:
deb http://ftp.sjtu.edu.cn/debian sid main non-free contrib
deb-src http://ftp.sjtu.edu.cn/debian sid main non-free contrib 
其次,touch下apt要用的lock文件
PHP 代码:
sudo touch /var/lib/apt/lists/lock /var/cache/apt/archives/lock 
最后来解决下gpg验证,为了保险起见,下载debian-archive-keyring中的gpg文件到/usr/share/keyrings下面:
PHP 代码:
wget -c http://ftp.de.debian.org/debian/pool/main/d/debian-archive-keyring/debian-archive-keyring_2008.04.16+nmu1.tar.gz 
tar xvf debian-archive-keyring_2008.04.16+nmu1.tar.gz
su
mkdir 
-/usr/share/keyrings
mv debian
-archive-keyring-2008.04.16+nmu1/keyrings/*.gpg /usr/share/keyrings/ 
导入gpg,附带导入你选择镜像站点的gpg,apt-get update时会提示的,我选的这个是A70DAF536070D3A1
PHP 代码:
su
gpg 
--import /usr/share/keyrings/debian-keyring.gpg
gpg 
--import /usr/share/apt/debian-archive.gpg
gpg 
--armor --export A70DAF536070D3A1 |apt-key add 
如此,所需工作都已完成,可以利用apt-get来更新及下载源代码了,比如
PHP 代码:
apt-get update
apt
-get source nano 
PHP 代码:
sudo apt-get update
密码:
命中 http
://ftp.sjtu.edu.cn sid Release.gpg      
忽略 http://ftp.sjtu.edu.cn sid/main Translation-zh_CN
忽略 http://ftp.sjtu.edu.cn sid/non-free Translation-zh_CN
忽略 http://ftp.sjtu.edu.cn sid/contrib Translation-zh_CN
命中 http://ftp.sjtu.edu.cn sid Release
命中 http://ftp.sjtu.edu.cn sid/main Packages/DiffIndex
命中 http://ftp.sjtu.edu.cn sid/non-free Packages/DiffIndex
命中 http://ftp.sjtu.edu.cn sid/contrib Packages/DiffIndex
命中 http://ftp.sjtu.edu.cn sid/main Sources/DiffIndex
命中 http://ftp.sjtu.edu.cn sid/non-free Sources/DiffIndex
命中 http://ftp.sjtu.edu.cn sid/contrib Sources/DiffIndex
正在读取软件包列表... 完成

apt-get source nano
正在读取软件包列表
... 完成
正在分析软件包的依赖关系树
... 完成
需要下载 1389kB 的源代码包。
获取:1 http
://ftp.sjtu.edu.cn sid/main nano 2.0.7-1 (dsc) [731B]
获取:2 http://ftp.sjtu.edu.cn sid/main nano 2.0.7-1 (tar) [1364kB]
获取:3 http://ftp.sjtu.edu.cn sid/main nano 2.0.7-1 (diff) [24.7kB]                
下载 1389kB,耗时 56s (24.5kB/s)                                                    
gpg于 2007年12月24日 星期一 22时45分15秒 CST 创建的签名,使用 DSA,钥匙号 917A225E
gpg
无法检查签名:找不到公钥
dpkg
-sourceextracting nano in nano-2.0.7
dpkg
-sourceinfounpacking nano_2.0.7.orig.tar.gz
dpkg
-sourceinfoapplying nano_2.0.7-1.diff.gz 
上传的附件
文件类型: gz dpkg-apt.tar.gz (1.6 KB, 15 次查看)

此帖于 08-05-02 14:20 被 superjet 编辑. 原因: PHP导致pkgbuild显示不全,换成CODE
  superjet 当前离线   回复时引用此帖
旧 08-05-02, 15:25 第 2 帖
number5
 
 
 
注册会员  
  注册日期: Dec 2007
  帖子: 115
  精华: 0
 

sigh, 我就是因为受不了debian/ubuntu 复杂无比的dependency才逃来Archlinux的 ...

偶尔需要的话,直接拿source+patch过来也能用







__________________
kernel 2.6.27
XFCE 4.6 beta1
Arch

http://brucewang.net
http://twitter.com/number5
  number5 当前离线   回复时引用此帖
旧 08-05-02, 16:54 第 3 帖
smileoa
 
smileoa 的头像
 
 
注册会员  
  注册日期: Nov 2005
  我的住址: 武汉
  帖子: 126
  精华: 0
 

服你了LZ,我肯定不会这么用的。







__________________
Celeron 2.66GHz 768M

Archlinux+Fluxbox :-)

天天pacman -Syu
  smileoa 当前离线   回复时引用此帖
旧 08-05-03, 00:03 第 4 帖
goodhebin
 
goodhebin 的头像
 
 
注册会员  
  注册日期: Apr 2006
  帖子: 191
  精华: 0
 

不得不说lz 强悍, 但想问一下, 为什么不将gentoo的 ebuild 移植过来, 那对源码的使用更方便了, 大家说呢。
顺便还是赞一下apt的经典。







__________________
硬件:
CPU:P4 2.93G
内存:256M
主板:sis661fx
显卡:ati9600移动板
OS:
archlinux
  goodhebin 当前离线   回复时引用此帖
旧 08-05-03, 00:47 第 5 帖
superjet
 
 
 
注册会员  
  注册日期: Jun 2006
  帖子: 188
  精华: 1
 

gentoo的portage解开后太占地方,因为不是所有的源码都是需要的,从debian的镜像获取源码+patch,多数速度还是令人满意的,portage的pkgbuild倒是很容易写,可以参照下
http://linuxsir.org/bbs/thread328022.html

里面提及的arch下实现因为没提及pkgbuild基本和上面的差不多

以后有时间想把fedora的yum搞过来,rpm则早就装上了
  superjet 当前离线   回复时引用此帖
旧 08-05-03, 00:55 第 6 帖
axlrose
 
 
 
注册会员  
  注册日期: Feb 2006
  我的住址: 四川成都
  帖子: 621
  精华: 1
 

支持楼主,找个时间试试看







__________________
gentoo archlinux amd3600+ T61
GunsNRose

我的百度BLOG: http://hi.baidu.com/3444542
  axlrose 当前离线   回复时引用此帖
旧 08-05-11, 19:58 第 7 帖
axlrose
 
 
 
注册会员  
  注册日期: Feb 2006
  我的住址: 四川成都
  帖子: 621
  精华: 1
 

试了下,不过离实用还有待完善, apt-get install foo
楼主再写细点 也许是我弄的哪个步骤没对,找时间继续再试试
  axlrose 当前离线   回复时引用此帖
旧 08-05-11, 20:33 第 8 帖
superjet
 
 
 
注册会员  
  注册日期: Jun 2006
  帖子: 188
  精华: 1
 

apt-get install foo 会附带把相关依赖搭上,多数情况下加--ignore-missing并不能使其只下载想要的二进制包,这时直接获取包的位置使用wget等来下载就行了,前面加上镜像的地址加上apt获取的即可

PHP 代码:
$wget -c http://ftp.sjtu.edu.cn/debian/`apt-cache show nano | grep pool | awk '{print $2}'`
--2008-05-11 20:24:07--  http://ftp.sjtu.edu.cn/debian/pool/main/n/nano/nano_2.0.7-1_i386.deb
正在解析主机 ftp.sjtu.edu.cn... 202.38.97.230
Connecting to ftp
.sjtu.edu.cn|202.38.97.230|:80... 已连接。
已发出 HTTP 请求,正在等待回应
... 200 OK
长度:584268 
(571K) [application/x-debian-package]
Saving to: `nano_2.0.7-1_i386.deb'
... 
  superjet 当前离线   回复时引用此帖
旧 08-05-12, 09:19 第 9 帖
cuxnil
 
 
 
注册会员  
  注册日期: Feb 2004
  帖子: 179
  精华: 0
 

严重支持楼主,debian的包管理机制和分类要比阿rchlinux强







__________________
cuxnil.blogchina.com
  cuxnil 当前离线   回复时引用此帖
旧 08-05-17, 09:08 第 10 帖
axlrose
 
 
 
注册会员  
  注册日期: Feb 2006
  我的住址: 四川成都
  帖子: 621
  精华: 1
 

apt-get install aptitude
代码:
正在读取软件包列表... 正在分析软件包的依赖关系树... 将会安装下列额外的软件包: apt apt-utils aptitude-doc-en base-passwd debconf debconf-i18n debian-archive-keyring gcc-4.1-base gnupg gpgv libbz2-1.0 libc6 libclass-accessor-perl libdb4.2 libdb4.4 libgcc1 libgcrypt11 libgdbm3 libgnutls13 libgpg-error0 libgpmg1 libhtml-parser-perl libhtml-tagset-perl libhtml-template-perl libio-string-perl libldap2 liblocale-gettext-perl liblzo1 libncurses5 libncursesw5 libopencdk8 libparse-debianchangelog-perl libreadline5 libsasl2-2 libsasl2-modules libsigc++-2.0-0c2a libssl0.9.8 libstdc++6 libtasn1-3 libtasn1-3-bin libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl libtimedate-perl liburi-perl libusb-0.1-4 libxml-libxml-common-perl libxml-libxml-perl libxml-namespacesupport-perl libxml-sax-perl libxml-simple-perl libxml2 makedev perl perl-base perl-doc perl-modules readline-common sgml-base tzdata xml-core zlib1g 建议安装的软件包: dpkg-dev apt-doc bzip2 tasksel debtags debconf-doc debconf-utils whiptail dialog gnome-utils libterm-readline-gnu-perl libgnome2-perl libqt-perl libnet-ldap-perl gnupg-doc xloadimage locales glibc-doc rng-tools gnutls-bin gpm libipc-sharedcache-perl libsasl2-modules-otp libsasl2-modules-ldap libsasl2-modules-sql libsasl2-modules-gssapi-mit libwww-perl man-browser groff sgml-base-doc debhelper 下列【新】软件包将被安装: apt apt-utils aptitude aptitude-doc-en base-passwd debconf debconf-i18n debian-archive-keyring gcc-4.1-base gnupg gpgv libbz2-1.0 libc6 libclass-accessor-perl libdb4.2 libdb4.4 libgcc1 libgcrypt11 libgdbm3 libgnutls13 libgpg-error0 libgpmg1 libhtml-parser-perl libhtml-tagset-perl libhtml-template-perl libio-string-perl libldap2 liblocale-gettext-perl liblzo1 libncurses5 libncursesw5 libopencdk8 libparse-debianchangelog-perl libreadline5 libsasl2-2 libsasl2-modules libsigc++-2.0-0c2a libssl0.9.8 libstdc++6 libtasn1-3 libtasn1-3-bin libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl libtimedate-perl liburi-perl libusb-0.1-4 libxml-libxml-common-perl libxml-libxml-perl libxml-namespacesupport-perl libxml-sax-perl libxml-simple-perl libxml2 makedev perl perl-base perl-doc perl-modules readline-common sgml-base tzdata xml-core zlib1g 共升级了 0 个软件包,新安装了 63 个软件包,要卸载 0 个软件包,有 0 个软件未被升级。 需要下载 0B/34.2MB 的软件包。 解压缩后会消耗掉 97.7MB 的额外空间。 您希望继续执行吗?[Y/n]dpkg:在 PATH 中找不到“update-rc.d”。 dpkg: 共有 1 个程序没在 PATH 中找到。 提示:root 的 PATH 环境变量通常应当包含 /usr/local/sbin、/usr/sbin 和 /sbin

代码:
# wget -c http://debian.cn99.com/debian/`apt-cache show aptitude | grep pool | awk '{print $2}'` # dpkg -i aptitude_0.4.4-4_i386.deb dpkg:在 PATH 中找不到“update-rc.d”。 dpkg: 共有 1 个程序没在 PATH 中找到。 提示:root 的 PATH 环境变量通常应当包含 /usr/local/sbin、/usr/sbin 和 /sbin
  axlrose 当前离线   回复时引用此帖
旧 08-05-17, 09:49 第 11 帖
superjet
 
 
 
注册会员  
  注册日期: Jun 2006
  帖子: 188
  精华: 1
 

呵呵,你这样的话难道想换成debian不成?
update-rc.d是file-rc里面提供的,出现update-rc.d错误是因为aptitude的安装脚本里要调用其来设置,这也是几乎每个提供rc.d运行脚本的每个包到要用的。

常见的小的二进制东东使用是将其下下来,然后dpkg解开来,放到搜索路径下来用,部分so的版本不符时还要做下软连接,所以多数情况最好还是下源码,打包来用
使用二进制的一个例子:
PHP 代码:
$wget -c http://debian.cn99.com/debian/`apt-cache show nano | grep pool | awk '{print $2}'`
dpkg -x nano_2.0.7-1_i386.deb nano
dpkg -e nano_2.0.7-1_i386.deb nano/DEBIAN
$ ./nano/bin/nano 
其中,nano/DEBIAN下面是信息、更新与删除的安装脚本和md5等,可以看看

将deb转成pkg.tar.gz也是很容易的事,只是考虑到底层库的问题,还是从源码打包更好,deb包里的信息可以直接转贴到pkgbuild里
  superjet 当前离线   回复时引用此帖
旧 08-05-17, 10:26 第 12 帖
kartwall
 
 
 
注册会员  
  注册日期: Jul 2006
  帖子: 147
  精华: 0
 

我觉得arch库里面的软件已经很多了,反正够我用了
  kartwall 当前离线   回复时引用此帖
旧 08-05-17, 18:12 第 13 帖
d00m3d
 
d00m3d 的头像
 
 
资深版主  
  注册日期: Nov 2004
  帖子: 11,768
  精华: 9
 

引用:
作者: goodhebin
不得不说lz 强悍, 但想问一下, 为什么不将gentoo的 ebuild 移植过来, 那对源码的使用更方便了, 大家说呢。
顺便还是赞一下apt的经典。
已經有人做過了

http://www.linuxsir.org/bbs/thread328022.html







__________________
nO ^^4+73R wH1<h d!5+R0z j00 42E U$1N9 7r% LpHZ 4+ l3457 oN(&
  d00m3d 当前离线   回复时引用此帖
旧 08-05-17, 18:15 第 14 帖
d00m3d
 
d00m3d 的头像
 
 
资深版主  
  注册日期: Nov 2004
  帖子: 11,768
  精华: 9
 

奉勸樓主,如想利用 Debian 的資源,要能用 dpkg 手動,千萬不要用 apt-get,否則系統會主動安裝它認為沒有的包去滿足依賴,結果最後你的系統就會被替換,變成完整的 Debian 了
  d00m3d 当前离线   回复时引用此帖
旧 08-05-18, 21:03 第 15 帖
hethe
 
 
 
注册会员  
  注册日期: Apr 2006
  帖子: 13
  精华: 0
 

很强悍的办法
  hethe 当前离线   回复时引用此帖
发表新主题 回复


主题工具

发帖规则
您 [不可以] 发表新主题
您 [不可以] 回复主题
您 [不可以] 上传附件
您 [不可以] 编辑您的帖子

已 [启用] BB 代码
已 [启用] 表情符号
已 [启用] IMG 代码
已 [禁用] HTML 代码
[论坛跳转…]


所有时间均为[北京时间]。现在的时间是 19:05


Powered by vBulletin 版本 3.6.8
版权所有 ©2000 - 2008, Jelsoft Enterprises Ltd.
官方中文技术支持: vBulletin 中文
版权所有 ©2002 - 2007, LinuxSir.Org