
我在合約工作中負責 Centos 7 盒子的管理。我實際上更像是開發人員,而不是 Linux 管理員,所以請耐心聽我說,也許嘗試像我 5 歲一樣向我解釋這一點。
我們正在開發的應用程式之一需要名為pdftk。不幸的是,它的依賴項是 libgcj。我讀到 libgcj 已被視為已棄用,並且不再隨新的 Centos 7「發布」。
所以,我這樣做了:
wget http://mirror.centos.org/centos/6/os/x86_64/Packages/libgcj-4.4.7-11.el6.x86_64.rpm
wget https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/pdftk-2.02-1.el6.x86_64.rpm
rpm -ivh --nodeps libgcj-4.4.7-11.el6.x86_64.rpm
yum install pdftk-2.02-1.el6.x86_64.rpm
是的,pdftk 現在可以工作了。然而,我一直在閱讀並確定這是一個壞主意。沒有給出任何理由來說明為什麼這是一件愚蠢的事。那麼有人能解釋為什麼我不應該這樣做嗎?或給我一些建議或我現在應該採取的預防措施?我擔心重新啟動伺服器或安裝更新,直到我知道這不會破壞我們的盒子。
先感謝您。
答案1
這並不意味著是一個完整的答案,但到目前為止,沒有人提供為什麼這不是一個程序的原因可能是一個壞主意:
某些版本的套件依賴外部庫提供的功能。這些庫隨著時間的推移而變化,在這個過程中可能會改變它們的行為,甚至完全刪除功能。從 EL6 遷移到 EL7 是一個相當大的步驟,因此可能會有一個新版本的套件/庫 XYZ,它通常可能與您安裝的套件版本一起使用,但不完全適用。
在您的情況下,pdftk 通常可能會按預期工作,但在某些特殊情況下,可能會有一個函數調用,該函數調用無法與其餘已安裝的軟體包一起使用,因此可能會崩潰或出現意外行為。評估這種不當行為的根源將變得非常棘手。
可能還有很多其他原因不這麼做,但這是我首先想到的,對於生產系統來說穩定性是關鍵。因此,我不會混合不是為特定作業系統版本設計的版本。至少在沒有經過徹底測試的情況下是如此。
答案2
主要問題是:
不支援
您可以使用一些命令列將gcc-java
, libgcj
,添加libgcj-devel
到您的系統中。但是,CentOS 7 不支援該軟體。這導致我們...
Rackspace 不支援它。當然,與 Ubuntu 相比,使用 CentOS 的一個好處是它有更好的企業支援。當您使用這樣不受支援的配置時,您將失去所有這些。因此,如果你告訴 Rackspace“給我製作一個帶有 XYZ 軟體的伺服器,包括 pdftk”,他們會告訴你“不”。
如果其他人需要pdftk 在支援的配置中在CentOS 7 上工作,則存在一個分支來重寫Java 部分並使其被CentOS 7 接受。啟動一個這項工作的賞金。我邀請您查看此賞金並在以下地址進行分叉:https://github.com/fulldecent/pdftk