LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2193|回复: 16

BLFS 系統 Xorg-6.9 升級 7.4 手記

[复制链接]
发表于 2009-3-23 22:45:28 | 显示全部楼层 |阅读模式
我的系統是幾年大概是 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
  1. mv /usr/X11R6 /usr/x11r6
  2. 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. 設置編譯環境:
  1. mkdir xc && cd xc

  2. export XORG_PREFIX=/usr/X11R7

  3. export XORG_CONFIG="--prefix=$XORG_PREFIX --sysconfdir=/etc \
  4.     --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 個包,先建立環境變量
  1. 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 手冊提到一個變量設置
  1. 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
  1. 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 變量裡:
  1. 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,重建即可解決:
  1. mkdir /usr/X11R7/lib/X11/fonts/{O,T}TF
复制代码


XkeyboardConfig-1.4
intltool-0.40.6 是新依賴,XML:arser 早已安裝了,基本又是普通料,一下子可搞定

Luit-1.0.2Xorg-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" 這步已經做了,下面的照做
  1. for file in $XORG_PREFIX/{lib/X11/xinit,share/X11/{app-defaults,twm,xkb}}
  2. do
  3.      mv -v $file /etc/X11/ 2> /dev/null &&
  4.      ln -v -s /etc/X11/$(basename $file) $file
  5. done
复制代码


完成後在新建立新的 xorg.conf 之前應該先備份好原系統的 xorg.conf,以免出錯後不能用舊配置還原
  1. 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 下修改一下便行
  1. Section "ServerFlags"
  2.         Option "AllowEmptyInput" "false"
  3. EndSection
  4. 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 時默認添加的。
发表于 2009-3-24 08:58:05 | 显示全部楼层
版主一出手果然不同凡响,收藏学习。。。
回复 支持 反对

使用道具 举报

发表于 2009-3-24 13:40:18 | 显示全部楼层
没有出现兼容性问题?
不需要重编译 qt gtk? 如果这样看来二进制兼容性不错,继续向上升级问题不大。
回复 支持 反对

使用道具 举报

发表于 2009-3-24 19:03:31 | 显示全部楼层
其实在gentoo的xorg1.5中已经可以不用像素字体包了(自己装个喜欢的包就可以,虽然启动一些软件会提示fixed出错可是还是可以运行),只是还没了解是怎么实现的,毁灭老大试试不?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-24 19:14:26 | 显示全部楼层
我查看过 font-misc-misc 的 tarball,其实当中也没有任何一款字是以 "fixed" 为名的,也就是说 font.alias 为它定义的

如果明白它定义的方式,我想任何一种字都可以是 "fixed" 了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-24 19:22:02 | 显示全部楼层
Post by 聚焦深空;1964830
没有出现兼容性问题?
不需要重编译 qt gtk? 如果这样看来二进制兼容性不错,继续向上升级问题不大。


没有任何兼容性问题,也不需要重编译 qt gtk,so far so good!:%

小问题倒是有两个,但这些并非兼容性问题:

1. GTK2 的应用如 emelfm2、SeaMonkey 等很正常,但 GTK1 的 gentoo、PuTTy 等就会出现字体过大,不知道在哪里配置

2. libdrm.so.2 被投诉找不到,明白是装在 /usr/X11R7/lib 里连结到 libdrm.so.2.3.1,怎会找不到?临时在 /usr/lib 里建了一个连结就好,废解!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2009-3-24 20:31:54 | 显示全部楼层
Post by d00m3d;1964925
我查看过 font-misc-misc 的 tarball,其实当中也没有任何一款字是以 "fixed" 为名的,也就是说 font.alias 为它定义的

如果明白它定义的方式,我想任何一种字都可以是 "fixed" 了


fixed 字体是指那些以数字开头的那些像素字体,gentoo下的xorg不用可以但是也会提示fixed error,只是不影响正常使用而已

关于fixed字体解说我曾在一blog上看过详细解说,只是当时没保存,郁闷
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-24 20:43:51 | 显示全部楼层
那天我还未装上 font-misc-misc 的时候,系统里是没有 font.alias 的,X 无法启动

BLFS 手册提及过 "fixed" 是那些以数字开头字体,所以明显就是要找出它们的关系,知道定义的方式应该可以吧

我对字体不熟识,中文更糟糕,早年发帖都要用英文,惭愧死!

这方面还有待各位指教
回复 支持 反对

使用道具 举报

发表于 2009-3-24 20:54:54 | 显示全部楼层
楼上的楼上,X 字体名字不是你那样理解的。

比如 font-misc-misc 只是包名,
安装后,运行 mkfontdir 得到的 fonts.dir 中有完整字体名字,当中有 fixed 关键字。

只是现在大家几乎都不用纯 X 程序,当前 gtk+ qt 使用的 freetype 表现又相当的好,X 字体消失是趋势,不必深究,真的有疑问不如自己动手。

至于 fixed 字体的问题是 xinit 运行过程中有程序依赖,你跳过去直接开个 X 试试(就是直接运行 X,不要什么 startx xinit 之类)。
回复 支持 反对

使用道具 举报

发表于 2009-3-24 21:49:55 | 显示全部楼层
Post by 聚焦深空;1964977
楼上的楼上,X 字体名字不是你那样理解的。

比如 font-misc-misc 只是包名,
安装后,运行 mkfontdir 得到的 fonts.dir 中有完整字体名字,当中有 fixed 关键字。

只是现在大家几乎都不用纯 X 程序,当前 gtk+ qt 使用的 freetype 表现又相当的好,X 字体消失是趋势,不必深究,真的有疑问不如自己动手。

至于 fixed 字体的问题是 xinit 运行过程中有程序依赖,你跳过去直接开个 X 试试(就是直接运行 X,不要什么 startx xinit 之类)。


或许我表达能力不好,不过fixed字体最终使用的是那些以数字开头的位于/usr/share/fonts/misc/下的像素字体应该是没错的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表