簡(jiǎn)單的解決方式: Shared object "libintl.so.4" not found 跟 libc.so 函式一樣 也是在安裝某些軟體就會(huì)出現(xiàn)錯(cuò)誤畫面. 問題分析: libintl.so 函式是安裝 /usr/port/devel/gettext/ 程式後取得. 理論上來說 目前版本的相關(guān)函數(shù)是 libintl.so.5 為何還要去讀取舊的 libintl.so.4 版本. 當(dāng)你在安裝gmake時(shí),gmake會(huì)去連結(jié)安裝gmake當(dāng)時(shí)的libinl.so的版本,是version 4. 也就是 libintl.so.4 當(dāng)你更新過相關(guān)的ports (devel/gettext) 將會(huì)用 libintl.so.5 取代 libintl.so.4 除非你能取得先前某些系統(tǒng)保留舊有的 libintl.so.4 否則就會(huì)出現(xiàn)安裝失敗狀況. 很可惜的是...有很多程式需要 gettext 函式. 你可以用 cd /usr/ports/ ; make search key="gettext" | more 查詢?yōu)槭颤N要加上more 因?yàn)樘嗯履憧吹交桀^... 問題解決: 要解決這個(gè)問題 你可以透過重新建立所有與 gettext 相關(guān)的ports程式 # portupgrade -fr gettext 重新建立或重新安裝所有與 gettext相關(guān)連的程式, 若你忘掉了 請(qǐng)參閱 更新ports/升級(jí)系統(tǒng) >; portupgrade 軟體更新或是簡(jiǎn)單的用偷吃步 把*目前版本*link過去..QQ (版本6..類推)然後就可以順利進(jìn)行程式安裝. 針對(duì)某些 ports 不做 CVSup 若 ports 底下的某些分類完全用不到,則可以在 CVSup 時(shí),不做更新,以節(jié)省 網(wǎng)路頻寬與時(shí)間。 # vi /usr/sup/refuse ****************************************** ports/french ports/german ports/hebrew ports/hungarian ports/japanese 那麼則上述目錄下的檔案皆不會(huì)更新。 如果是想要某些單一的 ports 不做同步,例如想保留舊版不做同步,或新版出現(xiàn) 問題時(shí)。 # vi /usr/sup/refuse ****************************************** ports/lang/perl5.8 那麼 ports/lang/perl5.8 這個(gè) ports 不會(huì)做 CVSup 同步。這些設(shè)定方法支援萬(wàn)用字元。 # vi /usr/sup/refuse ****************************************** ports/lang/perl* ports/po* 安裝 ports 出現(xiàn) port is outdated 的錯(cuò)誤訊息 例如安裝 imap-uw 時(shí),出現(xiàn)以下內(nèi)容: Your installation of the cclient port is outdated. Please delete it before continuing. 表示因?yàn)橄鄬?duì)應(yīng),且已安裝好的 cclient 這個(gè)軟體過於老舊,建議先升級(jí)這個(gè)軟 體再行安裝 imap-uw。因此只要先升級(jí) cclient 後,再安裝即可。 # cd /usr/ports/mail/cclient/ # make reinstall 或 # make deinstall && make install # cd /usr/ports/mail/imap-uw/ # make install 安裝 ports 出現(xiàn) OpenSSL vulnerabilities 的錯(cuò)誤訊息 在安裝有些套件時(shí),如果有相依於 OpenSSL 時(shí),且判斷系統(tǒng)目前使用的 OpenSSL 版本有漏洞問題時(shí),會(huì)出現(xiàn)如下的訊息: |
Dependency warning: used OpenSSL version contains known vulnerabilities Please update or define either WITH_OPENSSL_BASE or WITH_OPENSSL_PORT 一般建議的解決方法有二種。 第一種:升級(jí)系統(tǒng)(需含系統(tǒng)內(nèi)建之 OpenSSL 一并升級(jí)),再安裝該套件可以先查詢目前系統(tǒng)所用之 OpenSSL 的版本: openssl version -v 升級(jí)系統(tǒng)可叁考 FNP: upgrade core system 或 FNP: upgrade major system。 升級(jí)完系統(tǒng)後,再進(jìn)行一次 OpenSSL 版本之確認(rèn)。然後再安裝該套件,這訊息就不會(huì)出現(xiàn)了。 第二種:使該套件相依於 ports tree 中的 OpenSSL 這種方法會(huì)安裝 ports tree 中新版本的 OpenSSL,然後相依於此新版本的OpenSSL,而不是系統(tǒng)本身內(nèi)建的 OpenSSL。只要安裝套件時(shí),加入 WITH_OPENSSL_PORT 的叁數(shù),即會(huì)安裝 ports tree 中的 OpenSSL,并且該套件 也會(huì)相依於此。方法如下: make -DWITH_OPENSSL_PORT install這里不建議用叁數(shù) WITH_OPENSSL_BASE,因?yàn)檫@表示安裝套件時(shí),是相依於原本系統(tǒng)中可能有漏洞的 OpenSSL,這樣會(huì)導(dǎo)致安全性的問題。 安裝 ports 時(shí),原本應(yīng)該出現(xiàn)的清單選項(xiàng)不見了 這是由於系統(tǒng)會(huì)紀(jì)錄曾安裝過 ports 的當(dāng)時(shí)所選擇的清單選項(xiàng),因此有時(shí)會(huì)因?yàn)榘惭b時(shí)出了問題,或是再一次安裝時(shí),就不會(huì)出現(xiàn)清單可以選擇。如何讓清單選項(xiàng)重新出現(xiàn)呢? make clean make showconfig # 顯示設(shè)定的內(nèi)容 make rmconfig # 清除設(shè)定的內(nèi)容 make config 之前設(shè)定 ports 的選項(xiàng)預(yù)設(shè)會(huì)紀(jì)錄在 /var/db/ports/{ports_name}/options 內(nèi)容中。如要查看之前 python 有選擇的清單選項(xiàng): cat /var/db/ports/python/options 檢查是否有安裝重覆的 ports/packages 隨著時(shí)間的演進(jìn),不同時(shí)間安裝的軟體會(huì)有不同版本的釋出,而且不同軟體相依的版本號(hào)也不同,所以往往會(huì)造成同一個(gè)軟體安裝過多版本的情形發(fā)生。這里我必須聲明的是,雖然套件名稱相同,可是可能沒辦法上下相容,因此造成有些軟體必須依賴比較舊的版本,而有些軟體必須依賴比較新的版本,如果有這種情形發(fā)生的話,那麼二個(gè)版本的存在是正常的。 否則的話,我們會(huì)建議移除舊版的套件,將所有相依於此套件改為相依於新版的。也就是說,移除舊版的套件,然後將原本相依於舊版的套件,改為相依於新版的套件。注意,我強(qiáng)調(diào)的是新舊版套件是相容的。因?yàn)檫@種做法有點(diǎn)危險(xiǎn),因此不提供做法,請(qǐng)使用更水階的套件管理工具,如 portupgrade 來完成。檢查是否有安裝重覆的 ports/packages 的方法如下: pkg_info | sort | sed -e 's/-[0-9].*$//' | uniq -c | grep -v '^[[]]*1' 如果有一行是顯示" 3 libtool",則表示目前系統(tǒng)有安裝三種不同版本的 libtool套件。 接下來可以檢查這三種版本是否可以相容: cd /usr/ports/ make search name=libtool 如果發(fā)現(xiàn)分別有三種 ports 來代表這三種不同版本的 libtool,就表示他們彼此不相容,必須保留三者,否則可能會(huì)發(fā)生相依問題。假設(shè)如下: /usr/ports/devel/libtool13 /usr/ports/devel/libtool14 /usr/ports/devel/libtool15 反之,如果發(fā)現(xiàn)只有一種 ports 來代表這種不同版本的套件,則表示目前系統(tǒng)安裝的三種版本是相容的,只要修改原本相容於其它二種版本所有的套件,并指向欲保留的那個(gè)版本,然後移除其它二種即可。如發(fā)現(xiàn)系統(tǒng)目前有安裝三種不同版本的 gettext: cd /usr/ports/ make search name=gettext 然後檢查的結(jié)果如下: /usr/ports/devel/gettext 則將所有相依於 gettext 舊版本的其它套件都改為相依於新版的 gettext,然後再移除系統(tǒng)中舊版的 gettext 即可。 `make deinstall' 與 `pkg_delete' 有什麼不同 簡(jiǎn)單來說,`make deinstall' 會(huì)移除該 port,并且不會(huì)叁照其相依/相關(guān)的 ports。 `pkg_delete' 在移除該 port 前,會(huì)叁照其相依/相關(guān)的 ports,并且 `pkg_delete' 有支援 wild card,如要移除所有 p 開頭的 ports,則: cd /var/db/pkg/ pkg_delete p* 要注意的是,如果使用 `make deinstall',則最好確定系統(tǒng)目前所安裝的版本,與 ports collection 中顯示的版本符合,否則有可能會(huì)出現(xiàn)非預(yù)期性錯(cuò)誤;而 `pkg_delete' 是因?yàn)橹苯觿h除系統(tǒng)中所安裝的版本,所以沒有此問題。 因此,換句話說,當(dāng)系統(tǒng)所安裝的版本符合 ports collections 中的版本,則可以使用 `make deinstall' 或 `pkg_delete',否則的話最好用 `pkg_delete'。 安裝 ports 出現(xiàn) local modification time does not match remote 的錯(cuò)誤訊息 這通常表示你已經(jīng)下載了這個(gè)檔案在 /usr/ports/distfiles 的對(duì)應(yīng)目錄中,但是它并不是 port collections 所期望下載的。通常的解決方法是在 /usr/ports/distfiles 的對(duì)應(yīng)目錄中移除此檔案,再重新下載。 例如是安裝 joe 時(shí)出現(xiàn)如下的錯(cuò)誤訊息: fetch: joe2.8.tar.Z: local modification time does not match remote 則將 joe2.8.tar.Z 於 /usr/ports/distfiles 中移除: cd /usr/ports/editors/joe/ make distclean 最後再重新安裝即可 我有個(gè)問題請(qǐng)教 如果我已經(jīng)安裝了一套軟件,比如xorg, 我想把它及其依賴的做成packages,該怎么做呢 ??? make package-recursive 前提是之前沒有安裝其中的包否則會(huì)有問題(我覺得這是bug,不過暫時(shí)還沒有很好的解決辦法) 在 FreeBSD 上模擬 Linux 的環(huán)境 最新最完整的資料在官方的 Handbook 上。 簡(jiǎn)單來說,F(xiàn)reeBSD 核心必須支援,且必須安裝 Linux Runtime Libraries,最後做一些設(shè)定。 如果要執(zhí)行 Linux ELF Binaries,可以先查詢目前 FreeBSD 是否已經(jīng)支援 Linux ELF。 brandelf -l 看是否有 Linux 的字樣,如果沒的話,請(qǐng)回頭檢查是否哪一步驟沒有做到。然後檢查執(zhí)行檔是否為 Linux ELF Binaries。 brandelf execution-binary-filename 如果是 Linux ELF Binaries,則正常執(zhí)行即可。 如果顯示結(jié)果不是 Linux ELF Binaries,但是自己確定是 Linux ELF Binaries 的話,則只要更改一下 ELF 的格式即可。 brandelf -t Linux execution-binary-filename 然後再檢查一次是否已經(jīng)修正為正確的格式。 在 FreeBSD 上安裝 Linux rpm 請(qǐng)確定已經(jīng)成功在 FreeBSD 上模擬 Linux 的環(huán)境,安裝 rpm 的方式如下: rpm --ignoreos --root /compat/linux --dbpath /var/lib/rpm/ -Uvh xxx.rpm |
標(biāo)簽:無錫 合肥 云南 萍鄉(xiāng) 天水 宿州 錫林郭勒盟 克拉瑪依
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《FreeBSD常用命令--ports使用方法講解》,本文關(guān)鍵詞 FreeBSD,常用,命令,--ports,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。