12-Package Managment
12-Package Managment
12-Package Managment
LPI
Li
C1
nuxAdmi
nist
rat
or
PackageManagment
t
.me/
Behzad_
Abyar
i
ﺑﻪ ﻧﺎم ﺧﺪا
Package Management
اﯾﻦ ﻣﺒﺤﺚ در ﺧﺼﻮص ﻣﺪﯾﺮﯾﺖ و ﻧﺤﻮه اﺳﺘﻔﺎده Packageﻫﺎ در ﻟﯿﻨﻮﮐﺲ اﺳﺖ .در وﯾﻨﺪوز ﻏﺎﻟﺒﺎً Packageﻫﺎ ﺑﺎ ﻓﺮﻣﺖ ISOوﺟﻮد دارد و از آن
ﺑﺮاي ﻣﻮارد ﻣﺨﺘﻠﻒ اﺳﺘﻔﺎده ﻣﯽﺷﻮد در ﻟﯿﻨﻮﮐﺲ ﻫﻢ ﻣﻮارد ﻣﺸﺎﺑﻪ وﺟﻮد دارد ﮐﻪ ﺑﻪ ﺑﺮرﺳﯽ آﻧﻬﺎ ﻣﯽﭘﺮدازﯾﻢ.
ﺑﻪ ﺳﻪ روش در ﻟﯿﻨﻮﮐﺲ ﻣﺎ ﻣﯽﺗﻮاﻧﯿﻢ ﻓﺸﺮدهﺳﺎزي را اﻧﺠﺎم دﻫﯿﻢ .روش اول اﺳﺘﻔﺎده از اﻟﮕﻮرﯾﺘﻢ gzipاﺳﺖ ﮐﻪ ﻓﺎﯾﻞﻫﺎﯾﯽ ﺑﺎ ﭘﺴﻮﻧﺪ gzﺗﻮﻟﯿﺪ ﻣﯽﮐﻨﺪ.
دﺳﺘﻮر ﻣﻮرد ﻧﻈﺮ ﺑﺮاي ﻓﺸﺮدهﺳﺎزي gzipو ﺑﺮاي ﺧﺎرج ﮐﺮدن از ﺣﺎﻟﺖ ﻓﺸﺮدهﺳﺎزي gunzipاﺳﺖ .اﻟﺒﺘﻪ اﺳﺘﻔﺎده از gzipﺑﺎ ﺳﻮﺋﯿﭻ -dﻫﻢ ﻋﻤﻠﯿﺎت
ﺧﺎرج ﮐﺮدن از ﺣﺎﻟﺖ ﻓﺸﺮدهﺳﺎزي را اﻧﺠﺎم ﻣﯽدﻫﺪ .ﻓﺎﯾﻞﻫﺎي ﻓﺸﺮده ﺷﺪه در اﯾﻦ روش را ﺑﺎ ﻓﺮﻣﺎن zcatﻣﯽﺗﻮاﻧﯿﻢ ﻣﺸﺎﻫﺪه ﮐﻨﯿﻢ.
روش دوم اﺳﺘﻔﺎده از اﻟﮕﻮرﯾﺘﻢ bz2ﺑﺮاي ﻓﺸﺮدهﺳﺎزي اﺳﺖ ﮐﻪ ﻓﺎﯾﻞﻫﺎﯾﯽ ﺑﺎ ﻫﻤﯿﻦ ﭘﺴﻮﻧﺪ ﺗﻮﻟﯿﺪ ﻣﯽﮐﻨﺪ .و ﺑﺮاي ﻓﺸﺮدهﺳﺎزي از دﺳﺘﻮر bzip2و ﺑﺮاي
ﺧﺎرج ﮐﺮدن از ﺣﺎﻟﺖ ﻓﺸﺮدهﺳﺎزي ﺑﺎ دﺳﺘﻮر bunzip2اﯾﻦ ﮐﺎر را اﻧﺠﺎم ﻣﯽدﻫﺪ .اﻟﺒﺘﻪ اﺳﺘﻔﺎده از bzip2ﺑﺎ ﺳﻮﺋﯿﭻ -dﻫﻢ ﻋﻤﻠﯿﺎت ﺧﺎرج ﮐﺮدن از
ﺣﺎﻟﺖ ﻓﺸﺮدهﺳﺎزي را اﻧﺠﺎم ﻣﯽدﻫﺪ .ﻓﺎﯾﻞﻫﺎي ﻓﺸﺮده ﺷﺪه ﺑﺎ اﯾﻦ روش را ﺑﺎ ﻓﺮﻣﺎن bzcatﻣﯽﺗﻮاﻧﯿﻢ ﻣﺸﺎﻫﺪه ﮐﻨﯿﻢ.
روش ﺳﻮم اﺳﺘﻔﺎده از اﻟﮕﻮرﯾﺘﻢ xzاﺳﺖ ﮐﻪ ﭘﺴﻮﻧﺪ ﻓﺎﯾﻞﻫﺎ در اﯾﻦ روش xzﺑﻮده و ﺑﺎ ﻓﺮﻣﺎن xzﻓﺸﺮدهﺳﺎزي ﻣﯽﮐﻨﺪ و ﺑﺎ unxzاز ﻓﺸﺮدهﺳﺎزي ﺧﺎرج
ﻣﯽﮐﻨﺪ .ﻫﻤﺎﻧﻨﺪ دو روش ﻗﺒﻠﯽ ﺳﻮﺋﯿﭻ -dﻫﻢ ﺑﺮاي اﯾﻦ روش ﺟﻮاب ﻣﯽدﻫﺪ .ﻓﺎﯾﻞﻫﺎي اﯾﻦ روش ﻫﻢ ﺑﺎ ﻓﺮﻣﺎن xzcatﻣﺸﺎﻫﺪه ﻣﯽﺷﻮد.
اﻟﮕﻮرﯾﺘﻢ ﻓﺸﺮدهﺳﺎزي Compress with Decompress with ﭘﺴﻮﻧﺪ ﻓﺎﯾﻞ ﻓﺸﺮده ﻣﺸﺎﻫﺪه ﻓﺎﯾﻞ ﻓﺸﺮده
gzip gzip )gunzip(gzip -d .gz zcat
bz2 bzip2 )bunzip2(bzip2 -d .bz2 bzcat
xz xz )unxz(xz -d .xz xzcat
ﺑﺮاي ﻣﺸﺎﻫﺪه روشﻫﺎي زﯾﺮ ﺳﻪ ﻋﺪد ﻓﺎﯾﻞ در Home Directoryﮐﺎرﺑﺮ rootاز ﻣﺴﯿﺮ /var/log/bootstrap.logﺑﺎ ﻧﺎمﻫﺎي m1,m2,m3
ﮐﭙﯽ ﮐﺮده ﻋﻤﻠﯿﺎت را روي آﻧﻬﺎ ﺗﺴﺖ ﻣﯽﮐﻨﯿﻢ.
m1را ﺑﺎروش اول m2 ،را ﺑﺎروش دوم و m3را ﺑﺎروش ﺳﻮم Compressﻣﯽﮐﻨﯿﻢ .دﻗﺖ ﮐﻨﯿﺪ ﮐﻪ ﺑﻪ ﻣﺎﻧﻨﺪ وﯾﻨﺪوز ﻓﺎﯾﻞ Compressﺷﺪه ﺟﺪﯾﺪي
اﯾﺠﺎد ﻧﻤﯽﺷﻮد و ﻫﻤﺎن ﻓﺎﯾﻞ ﻣﺴﺘﻘﯿﻤﺎً ﻓﺸﺮده ﻣﯽﺷﻮد.
Page 1 of 13
ﺣﺎل ﻣﺤﺘﻮﯾﺎت ﻫﺮ ﮐﺪام از ﻓﺎﯾﻞﻫﺎ را ﺑﺎ دﺳﺘﻮر ﻣﺘﻨﺎﻇﺮ آن در ﺣﺎﻟﺖ ﻓﺸﺮده ﻣﺸﺎﻫﺪه ﻣﯽﮐﻨﯿﻢ.
* ﻧﮑﺘﻪ ﻣﻬﻢ در ﻣﻮرد اﻟﮕﻮرﯾﺘﻢﻫﺎ اﯾﻦ اﺳﺖ ﮐﻪ اﻟﮕﻮرﯾﺘﻢ gzipدر ﻣﺤﯿﻂﻫﺎي Cross Platformﯾﺎ ﭼﻨﺪ ﺳﯿﺴﺘﻢ ﻋﺎﻣﻠﯽ ﮐﺎرﺑﺮد دارد ﺑﺎ اﯾﻨﮑﻪ از ﺗﻮاﻧﺎﯾﯽ
ﮐﻤﺘﺮي ﻧﺴﺒﺖ ﺑﻪ دو روش دﯾﮕﺮ در ﻓﺸﺮدهﺳﺎزي ﺑﺮﺧﻮردار اﺳﺖ .اﻟﮕﻮرﯾﺘﻢ bz2اوﻟﯿﻦ ﺑﺎر در Unixﻣﻄﺮح ﺷﺪ و اﻣﺮوزه ﺑﻪ Linuxﻫﻢ وارد ﺷﺪه اﺳﺖ.
و در ﻧﻬﺎﯾﺖ اﻟﮕﻮرﯾﺘﻢ xzﮐﻪ ﻣﺨﺘﺺ ﻟﯿﻨﻮﮐﺲ اﺳﺖ و از ﺗﻮاﻧﺎﯾﯽ ﺑﺎﻻﺗﺮي ﻧﺴﺒﺖ ﺑﻪ دو روش دﯾﮕﺮ در ﻓﺸﺮدهﺳﺎزي ﺑﺮﺧﻮردار اﺳﺖ.
ﺣﺎل ﮐﻪ روشﻫﺎي ﻓﺸﺮدهﺳﺎزي را ﻓﺮا ﮔﺮﻓﺘﯿﻢ و روي ﻓﺎﯾﻞ ﺗﺴﺖ ﮐﺮدﯾﻢ ﻣﯽﺑﺎﯾﺴﺖ روش ﺳﺎﺧﺖ ) Archiveﺑﺎﯾﮕﺎﻧﯽ ﯾﺎ ﯾﮑﯽ ﮐﺮدن ﭼﻨﺪ ﻓﺎﯾﻞ( را ﻫﻢ
ﺑﺪاﻧﯿﻢ ﺗﺎ ﺑﺘﻮاﻧﯿﻢ ﻫﻤﺰﻣﺎن ﻓﺎﯾﻞﻫﺎﯾﯽ ﮐﻪ در ﯾﮏ Archiveﻗﺮار دادﯾﻢ را ﯾﮑﺒﺎره ﻓﺸﺮده ﮐﺮده و از آﻧﻬﺎ اﺳﺘﻔﺎده ﮐﻨﯿﻢ .ﻣﺜﻼً ﺑﺮاي ارﺳﺎل ﮐﺮدن و ﯾﺎ ﺑﺮاي
ذﺧﯿﺮه ﮐﺮدن ﺑﺎ ﻓﻀﺎي ﮐﻤﺘﺮ ﻣﯽﺗﻮاﻧﯿﻢ اﯾﻦ ﮐﺎر را اﻧﺠﺎم دﻫﯿﻢ.
در ﻟﯿﻨﻮﮐﺲ ﺑﻪ دو روش ﻣﯽﺗﻮاﻧﯿﻢ ﻓﺎﯾﻞﻫﺎ را ﺑﺴﺘﻪﺑﻨﺪي ﮐﻨﯿﻢ .روش اول اﯾﺠﺎد tarﻓﺎﯾﻞ اﺳﺖ .ﮐﻪ ﻓﺎﯾﻠﯽ ﺑﺎ ﭘﺴﻮﻧﺪ tarﺑﻪ ﻣﺎ ﻣﯽدﻫﺪ .روش دوم اﯾﺠﺎد
cpioاﺳﺖ ﮐﻪ ﻓﺎﯾﻠﯽ ﺑﺎ ﭘﺴﻮﻧﺪ cpioﺑﻪ ﻣﺎ ﻣﯽدﻫﺪ .اﻟﺒﺘﻪ اﺳﺘﻔﺎده از tar fileاﻣﺮوزه ﻣﺮﺳﻮم اﺳﺖ و ﺑﻪ tar fileاي ﮐﻪ Compressﺷﺪه ﺑﺎﺷﺪ
tarballﮔﻔﺘﻪ ﻣﯽﺷﻮد .ﻣﻔﻬﻮم ﺗﺒﺪﯾﻞ ﻓﺎﯾﻞﻫﺎ ﺑﻪ Archiveو ﺳﭙﺲ ﭘﯿﺎده ﺳﺎزي Compression Methodﺑﺮ روي آﻧﻬﺎ ﺑﻪ ﺻﻮرت زﯾﺮ اﺳﺖ:
Page 2 of 13
ﺑﺎ ﻓﺮﻣﺎن tarﻣﯽﺗﻮاﻧﯿﻢ Archiveﻫﺎﯾﯽ ﺑﺎ ﻓﺮﻣﺖ tarاﯾﺠﺎد ﮐﻨﯿﻢ .اﻟﺒﺘﻪ ﺑﻪ ﺻﻮرت ﻫﻤﺰﻣﺎن ﺑﺎ ﯾﮏ ﻓﺮﻣﺎن ﻫﻢ ﻣﯽﺗﻮاﻧﯿﻢ ﻋﻤﻞ درﺳﺖ ﮐﺮدن tarballرا
ﻧﯿﺰ اﻧﺠﺎم دﻫﯿﻢ ،ﮐﺎﻓﯿﺴﺖ روش Compressﮐﺮدن را اﻧﺘﺨﺎب ﮐﺮده و ﺑﺎ ﺳﻮﺋﯿﭻ ﻣﺮﺑﻮﻃﻪ در ﻓﺮﻣﺎن tarfile ،tarرا ﻫﻤﺰﻣﺎن ﺑﻪ tarballﺗﺒﺪﯾﻞ ﮐﻨﯿﻢ.
Page 3 of 13
در ﺑﺎﻻ ﯾﮏ tarfileاز ﺳﻪ ﻓﺎﯾﻞ m1,m2,m3اﯾﺠﺎد ﮐﺮدﯾﻢ ،ﺳﭙﺲ ﺳﻪ ﻓﺎﯾﻞ اﺻﻠﯽ را ﺣﺬف ﮐﺮده و ﻧﺸﺎن دادﯾﻢ ﮐﻪ ﺑﺎ Extractﮐﺮدن tarfileﺳﻪ
ﻓﺎﯾﻞ ﻣﺎ درون آرﺷﯿﻮ ﻗﺮار ﮔﺮﻓﺘﻪ اﺳﺖ .ﻣﺤﺘﻮﯾﺎت tarfileرا ﻧﯿﺰ ﻣﯽﺗﻮاﻧﯿﻢ ﺑﻪ ﺻﻮرت زﯾﺮ ﻣﺸﺎﻫﺪه ﮐﻨﯿﻢ:
*ﺑﺮاي ﻓﺮﻣﺎن tarﻗﺮارﮔﯿﺮي ﻣﺤﻞ ﺳﻮﺋﯿﭻﻫﺎ اﻫﻤﯿﺖ دارد ﺑﺮاي ﻣﺜﺎل اﮔﺮ در ﺑﺎﻻ ﺳﻮﺋﯿﭻ ﺑﻪ ﺻﻮرت -ftﺑﺎﺷﺪ ﺧﺮوﺟﯽ درﯾﺎﻓﺖ ﻧﺨﻮاﻫﯿﻢ ﮐﺮد ﭼﻮن ﺑﺮاي
ﻟﯿﻨﻮﮐﺲ اﯾﻦ ﻣﻔﻬﻮم را دارد ﮐﻪ ﻓﺎﯾﻠﯽ ﺑﺎ ﻧﺎم tرا ﺟﺴﺘﺠﻮ ﮐﻨﺪ.
ﺣﺎل tarfileاﯾﺠﺎد ﺷﺪه را ﺑﻪ tarballﺗﺒﺪﯾﻞ ﻣﯽﮐﻨﯿﻢ Method .ﻓﺸﺮدهﺳﺎزي ﻣﺎ در اﯾﻦ ﻗﺴﻤﺖ اﻟﮕﻮرﯾﺘﻢ gzipاﺳﺖ.
Page 4 of 13
ﺣﺎل ﻣﯽﺧﻮاﻫﯿﻢ ﺑﻪ ﺻﻮرت ﯾﮑﺠﺎ tarballﺑﺴﺎزﯾﻢ و ﺳﭙﺲ ﺑﻪ ﺻﻮرت ﯾﮑﺠﺎ tarballرا ﺑﻪ ﺳﻪ ﻓﺎﯾﻞ اﺻﻠﯽ ﺑﺎزﮔﺮداﻧﯿﻢ .اﯾﻦ ﺑﺎر از اﻟﮕﻮرﯾﺘﻢ bzip2ﺑﺮاي
ﻓﺸﺮدهﺳﺎزي ﯾﮑﺠﺎ اﺳﺘﻔﺎده ﻣﯽﮐﻨﯿﻢ.
اﺳﺘﻔﺎده از ﺳﻮﺋﯿﭻ vﺑﺎﻋﺚ ﺷﺪ ﺗﺎ ﻟﯿﺴﺖ ﻓﺎﯾﻞﻫﺎﯾﯽ ﮐﻪ درون آرﺷﯿﻮ ﻓﺸﺮده ﻣﯽﺷﻮﻧﺪ را ﻧﻤﺎﯾﺶ دﻫﺪ و اﺳﺘﻔﺎده از ﺳﻪ ﺳﻮﺋﯿﭻ cjfﻫﻤﺰﻣﺎن tarballﺑﺎ
اﻟﮕﻮرﯾﺘﻢ bzip2ﺑﺮاي ﻣﺎ اﯾﺠﺎد ﮐﺮد ﮐﻪ از ﻧﻈﺮ ﺳﺎﯾﺰ ﻣﻘﺪار ﻗﺎﺑﻞ ﺗﻮﺟﻬﯽ ﻓﺸﺮده ﺷﺪه اﺳﺖ.
ﺣﺎل ﻋﮑﺲ اﯾﻦ ﻋﻤﻞ را ﺑﺎ ﯾﮏ ﻓﺮﻣﺎن اﻧﺠﺎم ﻣﯽدﻫﯿﻢ .ﺑﻪ ﺧﺮوﺟﯽ Long Listﻓﺎﯾﻞﻫﺎﯾﯽ ﮐﻪ از آرﺷﯿﻮ ﺑﻪ دﻟﯿﻞ اﺳﺘﻔﺎده از ﺳﻮﺋﯿﭻ vvاﺳﺘﺨﺮاج ﻣﯽﺷﻮد
دﻗﺖ ﮐﻨﯿﺪ.
ﺑﺎ ﻓﺮﻣﺎن cpioﻣﯽﺗﻮاﻧﯿﻢ Archiveﻫﺎي ﺑﺎ ﻓﺮﻣﺖ cpioاﯾﺠﺎد ﮐﻨﯿﻢ .اﯾﻦ ﻓﺮﻣﺎن از STDinورودي ﺧﻮد را درﯾﺎﻓﺖ ﻣﯽﮐﻨﺪ .ﺑﺮاي ﺳﺎﺧﺖ آرﺷﯿﻮ ﺑﺎ
اﯾﻦ دﺳﺘﻮر از ﺳﻮﺋﯿﭻ -oاﺳﺘﻔﺎده ﻣﯽﮐﻨﯿﻢ.
Page 5 of 13
ﺑﺮاي ﻓﺸﺮدهﺳﺎزي ﻫﻢ ﻣﯽﺗﻮاﻧﯿﻢ از ﻫﺮ ﮐﺪام از اﻟﮕﻮرﯾﻨﻢﻫﺎﯾﯽ ﮐﻪ ﻓﺮا ﮔﺮﻓﺘﯿﻢ اﺳﺘﻔﺎده ﮐﻨﯿﻢ.
ﻋﮑﺲ ﻋﻤﻞ ﻓﺸﺮدهﺳﺎزي و ﺧﺎرج ﮐﺮدن ﻓﺎﯾﻞﻫﺎ از آرﺷﯿﻮ ﺑﻪ ﺻﻮرت دو ﻣﺮﺣﻠﻪاي و ﺗﮏ ﻣﺮﺣﻠﻪاي ﻧﯿﺰ ﺑﻪ ﺻﻮرت زﯾﺮ اﺳﺖ:
در دو ﻣﺮﺣﻠﻪ ﺑﺎ اﺳﺘﻔﺎده از unxzو ﺳﭙﺲ اﺳﺘﻔﺎده از cpioﺑﺎ ﺳﻮﺋﯿﭻ -ivﺑﺮاي Extractو ﻧﺸﺎن دادن ﻧﺘﺎﯾﺞ:
در ﯾﮏ ﻣﺮﺣﻠﻪ ﺑﺎ اﺳﺘﻔﺎده از ﺗﺮﮐﯿﺐ دو دﺳﺘﻮر ﺑﺎﻻ ﺑﻪ وﺳﯿﻠﻪ Pipeﮐﺮدن ﺑﻪ ﯾﮑﺪﯾﮕﺮ ،اﻟﺒﺘﻪ دﻗﺖ داﺷﺘﻪ ﺑﺎﺷﯿﺪ در اﯾﻨﺠﺎ اﮔﺮ روش ﻓﺸﺮدهﺳﺎزي gzip
اﺳﺖ ﺑﺮاي ﺧﺎرج ﮐﺮدن از ،gunzip -cاﮔﺮ bzip2اﺳﺖ ﺑﺮاي ﺧﺎرج ﮐﺮدن از bunzip2 -cو اﮔﺮ xzاﺳﺖ از unxz -cاﺳﺘﻔﺎده ﻣﯽﮐﻨﯿﻢ.
Page 6 of 13
)Package Management(RedHat Base
Packageﻫﺎ در ﺳﯿﺴﺘﻢﻫﺎي RedHat Baseﭘﺴﻮﻧﺪ .rpmدارﻧﺪ و ﻋﻤﺪﺗﺎً از ﭼﻨﺪ ﻗﺴﻤﺖ ﺑﻪ ﺷﮑﻞ زﯾﺮ ﺗﺸﮑﯿﻞ ﺷﺪهاﻧﺪ:
A-B.C.D-E.F.rpm
)A(Package Name)-B(Package Version).C(Major Revision).D(Minor Revision)-E(Build Number).F(Architecture
Version,Major,Minorﺳﻪ ﻋﺪد ﻫﺴﺘﻨﺪ ﮐﻪ در اﺻﻞ Developerﺑﺮﻧﺎﻣﻪ آن را ﺑﻪ ﻧﺴﺒﺖ ﺗﻐﯿﯿﺮات ﺗﻌﯿﯿﻦ ﻣﯽﮐﻨﺪ Minor .ﺗﻐﯿﯿﺮات ﺟﺰﺋﯽ اﺳﺖ،
Majorﺗﻐﯿﯿﺮات ﺧﺎص و ﮐﻠﯽ اﺳﺖ و Versionﺗﻐﯿﯿﺮات اﺻﻠﯽ اﺳﺖ .اﮔﺮ ﺑﺮﻧﺎﻣﻪاي ﮐﻪ ﺗﻮﺳﻂ ﯾﮏ Developerاﯾﺠﺎد ﺷﺪه ﺗﻮﺳﻂ ﯾﮏ ﺗﯿﻢ ﺑﺮﻧﺎﻣﻪ
ﻧﻮﯾﺴﯽ ﮐﻪ ﺑﻪ ﯾﮏ Companyواﺑﺴﺘﻪ اﺳﺖ ﺷﺎﻣﻞ ﺗﻐﯿﯿﺮات و ﯾﺎ ﺣﺘﯽ ﭘﺸﺘﯿﺒﺎﻧﯽ ﺷﻮد ﺑﻪ آن ﯾﮏ Build Numberﺗﻌﻠﻖ ﻣﯽﮔﯿﺮد .و در ﻧﻬﺎﯾﺖ
Architectureﺑﻪ 32ﯾﺎ 64ﺑﯿﺘﯽ x86 ،ﯾﺎ x64و i386ﯾﺎ i686ﮐﻪ ﻣﺮﺑﻮط ﺑﻪ ﻣﻌﻤﺎري ﺳﯿﺴﺘﻢ ﻋﺎﻣﻞ ﺳﺎزﮔﺎر ﺑﺎ اﯾﻦ Packageاﺳﺖ اﺷﺎره دارد.
دو ﻓﺮﻣﺎن ﻣﻮرد اﺳﺘﻔﺎده در ﺧﺎﻧﻮاده RedHatﺑﺮاي ﻧﺼﺐ و ﺣﺬف Packageﻫﺎ ﻓﺮﻣﺎن rpmو ﻓﺮﻣﺎن yumاﺳﺖ.
rpmزﻣﺎﻧﯽ ﻣﻮرد اﺳﺘﻔﺎده اﺳﺖ ﮐﻪ در ﻣﺴﯿﺮ ﻓﺎﯾﻞ Packageﺑﺎﺷﯿﻢ و ﻧﮑﺘﻪ دﯾﮕﺮ اﯾﻨﮑﻪ Dependencyرا ﻣﺘﻮﺟﻪ ﻧﻤﯽﺷﻮد ﯾﻌﻨﯽ اﮔﺮ Package
ﻣﻮرد ﻧﻈﺮ ﻗﺒﻞ از ﻧﺼﺐ ﭘﯿﺶﻧﯿﺎز داﺷﺘﻪ ﺑﺎﺷﺪ rpmاﻗﺪام ﺑﻪ ﻧﺼﺐ Packageﻫﺎي ﭘﯿﺶ ﻧﯿﺎز ﻧﺨﻮاﻫﺪ ﮐﺮد و ﺑﺎ ﭘﯿﻐﺎم ﺧﻄﺎ ﻟﯿﺴﺖ Packageﻫﺎﯾﯽ ﮐﻪ
ﻣﯽﺑﺎﯾﺴﺖ ﻗﺒﻞ Packageﻣﻮرد ﻧﻈﺮﻣﺎن اﻗﺪام ﺑﻪ ﻧﺼﺒﺸﺎن ﮐﻨﯿﻢ را ﻣﯽآورد .و ﻣﺎ ﻣﯽﺑﺎﯾﺴﺖ ﺑﺎ ﻗﺮار دادن ﻟﯿﺴﺖ Packageﻫﺎ ﺑﻪ ﺻﻮرت ﭘﺸﺖ ﺳﺮ ﻫﻢ
و ﺑﺎ ﻓﺎﺻﻠﻪ اﻟﺒﺘﻪ ﺑﺎ ﯾﮏ ﻓﺮﻣﺎن اﻗﺪام ﺑﻪ ﻧﺼﺐ ﮐﻨﯿﻢ Package .ﻫﺎي ﺑﺎ ﭘﺴﻮﻧﺪ rpmرا ﻣﯽﺗﻮاﻧﯿﻢ داﻧﻠﻮد ﮐﺮده و ذﺧﯿﺮه ﮐﻨﯿﻢ ﺗﺎ درﻣﻮاردي ﮐﻪ ﻻزم ﺑﻮد
ﺑﻪ ﺻﻮرت آﻓﻼﯾﻦ از آﻧﻬﺎ اﺳﺘﻔﺎده ﮐﻨﯿﻢ .اﻟﺒﺘﻪ ﺑﺎﯾﺪ دﻗﺖ داﺷﺘﻪ ﺑﺎﺷﯿﻢ ﮐﻪ ﭼﻮن ﺑﺎ ﺳﯿﺴﺘﻢ ﻋﺎﻣﻞ Opensourceﺳﺮ و ﮐﺎر دارﯾﻢ ﺳﻼﻣﺖ و ﻗﺎﺑﻞ اﻋﺘﻤﺎد
ﺑﻮدن ﻣﺤﺘﻮﯾﺎت Packageﻫﻢ اﻫﻤﯿﺖ زﯾﺎدي از ﻧﻈﺮ ﻣﺒﺎﺣﺚ اﻣﻨﯿﺘﯽ دارد و ﯾﮏ Packageدر ﻋﯿﻦ ﻇﺎﻫﺮ ﺳﺎﻟﻢ ﻣﯽﺗﻮاﻧﺪ ﺣﺎوي ﺑﺪاﻓﺰار ﺑﺎﺷﺪ ﻟﺬا
اﺳﺘﻔﺎده از ﺳﺎﯾﺖﻫﺎي ﻣﻮرد اﻃﻤﯿﻨﺎن ﻧﯿﺰ ﺑﺴﯿﺎر اﻫﻤﯿﺖ دارد .ﺳﺎﯾﺖﻫﺎﯾﯽ ﻧﻈﯿﺮ:
rpm.pbone.net
rpmforge.com
sourceforge.net
pkgs.com
rpmfresh.com
اﻟﺒﺘﻪ ﺑﺮاي ﻫﺮ دو ﺧﺎﻧﻮاده RedHatو Debianاﯾﻦ ﺳﺎﯾﺖﻫﺎ ﮐﺎرﺑﺮد دارد.
yumﺑﺮ ﺧﻼف rpmاﺣﺘﯿﺎﺟﯽ ﺑﻪ اﯾﻦ ﻧﺪارد ﮐﻪ در ﻣﺤﻞ ﻗﺮارﮔﯿﺮي ﻓﺎﯾﻞ Packageﺑﺎﺷﺪ ﭼﺮا ﮐﻪ ﻣﺴﺘﻘﯿﻤ ًﺎ ﺑﻪ Repositoryﻣﺮﺑﻮط ﺑﻪ
Distributionاز ﻃﺮﯾﻖ اﯾﻨﺘﺮﻧﺖ ﻣﺘﺼﻞ ﺷﺪه و اﻗﺪام ﺑﻪ ﻧﺼﺐ Packageﻣﯽﮐﻨﺪ Repository .در اﺻﻞ ﺑﺮاي ﻫﺮ ﺳﯿﺴﺘﻢ ﻋﺎﻣﻞ ﻟﯿﻨﻮﮐﺲ ﺗﻌﺮﯾﻒ
ﺷﺪه اﺳﺖ ﮐﻪ ﺑﻪ ﺳﺮور اﺻﻠﯽ آن در اﯾﻨﺘﺮﻧﺖ ﻣﺘﺼﻞ ﺷﺪه و ﺑﺮوزﺗﺮﯾﻦ ﺗﻐﯿﯿﺮات را درﯾﺎﻓﺖ ﻣﯽﮐﻨﺪ .ﻫﻤﯿﻦ اﻣﺮ ﺑﺎﻋﺚ ﻣﯽﺷﻮد ﺗﺎ ﻓﺮﻣﺎن yumﺧﺎﺻﯿﺖ
Dependencyرا ﺑﺮاي Packageﻫﺎ ﻣﺘﻮﺟﻪ ﺷﺪه و ﺑﻪ ﺻﻮرت اﺗﻮﻣﺎﺗﯿﮏ اﻗﺪام ﺑﻪ ﻧﺼﺐ Packageﻫﺎي واﺑﺴﺘﻪ ﮐﻨﺪ.
Page 7 of 13
ﺑﺮاي ﺗﺴﺖ اﯾﻦ دو دﺳﺘﻮر ﺑﺎ CentOS 5.8اﺑﺘﺪا ISOاﯾﻦ ﺳﯿﺴﺘﻢ ﻋﺎﻣﻞ را ﺑﻪ ﻣﺎﺷﯿﻦ ﻣﺠﺎزي ﺧﻮد ﻣﻌﺮﻓﯽ ﻣﯽﮐﻨﯿﻢ و ﺑﺎ رﻓﺘﻦ ﺑﻪ ﻣﺴﯿﺮ زﯾﺮ ﻣﯽﺑﯿﻨﯿﻢ
ﮐﻪ ﺷﺎﻣﻞ Packageﻫﺎﯾﯽ ﺑﺎ ﭘﺴﻮﻧﺪ rpmاﺳﺖ.
ﺑﺎ ﻓﺮﻣﺎن rpmﺑﺎ ﺳﻮﺋﯿﭻ -qﻣﯽﺗﻮاﻧﯿﻢ queryﺑﮕﯿﺮﯾﻢ .ﻣﯽﺧﻮاﻫﯿﻢ ﻟﯿﺴﺖ Packageﻫﺎي ﻧﺼﺐ ﺷﺪه ﺑﺮ روي ﺳﯿﺴﺘﻢ ﺧﻮد را ﻣﺸﺎﻫﺪه ﮐﻨﯿﻢ:
Page 8 of 13
ﯾﺎ اﯾﻨﮑﻪ ﺑﻪ ﺗﻨﻬﺎﯾﯽ اﺳﻢ Packageرا در اﻧﺘﻬﺎي ﻓﺮﻣﺎن آورده از ﻟﯿﻨﻮﮐﺲ ﺳﻮال ﻣﯽﮐﻨﯿﻢ ﮐﻪ آﯾﺎ ﻧﺼﺐ ﺷﺪه اﺳﺖ ﯾﺎ ﺧﯿﺮ؟
ﺑﺮاي ﻧﺼﺐ Packageاز ﻓﺮﻣﺎن rpm -iدر ﻣﺤﻞ Packageﺑﺮاي ﻧﺼﺐ آن اﺳﺘﻔﺎده ﻣﯽﮐﻨﯿﻢ:
اﮔﺮ ﺑﺨﻮاﻫﯿﻢ در ﺷﺮاﯾﻄﯽ ﺑﺪاﻧﯿﻢ ﮐﻪ ﻓﺮﻣﺎﻧﯽ ﮐﻪ اﺳﺘﻔﺎده ﻣﯽﮐﻨﯿﻢ ﺗﻮﺳﻂ ﮐﺪام Packageﺑﻪ ﻟﯿﻨﻮﮐﺲ اﺿﺎﻓﻪ ﺷﺪه اﺳﺖ از ﺳﻮﺋﯿﭻ -qfاﺳﺘﻔﺎده ﻣﯽﮐﻨﯿﻢ.
اﺑﺘﺪا از ﻟﯿﻨﻮﮐﺲ ﺳﻮال ﻣﯽﮐﻨﯿﻢ ﮐﻪ اﯾﻦ ﻓﺮﻣﺎن از ﮐﺠﺎ اﺟﺮا ﻣﯽﺷﻮد ،ﺳﭙﺲ ﺑﺎ اﺳﺘﻔﺎده از ﻓﺮﻣﺎن rpmاﺳﻢ Packageﻣﻮرد ﻧﻈﺮ را ﺑﺎ ﺳﻮﺋﯿﭻ -qfوارد
ﻣﯽﮐﻨﯿﻢ ﺗﺎ در ﺧﺮوﺟﯽ ﻧﺸﺎن داده ﺷﻮد ﮐﻪ ﺗﻮﺳﻂ ﮐﺪام Packageدﺳﺘﻮر ﺑﻪ ﻟﯿﻨﻮﮐﺲ اﺿﺎﻓﻪ ﺷﺪه اﺳﺖ.
Page 9 of 13
اﻟﺒﺘﻪ ﺑﺎ اﯾﻦ روش ﻣﯽﺗﻮاﻧﯿﻢ در ﺧﺼﻮص ﺳﺎﯾﺮ ﻓﺎﯾﻞﻫﺎ ﻧﯿﺰ ﺟﺴﺘﺠﻮ ﮐﻨﯿﻢ ﺗﺎ ﺑﺪاﻧﯿﻢ ﺗﻮﺳﻂ ﮐﺪام Packageﺑﻪ ﻟﯿﻨﻮﮐﺲ اﺿﺎﻓﻪ ﮔﺮدﯾﺪه اﺳﺖ .ﻣﺜﻼً ﻓﺎﯾﻞ
vmlinuzﮐﻪ kernelاﺻﻠﯽ ﻟﯿﻨﻮﮐﺲ اﺳﺖ ﺗﻮﺳﻂ Packageزﯾﺮ ﻧﺼﺐ ﺷﺪه اﺳﺖ:
در اداﻣﻪ ﺑﺎ ﺳﻮﺋﯿﭻ -qlﻣﯽﺗﻮاﻧﯿﻢ ﻟﯿﺴﺖ ﺳﺎﯾﺮ ﻓﺮﻣﺎنﻫﺎﯾﯽ ﮐﻪ ﺑﻪ واﺳﻄﻪ ﻧﺼﺐ اﯾﻦ Packageﻫﺎ ﺑﻪ ﺳﯿﺴﺘﻢ ﻣﺎ اﺿﺎﻓﻪ ﮔﺮدﯾﺪه را ﻣﺸﺎﻫﺪه ﮐﻨﯿﻢ:
در ﺧﺼﻮص ﻓﺮﻣﺎن yumﭘﯿﺶ از اﯾﻦ ﮔﻔﺘﯿﻢ ﮐﻪ ﺑﻪ Repositoryﻣﺘﺼﻞ ﻣﯽﺷﻮد ،ﮐﻪ آدرس اﯾﻦ Repositoryﻫﺎ در ﻓﺎﯾﻞﻫﺎي زﯾﺮ اﺳﺖ:
وﻗﺘﯽ ﻓﺮﻣﺎن yumرا اﺟﺮا ﻣﯽﮐﻨﯿﻢ ﻣﺸﺎﻫﺪه ﻣﯽﮐﻨﯿﻢ ﮐﻪ ﺑﻪ اﯾﻦ آدرسﻫﺎ رﻓﺘﻪ و از ﻃﺮﯾﻖ اﯾﻦ آدرسﻫﺎ اﻗﺪام ﺑﻪ ﻧﺼﺐ Packageﻣﯽﮐﻨﺪ.
Page 10 of 13
ﺑﺎ اﺟﺮاي ﻓﺮﻣﺎن ﺳﺎﯾﺰ Downloadرا ﻧﺸﺎن داده و ﺑﺎ زدن ،yاﻗﺪام ﺑﻪ ﻧﺼﺐ ﻣﯽﮐﻨﺪ.
ﻋﮑﺲ اﯾﻦ ﻋﻤﻞ ﺑﺮاي ﺣﺬف Packageﻣﻮرد ﻧﻈﺮﻣﺎن ﻫﻢ ﺑﻪ ﺻﻮرت زﯾﺮ اﺳﺖ:
Page 11 of 13
ﺑﺎ زدن yاﻗﺪام ﺑﻪ ﺣﺬف Packageﻣﯽﮐﻨﺪ.
ﻓﺮﻣﺎن yum updateﺑﺮاي زﻣﺎﻧﯽ اﺳﺘﻔﺎده ﻣﯽﺷﻮد ﮐﻪ ﻻزم اﺳﺖ ﻟﯿﺴﺘﯽ از ﺗﻤﺎﻣﯽ Packageﻫﺎي ﻣﻮﺟﻮد در Repositoryرا در ﺳﯿﺴﺘﻢ Cash
ﮐﻨﯿﻢ .اﯾﻦ ﻣﻮرد زﻣﺎﻧﯽ ﻧﻤﻮد ﭘﯿﺪا ﻣﯽﮐﻨﺪ ﮐﻪ ﻟﯿﺴﺖ Packageﻫﺎ ﻣﺪت زﻣﺎﻧﯽ اﺳﺖ ﺑﺮوزرﺳﺎﻧﯽ ﻧﺸﺪه اﺳﺖ و ﺑﺎ زدن ﻓﺮﻣﺎن و اﺳﻢ Packageﻣﻮرد
ﻧﻈﺮ ﺳﯿﺴﺘﻢ ﭘﯿﻐﺎﻣﯽ ﻣﺒﺘﻨﯽ ﺑﺮ اﯾﻨﮑﻪ Packageﻣﻮرد ﻧﻈﺮ را ﭘﯿﺪا ﻧﻤﯽﮐﻨﺪ ﻧﻤﺎﯾﺶ ﻣﯽدﻫﺪ .در اﯾﻦ ﺻﻮرت ﯾﮑﯽ از ﻣﻮاردي ﮐﻪ ﻣﻤﮑﻦ اﺳﺖ اﺗﻔﺎق اﻓﺘﺎده
ﺑﺎﺷﺪ اﯾﻦ اﺳﺖ ﮐﻪ ﻟﯿﺴﺖ Packageﻫﺎ ﺑﺮوز ﻧﺒﺎﺷﺪ.
)Package Management(Debian Base
در ﺧﺼﻮص ﺳﯿﺴﺘﻢ ﻋﺎﻣﻞﻫﺎي Debian Baseﻣﺤﻠﯽ ﮐﻪ آدرس Repositoryﻫﺎ در آن ذﺧﯿﺮه ﺷﺪه در ﻣﺴﯿﺮ زﯾﺮ اﺳﺖ:
ﺑﺮاي ﺳﯿﺴﺘﻢ ﻋﺎﻣﻞﻫﺎي Debian Baseﻣﺎﻧﻨﺪ RedHat Baseدو دﺳﺘﻮر دارﯾﻢ ﮐﻪ ﯾﮑﯽ از آﻧﻬﺎ ﻣﻌﺎدل ﻓﺮﻣﺎن rpmﺑﺎ ﻣﺸﺨﺼﺎت آن و دﯾﮕﺮي
ﻣﻌﺎدل yumﺑﺎ ﻣﺸﺨﺼﺎت آن اﺳﺖ .ﮐﻪ ﻫﺮ دو را در زﯾﺮ آوردهاﯾﻢ:
dpkg -i ﻧﺼﺐ Package rpm -i
dpkg -r ﺣﺬف Package rpm -e
dpkg -s ﺟﺴﺘﺠﻮي Packageدر ﺳﯿﺴﺘﻢ rpm -q
dpkg -S Queryﺑﺮاي ﭘﯿﺪا ﮐﺮدن Packageﻣﺮﺗﺒﻂ ﺑﺎ دﺳﺘﻮر rpm -qf
dpkg -l ﻧﺸﺎن دادن ﺗﻤﺎﻣﯽ Packageﻫﺎي ﻧﺼﺐ ﺷﺪه در ﺳﯿﺴﺘﻢ ﻋﺎﻣﻞ rpm -qa
dpkg -L ﺗﻤﺎﻣﯽ ﻓﺎﯾﻞﻫﺎي ﻣﺮﺗﺒﻂ ﺑﺎ Packageﻧﺼﺐ ﺷﺪه را ﻧﺸﺎن ﻣﯽدﻫﺪ rpm -ql
Page 12 of 13
Packageﻫﺎ در ﺳﯿﺴﺘﻢ ﻋﺎﻣﻞﻫﺎي Debian Baseﺑﺎ ﭘﺴﻮﻧﺪ .debﻫﺴﺘﻨﺪ و ﻣﺎﻧﻨﺪ ﻓﺮﻣﺎن rpmﺑﺮاي اﺳﺘﻔﺎده از dpkgﻧﯿﺰ ﻣﯽﺑﺎﯾﺴﺖ در ﻣﺴﯿﺮ
ﻧﺼﺐ Packageﺑﺎﺷﯿﻢ .ﻫﻤﭽﻨﯿﻦ اﯾﻦ ﻓﺮﻣﺎن ﺧﺎﺻﯿﺖ Dependencyرا ﻣﺎﻧﻨﺪ rpmﻣﺘﻮﺟﻪ ﻧﻤﯽﺷﻮد.
apt install Packageﻣﻮرد ﻧﻈﺮ را ﻧﺼﺐ ﻣﯽﮐﻨﺪ yum install
apt remove Packageﻣﻮرد ﻧﻈﺮ را ﺣﺬف ﻣﯽﮐﻨﺪ yum remove
apt update ﻟﯿﺴﺖ Repositoryرا ﺑﻪ روزرﺳﺎﻧﯽ ﻣﯽﮐﻨﺪ yum update
apt cache Packageﻣﻮرد ﻧﻈﺮ را ﺟﺴﺘﺠﻮ ﻣﯽﮐﻨﺪ yum search
ﻓﺮﻣﺎن aptﯾﺎ apt-getﺗﻤﺎﻣﯽ وﯾﮋﮔﯽﻫﺎي ﻓﺮﻣﺎن yumرا دارد ﺗﻨﻬﺎ ﺗﻔﺎوت در ﺑﻌﻀﯽ از ﺳﻮﺋﯿﭻﻫﺎ اﺳﺖ.
* در ﺳﯿﺴﺘﻢ ﻋﺎﻣﻞﻫﺎي RedHat Baseو Debian Baseاﺳﺎﻣﯽ ﺑﯿﺸﺘﺮ Packageﻫﺎ ﯾﮑﺴﺎن اﺳﺖ وﻟﯽ در ﻣﻮاردي ﻫﻢ ﻧﺎمﻫﺎي ﻣﺘﻔﺎوﺗﯽ وﺟﻮد
دارد ﺑﺮاي ﻣﺜﺎل در Debianﺑﺮاي راهاﻧﺪازي Webserverﻣﯽﺑﺎﯾﺴﺖ apache2و در RedHatﻣﯽﺑﺎﯾﺴﺖ httpdرا ﻧﺼﺐ ﮐﻨﯿﻢ.
* ﻧﮑﺘﻪ آﺧﺮ در ﻣﻮرد اﯾﻦ ﻣﺒﺤﺚ ﺗﻔﺎوت ﻣﯿﺎن دو ﺳﻮﺋﯿﭻ removeو purgeاﺳﺖ ﮐﻪ اﺳﺘﻔﺎده از removeﺗﻨﻬﺎ ﻓﺎﯾﻞﻫﺎي Packageرا ﺣﺬف
ﻣﯽﮐﻨﺪ در ﺻﻮرﺗﯽ ﮐﻪ اﺳﺘﻔﺎده از purgeاﯾﻦ ﻣﺰﯾﺖ را دارد ﮐﻪ ﻓﺎﯾﻞﻫﺎي Configاي ﮐﻪ ﺑﻪ واﺳﻄﻪ Packageاﯾﺠﺎد ﺷﺪه را ﻧﯿﺰ ﺣﺬف ﻣﯽﮐﻨﺪ.
Page 13 of 13