|
[原创]使用apt-build进行系统优化
http://mushuang.forumer.com/index.php?showtopic=178
Attach New Poll | Track this topic | Email this topic | Print this topic
mushuang Posted: Mar 10 2004, 07:57 PM
Administrator
Group: Admin
Posts: 262
Member No.: 1
Joined: 10-January 04
原创:无双 无双小站[mushuang.forumer.com]
转载请保留出处
多数linux现在还是使用386的二进制码包
而现在 早已经是p4或是athon的天下了
用起这些软件包来心里总感觉有点不舒服
那有没有办法呢 特别是在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的二进制包都是需要它的源码包 慢死
后面发现一次编译完成后可以生成多个包 就直接安装了 使用一次编译好后产生的包 )
IP: [ ---------- ]
mushuang Posted: Mar 10 2004, 08:03 PM
Administrator
Group: Admin
Posts: 262
Member No.: 1
Joined: 10-January 04
去掉-g的perl文件
既然是优化 那-g都没有去掉 也就不叫优化了
使用办法 把/usr/bin/gcc重命名 然后把下面的文件保存成/usr/bin/gcc
chmod +x /usr/bin/gcc
然后可以使用
我安装的是gcc3.3 它的优化效果更好
另外注意的是 编译内核时 需要真正的gcc 到时如果发现内核编译不通过那就换回来好了
CODE
#!/usr/bin/perl
my @args;
if($ENV{"APT_BUILD_WRAPPER"}){
my $av;
foreach $av (@ARGV){
next if($av eq '-g');
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);
IP: [ ---------- ]
mushuang Posted: Mar 10 2004, 08:07 PM
Administrator
Group: Admin
Posts: 262
Member No.: 1
Joined: 10-January 04
编写升级脚本 升级脚本如下
也是使用perl写成
使用时使用
build.pl 包名文件 就可以了
使用时另存为build.pl,chmod +x build.pl
CODE
#!/usr/bin/perl
#build.perl
open(FI,"$ARGV[0]") or die "open $ARGB[0] failed\n";
my $line;
my @arr;
while($line=<FI>){
$line=~s/\s\+$//g;
$line=~s/^\s\+//g;
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);
包名文件如下
CODE
klogd libgpmg1 libpam-modules man-db netbase po-debconf shellutils slang1
syslinux tcpd telnet tetex-bin textutils
可以使用
apt-build upgrade >packlist生成
然后编辑packlist 把不是包的字去掉
使用时
./build.pl packlist
这样会一个包一个包的安装升级
IP: [ ---------- ]
mushuang Posted: Mar 10 2004, 08:10 PM
Administrator
Group: Admin
Posts: 262
Member No.: 1
Joined: 10-January 04
X的解决
很多x包都是从xfree86源码包中生成的
换句话说 就是xfree86生成多数x相关的二进制包
而x的源码编译需要的时间很长 (2个小时 这样一天也只能编译12个包最多了)
所以为了省时间 可以先apt-build install xfree86-common
成功后
修改/etc/apt-source.list
把除了apt-build的那行去注掉
然后运行apt-get update
apt-get upgrade就能升级
IP: [ ---------- ]
mushuang Posted: Mar 10 2004, 08:28 PM
Administrator
Group: Admin
Posts: 262
Member No.: 1
Joined: 10-January 04
另外操作时 有可能会报
source not found (没有找到对应的源码包)
或是
not need to rebuild (不需要编译)
这些包就使用apt-get install安装 |
|