1
29
2013
1

Archlinux on ThinkPad L430

甲、前言

出于特殊需求,花将近3000买了这个 ThinkPad L430。

一、配置

  • CPU:Intel Pentium B980 @ 2.40GHz  #Sandy Bridge 的,主频还可以
  • 显卡:HD 3000 核显 + Quadro NVS 5400M 独显  #奇葩的型号,好像是啥绘图卡,感觉和610M水准差不多
  • 内存:2GB  #跑Win7HB和Linux足矣
  • 硬盘:320GB HDD
  • 14吋屏幕、DVD刻录机、有摄像头、没指纹识别、预装Win7HB

二、吐槽

  • 指纹识别呢?我一直觉得 ThinkPad 这个很厉害,结果发现便宜货上没有……
  • 第一天就发现光驱是坏的,送回去修了,略郁闷。
  • Win7 预装了一坨联想的东西,还有啥QQ电脑管家,去死吧……

 

3
4
2012
0

【火狐三则】增强组件的PKGBUILD;不错的dial插件;同步profile到内存盘

没有什么关联的三则。

1. 火狐addon的PKGBUILD:

从CVS获取代码编译最新版插件的PKGBUILD,对喜欢用测试版Fx的用户可能有点用。

community里面有稳定版的adblock-plus、noscript,是下载XPI解压然后打包的。自己写的话,可以参考其中确定安装目录的部分。

adblock-plus

从hg获取的代码有个metadata,里面可以提取Fx版本支持信息,所以写成动态获取依赖版本了。

另外,第一次知道,用某些CVS的PKGBUILD中不用自己写clone代码的部分…… makepkg会自动完成。

pkgname=firefox-adblock-plus-hg
pkgver=3414
pkgrel=1
pkgdesc="plugin for firefox which disables script (mercurial developing version)"
arch=('any')
url="https://adblockplus.org/"
license=('GPL')
depends=("firefox")
conflicts=("firefox-adblock-plus")
provides=("firefox-adblock-plus")
makedepends=('unzip' 'python2-jinja' 'mercurial')

_hgroot="https://hg.adblockplus.org/"
_hgrepo="adblockplus"

build() {
    rm -rf "$srcdir/$_hgrepo-build"
    cp -rf "$srcdir/$_hgrepo" "$srcdir/$_hgrepo-build"
    cd "$srcdir/$_hgrepo-build"
  
    # determine supported firefox versions
    _fxver=($(sed -n 's/firefox=\(.*\)/\1/p' metadata | sed "s/\//\ /"))
    _abpver=$(sed -n 's/version=\(.*\)/\1/p' metadata)
    _emid=$(sed -n 's/id=\(.*\)/\1/p' metadata)
    depends=("firefox>=${_fxver[0]}" "firefox<=${_fxver[1]}")
    provides=("firefox-adblock-plus=$_abpver")

    python2 build.py build abp.xpi

    install -d "$pkgdir/usr/lib/firefox/extensions/$_emid"
    unzip -od "$pkgdir/usr/lib/firefox/extensions/$_emid" abp.xpi
    
    # unzip set filemode extracted from XPI file to 600
    # I don't know why :3
    chmod -R a+r "$pkgdir/usr/lib/firefox/extensions/$_emid"
}

https-everywhere

我sed功力太差,不会从XPI中提取版本信息(其实是土方法太繁琐),所以这个就不搞动态版本了……

pkgname=firefox-https-everywhere-git
pkgver=20120303
pkgrel=1
pkgdesc="an addon making firefox auto use HTTPS (git developing version)"
arch=('any')
url="https://www.eff.org/https-everywhere/"
license=('GPL2')
depends=("firefox>=3.0")
provides=("firefox-https-everywhere")
makedepends=('unzip' 'git')

_gitname="https-everywhere"
_gitroot="git://git.torproject.org/https-everywhere.git"

