Linux上面碰到鬼畜逆天級的軟體依賴關係大家都是怎麼解決的?

時間 2021-05-10 17:07:36

1樓:張宇奇

你說的linux的軟體依賴問題,但是其實可能那只是ubuntu的軟體依賴問題。

如果你用arch系的,manjaro等等,那麼大概率你之前遇到的問題都不再是問題了。

其他的,比如gentoo更是。

2樓:

有,這個是2023年遇到的問題

我們老闆給的破系統是要執行在Ubuntu 10.04 的環境下面的,而UI 執行環境是必須在12.04 下面的。。。對就是該死的巢狀依賴包的問題

早期我們的解決之道就是虛擬機器,而現在所謂的docker 那時候才剛剛起步,能跑起來就不錯了。

所以我當時的解決方式如下:

請記住乙個Linux的核心思維問題:In Linux, everything is a file

本著這個原則,我直接從 Ubuntu 10.04 裡面端走這些依賴包到新的系統裡面去。

/usr/lib/libbfd-2.20.1-system.20100303.so

/usr/lib/libboost_filesystem.so.1.40.0

/usr/lib/libboost_program_options.so.1.40.0

/usr/lib/libboost_system.so.1.40.0

/usr/lib/libc-client.so.2007e

/usr/lib/libicudata.so.42

/usr/lib/libicui18n.so.42

/usr/lib/libicuuc.so.42

/usr/lib/libmysqlclient_r.so.16

(部分依賴)

成功把那套該死的系統從Ubuntu 10.04 遷移到14.04 下面。這時候你在看一下,是不是Linux 下面每個包都是按版本號走的?有時候就是這麼解決共存問題的

比如 libicui18n.so.42, 我的預設環境是 libicui18n.so.46 ,但是破系統要的就是42. 於是遷移複製即可。。

所以,只要你找對對應的依賴包,整體複製遷移是可行的。但是請務必保留好相關文件和遷移工作記錄,否則重灌以後,你還會抓狂的。

多一句: 此乃邪道,能用但是你得小心。

3樓:

有這個時間你說不定已經靜態編譯好這個東西了。

用docker當然也可以,但是和原有的系統整合很不方便。

不過,沒有在repo裡的包安裝要謹慎,尤其是依賴和已有的包衝突時,這樣也許會變成按下葫蘆浮起瓢的情況,最後你發現浪費很久時間唯一的結論是這事根本辦不成。

4樓:問道中山

鬼畜依賴莫過於a依賴b,b依賴c,c依賴a,你說說這怎麼安裝?!

建議上docker或者singularity,容器化解決一切依賴,想怎麼搞怎麼搞

5樓:linuxboy

使用 nix 或者 guix 包管理器解決

通常遵循FHS的系統只能裝軟體的乙個版本

而Nix/Guix可以安裝軟體的所有版本,切換起來沒有毛病,而且互不干擾

6樓:CodeMagic

這種情況是你安裝的軟體包的依賴與你系統自帶的不相容導致的。這些依賴的軟體包往往也也被其他軟體所依賴,強制解除安裝會導致這些軟體工作不正常。一般這種情況不建議對強制安裝該軟體包,因為可能導致系統不穩定甚至崩潰。

在Linux下,這個問題非常常見,最佳實踐是自己編譯安裝,編譯安裝後,該軟體的依賴會和你的系統一致。對於Linux使用者來說,編譯安裝時非常簡單的,可以檢視相應軟體的編譯說明,按步驟來就好了。

7樓:葉風

以前我對於安裝依賴的事情都是先-f,不行的話看報錯從最下邊給上變裝,再不行的話。。。。。。換系統。到現在用的是arch,感覺很棒

8樓:

Ubuntu上最好不要安裝非官方的包。

之前有一回手動安裝第三方的包,結果衝突了,然後各種搞,最後居然把apt都搞解除安裝了。。。

