使用apt-build进行系统优化

常言道:『飲水思源』,在 Open Source 的世界裡,我們常常需要別人的幫助,但是在您有所心得的時候請記得分享給大家,『幫助人是快樂的喔』。歡迎您在使用 debian 的過程中的任何心得分享給大家。

使用apt-build进行系统优化

文章无双 » 週一 3月 29, 2004 10:11 pm

原创:无双 无双小站[mushuang.forumer.com]
loveunix.net

多数linux现在还是使用386的二进制码包
而现在 早已经是p4或是athon的天下了

而且有些程序 速度比较慢 如果能优化的话会更好 如Xserver
优化后与优化前性能差别大概是30%

用起这些软件包来心里总感觉有点不舒服
那有没有办法呢 特别是在debian这个可订制的系统上 难道要自己手动去编译一个一个的源码吗

那 太累了 学习linux都不知道为什么要学了 到时变成./configure专家而其它的都不懂

不过 要是使用386编译包还是觉得心理不舒服

还好 无所不能充满创造性的debian给我们带来了一个新的选择 apt-build


apt-build是从源码包安装升级的工具
现在在stable上使用可能还有些问题 所以最好还是升级到sid版

安装
使用apt-get install apt-build安装

安装时会告诉你要在哪个目录下编译软件包 并保存已编译好的包
默认是/var/cache/apt-build
安装过程中会把/var/cache/apt-build/...添加到/etc/apt/source.list文件中
同时会问优化级别 根据自己的系统来优化好了(后面我使用的是自己的优化脚本)

使用
像apt-get一样的使用 命令参数也一样 除了没有dis-upgrade命令外
安装就是使用apt-build install 包名
安装过程中 apt-get会使用自己的设置把优化级别添加到gcc的编译选项中 从而达到优化效果

使用过程中发现有的软件包安装过程中带有-g 觉得不舒服后面就自己写了个脚本
代替apt-buid的脚本

另外还发现 使用apt-build upgrade时 是等到所有软件包都重编译完再安装的
于是自己写了脚本操作这些要升级的包 保证它们可以编译完一个就安装 免得互次都重make

再就是 有时一个源码包可以生成几个二进制包(xfree86源码包是典型 这个在我电脑上每次编译都需要2个小时
而且多个X的二进制包都是需要它的源码包 慢死
后面发现一次编译完成后可以生成多个包 就直接安装了 使用一次编译好后产生的包 )
unix技术开发社区 讨论unix下开发与管理 还有数据库技术
loveunix.net
无双
可愛的小學生
可愛的小學生
 
文章: 9
註冊時間: 週一 3月 29, 2004 9:57 pm

re:使用apt-build进行系统优化

文章无双 » 週一 3月 29, 2004 10:13 pm

去掉-g的perl文件
既然是优化 那-g都没有去掉 也就不叫优化了
使用办法 把/usr/bin/gcc重命名 然后把下面的文件保存成/usr/bin/gcc
chmod +x /usr/bin/gcc
然后可以使用

我安装的是gcc3.3 它的优化效果更好

另外注意的是 编译内核时 需要真正的gcc 到时如果发现内核编译不通过那就换回来好了
修改这个文件应该在安装apt-build后 因为apt-build也会生成相同的文件

把自己的cpu类型定义在下面

#!/usr/bin/perl

my @args;
if($ENV{"APT_BUILD_WRAPPER"}){
my $av;
foreach $av (@ARGV){
next if($av eq '-g');
next if($av =~m"^-mcpu=");
next if($av =~m"^-march=");
if($av =~m"-O\d?"){
push(@args,"-O3");
push(@args,"-mcpu=pentium4");
push(@args,"-march=pentium4");
}
else{
push(@args,$av);
}
}
}
else{
@args=@ARGV;
}
system("/usr/bin/gcc-3.3",@args);
unix技术开发社区 讨论unix下开发与管理 还有数据库技术
loveunix.net
无双
可愛的小學生
可愛的小學生
 
文章: 9
註冊時間: 週一 3月 29, 2004 9:57 pm

re:使用apt-build进行系统优化

文章无双 » 週一 3月 29, 2004 10:16 pm