build() {
    cd $srcdir
    msg "Connecting to the GIT server...."
  
    if [ -d $_gitname ]; then
        cd $_gitname && git pull origin && cd ..
        msg "The local files are updated."
    else
        git clone $_gitroot $_gitname
    fi
    
    msg "GIT checkout done"
    
    rm -rf "$_gitname-build"
    cp -rf "$_gitname" "$_gitname-build"
    cd "$_gitname-build"
    sed -i '1 i#\!/usr/bin/python2' trivial-validate.py
    ./makexpi.sh
    
    install -d "$pkgdir/usr/lib/firefox/extensions/https-everywhere@eff.org"
    unzip -od "$pkgdir/usr/lib/firefox/extensions/https-everywhere@eff.org" pkg/*.xpi
}

 

2. FVD Speed Dial插件:

之前用Speed Dial,感觉界面很弱智……

今天发现了这个。自我感觉比Speed Dial强大多了,界面挺好看。

除了支持Speed Dial的分组之类的,Dial页还能显示最常访问、最近关闭等。

下载、截图自己看吧:https://addons.mozilla.org/en-US/firefox/addon/fvd-speed-dial/

 

3. profile-sync-daemon,同步浏览器配置到内存盘:

把用户profile(~/.mozilla)放到内存盘,可以提高Fx速度,并减少磁盘读写。考虑到这个比较麻烦,还要自己写脚本什么的,一直没搞过。

看Archwiki,发现了profile-sync-daemon这个daemon,挺很方便的。不仅支持Fx,还支持Chrome、Opera、Midori。graysky出品,必属精品。

从AUR安装,修改 /etc/psd.conf,在USERS部分填上自己的用户名,rc.d start psd 启动就行了。

2
19
2012
5

unzip 6.10b测试版,解决ZIP乱码问题

原来unzip有个-O参数,可以设定编码的。到了6.0版本不知为何移除了。后来ZIP乱码问题就一直困扰着群众。

今天翻了翻官网,发现测试版本6.10b重新添加了这个参数:

- Add -I and -O options for setting ISO and OEM character sets, respectively, used by UnZip when doing character set translations. This support is based on the unzip60-alt-iconv-utf8 patch suggested in an Info-ZIP forum thread and uses the iconv library which must be available. These options are enabled using the USE_ICONV_MAPPING compiler macro. Suggestions welcome on how to improve this limited character translation support.  

虽然这个版本2010年底就发布了,但能搜索到的信息几乎没有,真是奇怪。用官方新版本解决乱码不是很方便么……

于是写了个PKGBUILD,扔AUR了: unzip-beta

使用示例:

unzip 我是一个ZIP.zip -Ogbk

Category: 计算机 | Tags: arch ZIP 软件 linux
1
17
2012
7

repo-elephant:Arch彩蛋?

无意中在最新的 pacman 4.0.1 里面发现了repo-elephant这么个玩意儿。

 

哦呵呵:

cuihao@cuihao-arch /tmp $ repo-elephant -q
    _    _
   / \__/ \_____
  /  /  \  \    `\
  )  \''/  (     |\
  `\__)/__/'_\  / `
     //_|_|~|_|_|
     ^""'"' ""'"'

 

啊哈:

cuihao@cuihao-arch /tmp $ repo-elephant -q
     __
    '. \
     '- \
      / /_         .---.
     / | \\,.\/--.//    )
     |  \//        )/  /
      \  ' ^ ^    /    )____.----..  6
       '.____.    .___/            \._)
          .\/.                      )
           '\                       /
           _/ \/    ).        )    (
          /#  .!    |        /\    /
          \  C// #  /'-----''/ #  /
       .   'C/ |    |    |   |    |mrf  ,
       \), .. .'OOO-'. ..'OOO'OOO-'. ..\(,

 

貌似是个正经玩意儿:

cuihao@cuihao-arch /tmp $ repo-elephant -h
repo-elephant (pacman) 4.0.1

  -q, --quiet       最小化输出信息
  -s, --sign        更新后使用 GnuPG 签名数据库
  -k, --key <密匙>   使用指定的密匙签名该数据库
  -v, --verify      更新前验证数据库签名

更多细节及可用选项的描述请参见 repo-elephant(8) 。

 

……好像又是坑爹:

cuihao@cuihao-arch /tmp $ man repo-elephant
没有 repo-elephant 的手册页条目

cuihao@cuihao-arch /tmp $ man 8 repo-elephant
在第 8 节中没有关于 repo-elephant 的手册页条目。

 

庐山真面目,原来是repo-add啊:

cuihao@cuihao-arch /tmp $ ls -al `which repo-elephant`
lrwxrwxrwx 1 root root 8  1月 13 12:45 /usr/bin/repo-elephant -> repo-add*

 

打开repo-add,发现这么一些代码:

elephant() {
	case $(( RANDOM % 2 )) in
		0) printf '%s\n' "H4sIAL3qBE4CAyWLwQ3AMAgD/0xh5UPzYiFUMgjq7LUJsk7yIQNAQTAikFUDnqkr" \
		                 "OQFOUm0Wd9pHCi13ONjBpVdqcWx+EdXVX4vXvGv5cgztB9+fJxZ7AAAA"
		;;

		1) printf '%s\n' "H4sIAJVWBU4CA21RMQ7DIBDbeYWrDgQJ7rZ+IA/IB05l69alcx5fc0ASVXUk4jOO" \
		                 "7yAAUWtorygwJ4hlMii0YkJKKRKGvsMsiykl1SalvrMD1gUXyXRkGZPx5OPft81K" \
		                 "tNAiAjyGjYO47h1JjizPkJrCWbK/4C+uLkT7bzpGc7CT9bmOzNSW5WLSO5vexjmH" \
		                 "ZL9JFFZeAa0a2+lKjL2anpYfV+0Zx9LJ+/MC8nRayuDlSNy2rfAPibOzsiWHL0jL" \
		                 "SsjFAQAA"
		;;
	esac | openssl base64 -d | gzip -d
}
# figure out what program we are
cmd=${0##*/}
if [[ $cmd == "repo-elephant" ]]; then
	elephant
	exit 0
fi

 

Arch开发人员真有聊

1
8
2012
0

