Showing posts with label yum. Show all posts
Showing posts with label yum. Show all posts

Friday, July 30, 2010

A台有的套件, B台也要

給未來的裕翔

這是一個我很喜歡的實作題

首先, 在A台電腦把所有安裝的套件名稱存檔

rpm -qa -queryformat "%{NAME}" > a-installed.txt

把a-installed.txt複製到B台電腦後

比較優雅的作法是, 把B台也有的套件從名單濾掉
for package in `cat a-installed.txt`
do
rpm -q $package &> /dev/null || echo $package >> b-not-installed.txt
done

先不管指令的回傳值, 上面那個script的意思是

對a-installed.txt的每個套件名稱

測試B本機有沒有, 以rpm -q來測試, 沒有就當false(先不管回傳值)

兩個指令中間是以||區隔

&&檢查到有false就停

||是檢查到有true就停

對那些不存在B本機的套件, 回傳false, 因此就會執行第二道指令

把它們的名稱echo到b-not-installed.txt裡面

那如果B本機本來有存在數個a-installed.txt裡面的套件呢?

在一開始的rpm -q會回傳true, 然後就沒事了~

這樣產生的b-not-installed.txt就是A有B沒有的

接著, yum似乎不能接受stdin來的input

所以可以利用xargs

cat b-not-installed.txt | xargs sudo yum -y install



sudo yum -y install `cat b-not-installed.txt`

似乎後者較好^^

當然啦, 這是比較優雅的作法, 因為少了上面那個bash script

也是無所謂阿, 已經裝過的會自動略過嘛!

yum和rpm查詢安裝軟體的速度

給未來的裕翔

如果想知道裝了哪些含有gnome字眼的套件

rpm -qa | grep gnome



rpm -qa '*gnome*'

都可以, 速度差不多

如果要用yum的話

yum list installed | grep gnome



yum list installed '*gnome*'

也是都可以

不過後者快多了!

Friday, July 9, 2010

yum暫時disable某個repo

給未來的裕翔

為了達到這個功能

當然是先google中文網站來看看阿^^

太失望了~ 太失望了!

都只講最基本的~

沒辦法, man yum, 哈哈, 早該這樣了^^"

回重點, 我現在情況是

想要yum provides */gcj

google-crome的那個repo似乎有問題?

然後就中斷了

想暫時取消該repo的話

yum --disablerepo=google-chrome provides */gcj

搞定!

怎不直接改google-chrome.repo?

我又不是永久不用, 暫時性略過而已~

Thursday, July 1, 2010

yum的reinstall

給未來的裕翔

如果想要恢復某些套件的config初始設定

可以笨笨的把它移除再重新安裝

不過萬一有一堆套件相依舊慘了

所以這裡建議

直接笨笨的把它重新安裝吧^^

yum reinstall xxx

要注意的是

如果檔案原本已存在, 不會覆蓋

所以要把config砍掉或是改名當備份

然後才執行yum reinstall xxx

Wednesday, June 23, 2010

yum的groupinstall再簡化

給未來的裕翔

一般都以sudo yum -y install xxx

xxx是package名稱

偶爾會需要

sudo yum -y groupinstall yyy

一次裝一堆相關的東東

簡化版本

sudo yum -y install @yyy

酷吧^^

Thursday, June 17, 2010

把套件降級

給未來的裕翔

如果某套件太新版導致其它相依性套件出錯

可以把它降級

ex:
yum downgrade nss-softokn-freebl

Thursday, May 27, 2010

yum的repo的enabled預設1?

給未來的裕翔

/etc/yum.repos.d裡面的repo檔

要設定來源時

似乎不需要特別設定enabled=1?

因為沒設也會成功說

Tuesday, May 18, 2010

yum的grouplist, search, provides

給未來的裕翔

有些套件是以達成某功能再聚成一個group的

可以用yum groupinstall來安裝

安裝前可以先yum grouplist來看有哪些

另外, 如果不知到確實的套件名稱

可利用yum search string

string的搜尋範圍包括套件的name, summary, description

列出符合關鍵字的套件

最後, 以前都用yum whatprovides來看什麼檔是由什麼套件提供的

似乎yum provides就可以了?

改天來試試

Saturday, March 20, 2010

package的移除測試

給未來的裕翔

比起知識

最近更享受於一些小測試

如果我對一個套件的檔案進行編輯, 甚至移除後重建同名的空檔

當套件被移除時, 這些被我動過的檔案會如何?

ex: /usr/lib/libhighgui.so.2, /usr/lib/libhighgui.so.2.0.0

lighighgui.so.2.0.0vi開啟隨便新增一行

libhighgui.so.2進行移除, 重新touch一個同名空檔

yum erase -y opencv

ll /usr/lib | grep highgui

兩個檔案都被移除掉了

結論: 移除是以檔名在做辨認的

而非檔案類型

note: 剛才對檔案修改後

移除前先rpm -V opencv的話

有些未修改的檔案會無法驗證

因為它們會用到libhighgui.so

表示驗證時有其它機制在, 詳情不甚了

Monday, March 15, 2010

yum遇到未完成的transaction

給未來的裕翔

如果yum安裝到一半時, 不小心按了Ctrl + c

之後再使用yum就會遇到未完成的transaction問題

網路上建議

yum-complete-transaction

又建議這樣更好

yum-complete-transaction --clean-up

平常使用yum都可以看到先安裝, 後刪除的動作

--clean up我猜就是"後刪除"的動作

yum相依性問題

給未來的裕翔

可先看過這篇"yum update問題解決"

在那篇裡

我的方法是啟動updates-testing這個repo

不過最一開始

我的處理方法是置之不理^^

假設在安裝gnucash套件時遇到這樣的問題

我當初是使用--skip-broken

yum -y install gnucash –skip-broken

僅供參考

Friday, March 12, 2010

yum update問題解決

給未來的裕翔

如果在yum update時遇到類似底下的錯誤訊息

(每行太長的會以...截掉)


(上略)
--> Finished Dependency Resolution
nss-3.12.6-1.2.fc12.i686 from updates has depsolving problems
--> Missing Dependency: nspr >= 4.8.4 is needed by package nss...
nss-3.12.6-1.2.fc12.i686 from updates has depsolving problems
--> Missing Dependency: nss-util = 3.12.6 is needed by package nss...
Error: Missing Dependency: nspr >= 4.8.4 is needed by package nss...
Error: Missing Dependency: nss-util = 3.12.6 is needed by package nss...
You could try using --skip-broken to work around the problem
You could try running: package-cleanup --problems
package-cleanup --dupes
rpm -Va --nofiles --nodigest


請別傻傻的把有問題的package移除再安裝

因為dependency的關係

往往這樣做會一次移除幾十個甚至幾百個package

而在移除的過程, 可能就會陸續出現一些問題了

加上, 事後如何記住那些package重新安裝?

所以, 請照以下步驟, 有智慧的處理此問題

上面錯誤訊息說有問題的是nsprnss-util套件

網路上強者提供此方法:


yum update nspr --enablerepo=u*g
yum update nss-util --enablerepo=u*g
yum update



--enablerepo是暫時啟動/etc/yum.repos.d/*.repo

被設定enabled=0repository


u*gupdates-testing, 直接打updates-testing也是可以的

完整意思就是

暫時啟動原本enabled=0updates-testing

使用它來更新, done!


要這樣做的原因

似乎是有些被需要的套件還在測試

所以尚未放到一般的repository? 我猜~


ps: 這次處理問題的過程中

發現package-cleanup --dupes這指令不錯

可以把系統上重複安裝的package移除掉舊的那個

這樣可以節省空間^^