|
我的系統是幾年大概是 LFS-6.1 的年代前建立的,當時的 LFS/BLFS 系統採用 Xorg-6.9,我的舊版 Xorg-6.9 應該是升級 gcc-4.0.x 後建立的。但現在看來可說是年華老去,早已過時,一直想將其升級,但 Xorg-7 的安裝方法跟 6.9 非常不同,加上大堆應用程式每天在幹活,很不樂意去從頭大幹一場,又恐防底層 Xorg 的變更會跟上層 Qt、GTK 等不相容,萬一有差錯,隨時得不嘗失,結果升級無門,強忍至今。
直至某天拜讀深空兄<从 Xorg-7.3 部分升级到 7.4+ (使用准稳定版支持 ATI DRI)>http://www.linuxsir.cn/bbs/thread345232.html 一文帶來啟發,於是立定決心升級去也。當然升級歸升級,前題是不能因為升級而導致系統癱瘓,引發大規模重建了。
首先第一件事要確定的是目標安裝路徑,Xorg-6.9 的默認安裝路徑是 /usr/X11R6,而 Xorg-7.4 主張安裝在 /usr,當然只要在設置上稍作修正,任何路徑都是可行的
BLFS 手冊曾經提及建立 symlink 去讓 7.x 往 X11R6 兼容,因此得到提示,策略上跟我安裝多版 gcc 的方式一樣,巧用 symlink 的技倆是也。見 http://www.linuxsir.cn/bbs/thread329026.html
即是說,原來的 /usr/X11R6 移到 /usr/x11r6
- mv /usr/X11R6 /usr/x11r6
- ln -s /usr/x11r6 /usr/X11R6
复制代码
新安裝的 Xorg-7.4 就裝到 /usr/X11R7
如此,只要建一個 /usr/X11R6 的 symlink,連到 /usr/x11r6 就是使 Xorg-6.9,如果連到 /usr/X11R7 就會使用 Xorg-7.4 了,豈不快哉?
入正題,參照 BLFS 手冊關於 Xorg-7.4 的部份
1. 設置編譯環境:
- mkdir xc && cd xc
- export XORG_PREFIX=/usr/X11R7
- export XORG_CONFIG="--prefix=$XORG_PREFIX --sysconfdir=/etc \
- --mandir=$XORG_PREFIX/share/man --localstatedir=/var"
复制代码
這個環境最好是保存到文檔裡,方便日後重覆使用
2. 為免編譯安裝進行期間對任何現有系統有沖突,作如下臨時配置:
2.1 將 $PATH 裡所有 QT、KDE、/usr/X11R6/bin 之類的路徑清除(在後面裝好 Xorg App 再補回)
2.2 unset PKG_CONFIG_PATH (在後面會再次建立的)
2.3 將剛剛在上面建立的 /usr/X11R6 symlink 也除掉
Xorg Protocol Headers
共 29 包,沒啥特別,依書照做
Xorg Utilities
依賴 pkg-config,但 pkg-config 在現系統已裝好在 /usr 的了,除非要升級,否則可以繼續 wget 把包下回來後,有 6 個包,先建立環境變量
- export PKG_CONFIG_PATH="/usr/lib/pkgconfig:/usr/share/pkgconfig:/usr/X11R7/lib/pkgconfig"
复制代码
然後再去 configure,依書照做
libXau-1.0.4,libXdmcp-1.0.2,xcb-proto-1.1 照手冊行事
libxcb-1.1 有兩個新依賴,libxslt 及 libpthread-stubs,前者在我的系統裡已裝好,後者安裝也是很直接的,基本沒有難度。 BLFS 手冊提到一個變量設置- export LIBXCB_ALLOW_SLOPPY_LOCK=1
复制代码
原先我也不設的,但後來要跑一些 Java 應用還是設置它才行,只好把它加到 /etc/profile 裡好了
xcb-utils-0.3.0,依賴的 Gperf 原來已裝,沒難度
Xorg Libraries
依賴的 Fontconfig 已有,新的 ed-1.2 乃 easy job。這次 wget 下了 36 個包,編譯方式照手冊做,這次比較麻煩,libraries 之間都有次序要求,還好 CBLFS 的 wiki 比較詳細,總的來說,xtrans、libX11、libXext 要最先裝,其他看 CBLFS 的次序也差不多了
前面 2.3 已把 /usr/X11R6 這 symlink 去掉,現在是時候重建它了,把它指向 /usr/X11R7
- ln -s /usr/X11R7 /usr/X11R6
复制代码
檢查一下系統的 /usr/lib/X11 及 /usr/include/X11 這兩個 symlink,它們應該在現有系統裡 Xorg-6.9 就已經建好的,檢查一下連結是否 dead link 就行了,因為現在應該是透過 /usr/X11R6 連結到 /usr/X11R7 去的
如果連結有效,那麼手冊的[color="Blue"]下列兩部可以省略跳過
ln -sv $XORG_PREFIX/lib/X11 /usr/lib/X11 &&
ln -sv $XORG_PREFIX/include/X11 /usr/include/X11
Xbitmaps-1.0.1,straightforward
MesaLib-7.2
原系統已有 freeglut-2.4.0,expat-2.0.1,只要追加/升級 libdrm-2.3.1 就能滿足依賴。安裝後檢查 /usr/include/GL,如果它仍是連結到 /usr/X11R6/include/GL 那麼手冊上的
[color="Blue"]ln -s -v ${XORG_PREFIX}/include/GL /usr/include 可以跳過
Xorg Applications
libpng 應該是已經有的,無需重裝,但升級一下到最新版也無妨。Xorg App 共 43 個包,沒有次序分,按手冊行事就能搞定
裝好後把 /usr/X11R6/bin 加到 PATH 變量裡:
- export PATH=$PATH:/usr/X11R6/bin
复制代码
xcursor-themes-1.0.1,nothing special
Xorg Fonts
共 38 個包,只有 [color="Red"]encodings,font-cursor-misc 及 font-misc-misc 三個包是必需的,其他都是可隨意選的字體,手冊後面交待過 cursor 及 "fixed" 是 Xorg 啟動時必需,可以卻沒有任何說明 "fixed" 是由 font-misc-misc 提供的,瀏覽這個 tarball 的內容也不會顯示出來,暈死!
[color="Blue"]以下步驟可以省略:
install -v -d -m755 /usr/share/fonts &&
ln -svn $XORG_PREFIX/lib/X11/fonts/OTF /usr/share/fonts/X11-OTF &&
ln -svn $XORG_PREFIX/lib/X11/fonts/TTF /usr/share/fonts/X11-TTF
因為 /usr/share/fonts 已經存在 /usr/share/fonts/X11-OTF 及 /usr/share/fonts/X11-TTF 都已存在,但現在是 dead link,因為它們連到 /usr/X11R6/lib/X11/fonts/ 之下,但 /usr/X11R6/lib/X11/fonts/ 再沒有 OTF 及 TTF,重建即可解決:
- mkdir /usr/X11R7/lib/X11/fonts/{O,T}TF
复制代码
XkeyboardConfig-1.4
intltool-0.40.6 是新依賴,XML:arser 早已安裝了,基本又是普通料,一下子可搞定
Luit-1.0.2 及 Xorg-Server-1.5.3 同樣直接,這裡不採用 Xorg-Server-1.6,因為網上流傳的問題頗多,暫時沒空去探索,反正 Xorg-7 是模組化,日後個別升級也未遲。
Xorg Drivers
又有 45 個包下回來了,不過不用全裝,input 只裝了鼠標及 keyboard,顯驅就只裝了 nvidia(我用的是 N 卡)
至此,全部編譯經已完成,剩下來的是配置了
由於前面已建好 /usr/X11R6 連到 /usr/X11R7 的 symlink,所以"Creating an X11R6 Compatibility Symlink" 這步已經做了,下面的照做
- for file in $XORG_PREFIX/{lib/X11/xinit,share/X11/{app-defaults,twm,xkb}}
- do
- mv -v $file /etc/X11/ 2> /dev/null &&
- ln -v -s /etc/X11/$(basename $file) $file
- done
复制代码
完成後在新建立新的 xorg.conf 之前應該先備份好原系統的 xorg.conf,以免出錯後不能用舊配置還原
- mv /etc/X11/xorg.conf /etc/X11/xorg.conf.69
复制代码
Xorg-6.9 跟 7.4 的模塊存放路徑不同:
6.9 放在 /usr/x11r6/lib/modules
7.4 放在 /usr/X11R7/lib/X11/modules
另外發現 7.x 的 xorg.conf 內容跟舊有格式好像有少許不同,為免出錯,現階暫時分開 6.9 及 7.4 的 xorg.conf 為上,新建的 xorg.conf 將取名叫 /etc/X11/xorg.conf.74,日後有空再把它們統一吧。
由於配置太麻煩,最快(最懶)的做法就是找張採用 Xorg-7.4 的 Linux LiveCD 來啟動,把它的 xorg.conf 拷過來修改,我用的是 Sidux-2009-01(基於 Debian Sid),拷過來再把字體的路徑更正並按手冊在 ServerFlags 下修改一下便行
- Section "ServerFlags"
- Option "AllowEmptyInput" "false"
- EndSection
- EOF
复制代码
現在有了:
6.9 的配置文件 /etc/X11/xorg.conf.69 及新的
7.4 的配置文件 /etc/X11/xorg.conf.74
建個 /etc/X11/xorg.conf 連到 /etc/X11/xorg.conf.74 便行
如果想用回 6.9,只要將 /usr/X11R6 連到 /usr/x11r6 同時將 /etc/X11/xorg.conf 連到 /etc/X11/xorg.conf.69 就可以了
哈哈,大功告成了!
PS:最後加裝 xterm 及 Bitstream Vera 字體,這些都是過去 Xorg-6.9 時默認添加的。 |
|