一些Arch PKGBUILD的知识

总结一些以前疑惑的关于PKGBUILD的问题。

1. 就算需要,base-devel组中的软件包也不会写入编译时依赖列表(makedepends):

base-devel软件包组包含编译软件所需的基本工具(软件包列表:i686x86_64),包括gcc编译器、make之类的。一般编译软件包都需要这些包,所以干脆就规定makedepends中不需要指定它们。

如果你发现怎么makepkg都编译不了,先看看是不是忘记装base-devel了(pacman -S base-devel)。

2. 从git、svn、cvs、hg等版本控制系统获取代码的软件包,版本号会自动更新:

从版本控制系统获取代码的话,只要PKGBUILD是标准格式,版本号会自动更新,以反映最新的代码变化。

比如,从AUR上下载的ibus-git的PKGBUILD,本来的版本号是20110501,可makepkg之后得到的版本号就变成当天日期YYYYMMDD了。

svn、hg版本号会更新为最新修订号,git、cvs用当天的日期了。

3. install文件之作用:

某些软件包除了PKGBUILD,还会附带一个XXX.install文件。这个文件定义了安装、升级、删除软件包前后要执行的操作。

这些操作放到PKGBUILD是不行的,因为最终要安装的是软件包,而非PKGBUILD。

比如,字体软件包安装或卸载后需要刷新字体缓存,这些操作就必须放在install文件中。

4. arch=('x86_64' 'i686')arch=('any') 的区别:

arch=('x86_64' 'i686')表示:该PKGBUILD可以为x86_64和i686平台生成软件包,但生成的软件包并不能跨平台。

arch=('any')表示:该PKGBUILD生成的软件包在x86_64和i686平台都可以安装。

5. package()build() 函数的区别:

package()是在fakeroot环境执行的,所以能使用某些特殊命令。

其实,通常情况下,把编译过程放在package()、或是把所有操作都放在build()都是可以的。makepkg只保证package()build()(以及不常见的check())之后执行。

6. “xxx || return 1”中“return 1”的作用:

xxx || return 1”的意思是:如果 xxx 命令出错退出了,就退出当前函数并返回错误代码1。这是为了保证重要过程出错时makepkg及时停止。

估计是历史遗留,现在用处不大,因为makepkg本来就会自动出错停止。

7. makepkg不会自动删除旧的src目录,可能导致第二次编译错误:

在执行过一次makepkg的目录再次执行makepkg,src目录不会自动被删除。如果有patch之类的操作,可能因为上次patch过而导致错误。需要手动删除src目录。

Category: 计算机 | Tags: arch cvs Git linux shell svn 软件
1
2
2012
9

供同学们膜拜的 Linux

随便截图若干。

 

常规操作

1. 用强大的Vim写代码

屏幕截图 - 2012年01月02日 - 08时30分00秒.png

2. IBus输入法,以及记事本:

屏幕截图 - 2012年01月02日 - 08时32分47秒.png

3. 支持HTML5的Firefox:

屏幕截图 - 2012年01月02日 - 11时21分00秒.png

 

中国特色

4. 用python-webqq登陆扣扣:

屏幕截图 - 2012年01月02日 - 11时41分26秒.png

5. WebQQ弱爆了?来个TM2009,还带迅雷:

屏幕截图 - 2012年01月02日 - 08时38分46秒.png

6. 哪里的网络最自由?:

屏幕截图 - 2012年01月02日 - 12时05分57秒.png

 

娱乐

7. 听歌+歌词插件:

屏幕截图 - 2012年01月02日 - 11时18分34秒.png

 

8. 黑白的命令行放彩色电影:

9. Linux下打星际:

10. Linux下打使命召唤6

  

 

 

面子工程

11. Stellarium观天象:

屏幕截图 - 2012年01月02日 - 11时56分29秒.png

12. 十年前的Geforce2都能带动的特效:

13 & 14. 最新G3科技

 

12
26
2011
0

在github搭建Arch软件仓库

想搞一个Arch软件仓库。没钱买服务器,就想着扔到个代码托管网站。本来想用google code,结果SVN总是连不上,最后在github弄了个:pakkuman

Arch的软件仓库构造简单,所以放git上也没啥难的。速度还不错,起码能达到100KB/s(以前github慢死了,现在好多了)。

目前没啥特色,主要是验证一下想法。

pacman.conf:

[pakkuman]
Server = https://raw.github.com/cuihaoleo/pakkuman/master/$arch

目前的软件包(随便找了几个以前编译的):

cuihao@cuihao-arch ~ $ pacman -Sl pakkuman
pakkuman amule-dlp-hg 20111016-1 [已安装]
pakkuman freetype2-git-infinality 2.4.99.git20111130-1 [已安装]
pakkuman gtkqq-git 20111226-1 [已安装]
pakkuman ibus-cloud-pinyin-svn 148-1 [已安装]
pakkuman python-webqq-svn 15-1 [已安装]

Category: 计算机 | Tags: arch linux git 软件

| Theme: Aeros 2.0 by TheBuckmaker.com