現在有docker就盡量docker了。

9樓:沙拉洗了頭

自己下原始碼,在自己環境上重新編譯,這樣就會依賴自己當前環境啦

關鍵還是要耐心,最近剛幹了乙個事情,為了裝乙個ROS,新引入了200多個rpm,並且都是從原始碼重新編譯的

10樓:Exception.neko

乙個問題你能遇到,其他人也會遇到,軟體開發者發布軟體之前不可能考慮不到這種問題。所以首先谷歌,然後去軟體官網看看,一般都能有驚喜。

11樓:shen xs

硬體商強推liunx你以為是要幹什麼?不把你虛擬機器弄到十幾套,螢幕弄到四個這事不算完,裝什麼依賴,反正公升級以後其他軟體依賴又會出問題,只好每種應用環境都打包一套虛擬機器,電腦才能用的樣子,現今社會你沒有個32g的i9帶上十幾套虛擬機器還想好好用電腦?

12樓:

直到有一天我用sudo apt remove gcc 解除安裝了gcc

然後感受到了四大皆空的境界。

不過現在已經換成Windows用wsl了,出了問題解除安裝重新去商店裝乙個就好了,資料存在/mnt/c下面還不用擔心資料會丟

13樓:lophyxp

依賴這種問題,還是交給apt、dnf、emerge、pacman來解決吧!不要試圖用dpkg、rpm、ebuild來解決依賴問題,它們的工作是安裝。

14樓:閃電俠的右手

我記得裝tex的時候,各種依賴出錯。對,是各種。最後tim都打不開了,崩潰之下,只想活著。然後,重灌唄。

被顯示卡驅動安裝支配的恐懼,再也不敢亂按軟體了。

15樓:fduxiao

可以試一試arch aur的mingw gcc,那個依賴路徑是衝突的(headers和winpthreads衝突,gcc和gcc-base衝突,gcc base依賴headers,gcc依賴winpthreads和crt,crt依賴headers和gcc base),就得忽略依賴項解除安裝然後安裝,解決問題

16樓:

1. 日常用好sudo,不要直接登入root使用者。

2. 不受發行版控制、又有特殊依賴的軟體,都放進/opt/手工管理。(或自建目錄)

3. 成熟的發行版會協助使用者混合第三方軟體,例如archlinux的aur平台。安裝第三方軟體應當首先利用這類平台。

4. 發現作者打包時寫錯了,手工修改一下。deb包的格式比較簡單。

如果以上不能解決,那麼:

最簡單的,chroot切換根檔案系統。複雜的就用虛擬化方案,比如docker、uml現在都很成熟了。也可試試Gentoo,它有條件支援多版本共存。

遠端連線linux伺服器,需要linux伺服器開啟sshd服務,此服務監聽哪個埠?

FancyGo 預設的sshd服務都是22埠,不過你也可以把這個埠號給改掉。一般是這個檔案 etc ssh sshd config,裡面的Port欄位改成你自己的想要的埠。然後重啟一些sshd服務。然後還要注意把該埠的防火牆放開就可以了。 張驍 man sshd p port Specifies t...

如何學好Linux

蘿蔔頭linux 其實linux並沒有想像中那麼難搞。他也是個系統,跟你每天跟windows打交道一樣,你每天都在玩windows,那麼你對windows就很熟。如果你每天都玩一下linux,那麼對linux也會很熟。linux如何學起,我有一點點經驗分享一下。1.你得從總體上感知一下linux,那...

如何Linux入門?

感覺是個熟悉的過程,像交個朋友一樣的態度對待學習這件事,你會慢慢發現,你和Linux已經是個多年的老友了 電子小C 買塊開發板,跑基本例程,自己跟著乙個個寫,資料學習也有配套的,特別多,推薦小梅哥,還有黑金的AX301,以及睿智開發板網上都很火的學習資料,入門還是得看你自己能力咯!ALINXALTE...