最后

写一个简单的脚本 让自己的升级自动化

#!/usr/bin/perl

open(FI,"$ARGV[0]") or die "open $ARGB[0] failed\n" ;

my $line;
my @arr;
while($line=<FI>){
next if($line!~m/^\s\s/);
my @words=split('\s+',$line);
push(@arr,@words);
}

foreach $line (@arr){
next if($line !~m/\w+/);
print "$line\n";
system("apt-build install $line ");
}
close(FI);


使用方法
root#apt-get update
root#apt-get upgrade >packlist
ctrl-D
#./run.pl packlist

上面的脚本实际就是一个包一个包的升级
因为升级多个包的话 如果某一个包出错 apt-build不会操作其它包 所以写成独立的脚本 分开升级 提高重编译速度
unix技术开发社区 讨论unix下开发与管理 还有数据库技术
loveunix.net
无双
可愛的小學生
可愛的小學生
 
文章: 9
註冊時間: 週一 3月 29, 2004 9:57 pm

re:使用apt-build进行系统优化

文章无双 » 週一 3月 29, 2004 10:20 pm

最后

我觉得使用apt-build的系统性能已经提高很多了

可以跟gentoo相比 适合大家的需要

另外 重编译时需要解决依赖性 所以会下其它包
因此 有大的分区还是必要的

我的是把/var分在另一个分区上

另外 编译好的包可以共享 所以如果你的局域网内有多个电脑
那么在一台上使用apt-build刊行优化就可以

其它的电脑从你的电脑上升级
unix技术开发社区 讨论unix下开发与管理 还有数据库技术
loveunix.net
无双
可愛的小學生
可愛的小學生
 
文章: 9
註冊時間: 週一 3月 29, 2004 9:57 pm

Re: 使用apt-build进行系统优化

文章flybird » 週四 12月 09, 2004 5:16 pm

无双 寫:學習linux都不知道為什麼要學了 到時變成./configure專家而其它的都不懂


./configure 是有潛力達到極致最佳化的調整工具 , LFS就常常使用到!
flybird
懵懂的國中生
懵懂的國中生
 
文章: 249
註冊時間: 週三 7月 07, 2004 4:40 pm
來自: ROT

re:使用apt-build进行系统优化

文章訪客 » 週四 12月 09, 2004 8:32 pm

編不出來,請幫忙提示:
# apt-build upgrade
-----> Upgrading () <-----
Package base-config does not need to be rebuilt
Package po-debconf does not need to be rebuilt
-----> Installing build dependencies (for bsdutils) <-----
讀取套件清單中...
了解套件依存關係中...
0 upgraded, 0 newly installed, 刪除 0 個套件,另不更新 7 個套件。
-----> Downloading bsdutils source (util-linux 1:2.12-10) <-----
Taking version 1:2.12-10 over 2.12-10

-----> Updating package lists <-----
接觸 ftp://debian.linux.org.tw testing/main Packages
接觸 ftp://debian.linux.org.tw testing/main Release
接觸 ftp://debian.linux.org.tw testing/main Sources
接觸 ftp://debian.linux.org.tw testing/main Release
接觸 http://security.debian.org testing/updates/main Packages
接觸 http://security.debian.org testing/updates/main Release
讀取套件清單中...
讀取套件清單中...
了解套件依存關係中...
E: Unable to find a source package for util-linux
-----> Building bsdutils <-----
E: Unable to find a source package for util-linux
Use of uninitialized value in concatenation (.) or string at /usr/bin/apt-build line 280.
Can't chdir(util-linux-): 沒有此一檔案或目錄 at (eval 1) line 3
main::__ANON__('util-linux-') called at /usr/bin/apt-build line 280
main::build('bsdutils', '1:2.12', -10) called at /usr/bin/apt-build line 436
main::install('undef', 'undef', '\'file:/var/cache/apt-build/repository/./bsdutils_2.12-10_i38...', 'mount', 'base-passwd', 'at', 'binutils') called at /usr/bin/apt-build line 484
main::upgrade called at /usr/bin/apt-build line 82
訪客
 


回到 share

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客

cron