軟件包管理

軟件包基礎(chǔ)

包管理器

二進(jìn)制應(yīng)用程序的組成部分:二進(jìn)制文件,庫文件,配置文件,幫助文件

程序包管理器

debian:deb文件,dpkg包管理器
redhat:rpm文件,rpm包管理器

包命名

源代碼:name-VERSION.tar.gz|bz2|xz

rpm包命名方式:name-VERSION-release.arch.rpm

包分類

Application-VERSION-ARCH.rpm:主包
Application-devel-VERSION-ARCH.rpm:開發(fā)子包
Application-utils-VERSION-ARHC.rpm:其它子包
Application-libs-VERSION-ARHC.rpm:其它子包

工具

包之間可能存在依賴關(guān)系,甚至循環(huán)依賴,手動安裝的話會很頭疼,因此一般用工具安裝,工具會自動解決依賴關(guān)系

yum:rpm包管理器的前端工具
apt-get:deb包管理器的前端工具
zypper:suse上的rpm前端管理工具
dnf:Fedora 18+ rpm包管理器前端管理工具

庫文件

查看二進(jìn)制程序所依賴的庫文件
ldd /PATH/TO/BINARY_FILE:ldd `which ls`

管理及查看本機(jī)裝載的庫文件
ldconfig:加載庫文件
/sbin/ldconfig -p:顯示本機(jī)已經(jīng)緩存的所有可用庫文件名及文件路徑

映射關(guān)系
配置文件:/etc/ld.so.conf,/etc/ld.so.conf.d/*.conf
緩存文件:/etc/ld.so.cache

包管理器

程序包管理器

將編譯好的應(yīng)用程序的各組成文件打包成一個(gè)或幾個(gè)程序包文件,從而方便快捷的實(shí)現(xiàn)程序包的安裝,卸載,查詢,升級和校驗(yàn)等管理操作

包文件組成(每個(gè)包獨(dú)有)

rpm包內(nèi)的文件
rpm的元數(shù)據(jù),如名稱、版本、依賴性、描述等
安裝或卸載時(shí)運(yùn)行的腳本

數(shù)據(jù)庫(公共):/var/lib/rpm
程序包名及版本
依賴關(guān)系
功能說明
包安裝后生成的各文件路徑及校驗(yàn)碼信息

程序包的來源

系統(tǒng)發(fā)版的光盤或官方服務(wù)器

https://www.centos.org/download/
http://mirror.aliyun.com
http://mirrors.souhu.com
http://mirrors.163.com

項(xiàng)目官方站點(diǎn)

第三方組織

注意檢查包的來源合法性和完整性

http://fedoraproject.org/wiki/EPEL
http://repoforge.org/
http://pkgs.org
http://rpmfind.net
http://rpm.pbone.net
https://sourceforge.net/

自己制作

rpm

rpm包安裝

rpm -i/--install [install-options] PACKAGE_FILE…

  • -v:詳細(xì)顯示
  • -vv:超級詳細(xì)顯示
  • -h:以#顯示程序包管理執(zhí)行進(jìn)度
  • --test:測試安裝,但不真正執(zhí)行安裝,即dry run模式
  • --nodeps:忽略依賴性關(guān)系
  • --replacepkgs:重復(fù)安裝已安裝過的包,文件覆蓋
  • --replacefiles:將要安裝包的部分文件與其他已安裝的包文件沖突,可繼續(xù)安裝,文件不覆蓋
  • --noscripts:不執(zhí)行程序包腳本
    • %pre: 安裝前腳本;--nopre
    • %post: 安裝后腳本;--nopost
    • %preun: 卸載前腳本;--nopreun
    • %postun: 卸載后腳本;--nopostun
  • --oldpackage:已安裝新版程序包,再同時(shí)安裝舊版程序包
  • --force:強(qiáng)制安裝,等同于--replacepkgs --replacefiles --oldpackage

rpm包升級

rpm -U/--upgrade:安裝有舊版本的程序包,則升級,若不存在舊版程序包,則安裝
rpm -F/--freshen:安裝有舊版程序包,則升級,如果不存在舊版程序包,則不執(zhí)行升級操作

注意

  1. 不要對內(nèi)核做升級操作,Linux支持多內(nèi)核版本并存,因此,直接安裝新版本內(nèi)核即可
  2. 如果原程序包的配置文件安裝后曾被修改,升級時(shí),新版本的提供的同一個(gè)配置文件并不會直接覆蓋老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)后保留

rpm包查詢

rpm -q|--query [options]

  • a:所有包
  • -f:查看指定的文件是由哪個(gè)程序包提供(文件用路徑表示)
  • -p:指定包名,配合其他選項(xiàng)一起用,不加-p不可直接指定包名,需要指定程序名
  • --provides:查看指定包提供了哪些CAPABILITY 也可用-a --provides 查看所有CAPABILITY
  • --whatprovides CAPABILITY:查詢指定的CAPABILITY由哪個(gè)包所提供
  • --whatrequires CAPABILITY:查詢指定的CAPABILITY被哪個(gè)包所依賴
  • --changelog:查詢r(jià)pm包的changelog
  • -c:查詢程序的配置文件
  • -d:查詢程序的文檔
  • -i:查詢程序的信息
  • -l:查看指定程序包安裝后生成的所有文件
  • --scripts:查看程序包自帶的腳本
  • -R:查詢指定的程序包所依賴的CAPABILITY

rpm2cpio

rpm2cpio PACKAGE | cpio -itv:預(yù)覽包內(nèi)文件
rpm2cpio PACKAGE | cpio -idv:釋放包

# 文件缺失
[root@centos7 ~]# rm -rf /etc/inittab
# 查看文件是由哪個(gè)rpm包生成的
[root@centos7 ~]# rpm -qf /etc/inittab
initscripts-9.49.41-1.el7.x86_64
# 在光盤中找到這個(gè)rpm包,并賦值到指定目錄
[root@centos7 ~]# cp /media/cd1/Packages/initscripts-9.49.41-1.el7.x86_64.rpm /app
# 使用rpm2cpio進(jìn)行轉(zhuǎn)換,并將命令結(jié)果直接給cpio處理,這里是解包
[root@centos7 app]# rpm2cpio initscripts-9.49.41-1.el7.x86_64.rpm |cpio -id
3039 blocks
[root@centos7 app]# ll
total 444
drwxr-xr-x. 10 root root   4096 Jun  2 16:15 etc
-rw-r--r--.  1 root root 447444 Jun  2 16:11 initscripts-9.49.41-1.el7.x86_64.rpm
drwxr-xr-x.  7 root root     68 Jun  2 16:15 usr
drwxr-xr-x.  4 root root     28 Jun  2 16:15 var
# 再將缺失的文件復(fù)制到/etc/目錄下即可
[root@centos7 app]# cp etc/inittab /etc/

rpm包卸載

rpm -e/-erase [OPTIONS] PACKAGE...

  • --allmatches:卸載所有版本的包
  • --nodeps:不進(jìn)行依賴性關(guān)系檢測
  • --noscripts:不執(zhí)行腳本
  • --test:測試卸載,但不真正執(zhí)行卸載,即dry run模式

rpm包校驗(yàn)

rpm -V|--verify

[root@centos7 ~]# rpm -V tree
S.5....T.  d /usr/share/doc/tree-1.6.0/LICENSE

S:大小改變
M:權(quán)限和類型等改變
5:MD5改變
D:設(shè)備版本號改變
L:指向路徑改變
U:屬主改變
G:屬組改變
T:修改時(shí)間改變
P:功能改變

rpm -K/--checksig:公司通過私鑰加密的rpm包,用戶可以通過公鑰來校驗(yàn)包的完整性和簽名

  • --nosignature:不檢查來源合法性
  • --nodigest:不檢查包完整性
[root@centos7 app]# rpm -K /media/Packages/tree-1.6.0-10.el7.x86_64.rpm 
/media/Packages/tree-1.6.0-10.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 OK

rpm -qa "gpg-pubkey*":查看公鑰

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7:導(dǎo)入公鑰

rpm數(shù)據(jù)庫

/var/lib/rpm

rpm --initdb:初始化數(shù)據(jù)庫,如果實(shí)現(xiàn)不存在,則新建,否則,不執(zhí)行任何操作

rpm --rebuilddb:重建已安裝的包頭的數(shù)據(jù)庫索引目錄

yum

yum實(shí)現(xiàn)原理

  1. 本地主機(jī)會在配置文件里面找到y(tǒng)um repository的指向,并建立連接
  2. 從yum repository獲取元數(shù)據(jù)文件和特征碼放在緩存里面
  3. 通過查看元數(shù)據(jù)文件獲知需要安裝的軟件包和其依賴的軟件的名稱并向yum repository發(fā)起請求
  4. 本地主機(jī)獲取到軟件包后進(jìn)行安裝
  5. 安裝好后,rpm包會被刪除,但是元數(shù)據(jù)文件和特征碼會被保存下來,其目的是為了當(dāng)你再向yum repository發(fā)起連接的時(shí)候,先會向yum repository獲取到特征碼和本地緩存的特征碼做對比,如果相同則說明yum repository里面的文件沒有發(fā)生改變,如果不同,則說明yum repository里面的文件發(fā)生了改變,這時(shí)候就需要重新向yum repository獲取元數(shù)據(jù)文件了

通常情況下yum repository都是文件服務(wù)器,你可以通過URL進(jìn)行訪問,如:

ftp://path/to/repository/
http://path/to/repository/
https://path/to/repository/
file://path/to/repository/

yum配置文件

/etc/yum.conf

為所有倉庫提供公共配置

cachedir=緩存目錄,默認(rèn)情況下在/var/cache/yum/
keepcache=是否保持緩存,0時(shí)不保存,1是保存
debuglevel=Debug信息的輸出等級,范圍是0-10,默認(rèn)是2
logfile=存放log文件的路徑
exactarch=是否精準(zhǔn)匹配平臺,默認(rèn)是1,精確匹配
obsoletes=僅僅會影響升級,簡單的說相當(dāng)于upgrade,允許更新舊版本的rpm包
gpgcheck=是否檢驗(yàn)安裝包的來源合法性
plugins=是否允許使用插件,默認(rèn)為1,表示安裝
installonly_limit=允許同時(shí)保持的內(nèi)核包
bugtracker_url=bug的追蹤的url

/etc/yum.repos.d/.repo*

為倉庫的指向提供配置

[repositoryID]具有唯一性
name=可以重復(fù)
baseurl=可以為多個(gè),路徑下必須有repodata
enable=是否開啟,1為開啟,0為關(guān)閉,默認(rèn)開啟
gpgckeck=是否檢查公鑰
gpgkey=公鑰
cost=超時(shí)時(shí)間
enablegroup=是否允許使用包組,默認(rèn)是允許

yum的repo配置文件中可用的變量: $releasever、 $arch、$basearch、$YUM0-$YUM9

[base]
name=base
baseurl=file:///media
enable=1
gpgcheck=0

[tsinghua]
name=tsinghua
baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/$releasever/$basearch/
enabled=0
gpgcheck=0

/var/log/yum.log

yum日志

yum命令

man 5 yum.conf

查看倉庫

yum repolist

  • enabled:僅顯示激活的倉庫,默認(rèn)
  • disable:僅顯示禁用的倉庫
  • all:顯示所有的倉庫

createrepo dirname:創(chuàng)建yum倉庫

查看倉庫里面的軟件包

yum list

  • all:顯示所有已安裝和可以安裝的包,默認(rèn)
  • available:顯示未安裝的包
  • installed:顯示安裝的包(@anaconda:表示操作系統(tǒng)預(yù)裝的包、installed:表示手動安裝的包、其余的表示包的來源倉庫)
  • updates:顯示可更新的包

安裝包

yum install package1 package2 ...:安裝包,可以跟-y選項(xiàng),跳過交互式
yum install --downloadonly--downloaddir=/目錄名 軟件包名:僅下載包,不安裝

yum reinstall package1 package2 ...:重新安裝包,可以跟-y選項(xiàng),跳過交互式

升級包

yum update package1 package2 ...:升級包,可以配合-y選項(xiàng),跳過交互式

yum downgrade package1 package2 ...:升級包,可以配合-y選項(xiàng),跳過交互式

yum check-update:檢查可用升級

卸載包

yum remove/erase package1 package2 ...:卸載包,但不卸載安裝時(shí)依賴的包,可以配合-y選項(xiàng),跳過交互式

其他

yum info ...:查看包信息,和rpm -qi類似
yum provides/whatprovides feature1 feature2 ...:查看指定的特性(可以是某文件)是由哪個(gè)程序包提供

yum clean all:清空緩存
yum makecache:構(gòu)建緩存

yum search string1 string2 ...:以指定的關(guān)鍵字搜索程序包包名及sunmary信息
yum deplist package1 package2 ...:查詢指定的包依賴哪些能力及所提供的包

yum history:查看yum歷史

  • info #:查看第#條yum歷史詳情
  • undo #:卸載第#條yum歷史執(zhí)行的包及其依賴包,可以配合-y選項(xiàng),跳過交互式
  • redo #:重裝第#條yum歷史執(zhí)行的包及其依賴包,可以配合-y選項(xiàng),跳過交互式

yum localinstall rpmfile1 rpmfile2 ...:安裝本地程序包,依賴性關(guān)系還交給yum處理,可以配合-y選項(xiàng),跳過交互式
yum localupdate rpmfile1 rpmfile2 ...:更新本地程序包,依賴性關(guān)系還交給yum處理,可以配合-y選項(xiàng),跳過交互式

包組相關(guān)

yum grouplist:查看當(dāng)前所有包組
yum groupinfo group1 ...:查看包組信息
yum groupinstall group1 ...:安裝包組
yum groupupdate group1 ...:升級包組
yum groupremove group1 ...:卸載包組

命令行選項(xiàng)

  • --nogpgcheck:禁止進(jìn)行g(shù)pgcheck
  • -y:自動回答為“yes”,通常配合其他選項(xiàng)來跳過交互式
  • -q:靜默模式

dnf

yum升級版,詳細(xì)使用和yum類似,配置文件:/etc/dnf/dnf.conf

程序包的編譯安裝

我們有的時(shí)候并不能獲取到相應(yīng)軟件的rpm包或者是原本就是沒有rpm包的,但是一般項(xiàng)目網(wǎng)站都會給我們提供對應(yīng)的源代碼,然后我們可以使用工具進(jìn)行編譯安裝。

安裝步驟:

  1. 首次安裝先查看INSTALL和README文件
  2. 運(yùn)行configure腳本,生成makefile文件
    1. 通過傳遞參數(shù),指定啟動特性、安裝路徑等,執(zhí)行時(shí)會參考用戶指定以及Makefile.in文件(有的時(shí)候可能沒有configure文件和Makefile.in文件,autoconf根據(jù)指定的配置文件可以生成configure文件,automake可以根據(jù)指定的配置文件生成Makefile.in文件),最終生成Makefile
    2. 檢查依賴到的外部環(huán)境
    3. 常用選項(xiàng):
    • --help:獲取其他支持的使用選項(xiàng)
    • --prefix=/PATH/TO/SOMEWHERE:指定默認(rèn)安裝位置,默認(rèn)為/usr/local/
    • --sysconfdir=/PATH/TO/SOMEWHERE:指定默認(rèn)配置文件安裝位置,默認(rèn)為/usr/local
    • 如果不指定--prefix選項(xiàng),安裝后可執(zhí)行文件默認(rèn)放在/usr/local/bin,庫文件默認(rèn)放在/usr/local/lib,配置文件放在/usr/local/etc,其他的資源文件放在/usr/local/share。指定prefix的好處就是當(dāng)你想卸載軟件的時(shí)候,直接刪除該安裝目錄就行了,也可以將整個(gè)目錄拷貝到其他的機(jī)器上使用,前提是同樣的操作系統(tǒng)
  3. make:根據(jù)生成的makefile文件,構(gòu)建應(yīng)用程序
  4. make install:用來安裝,它從Makefile中讀取指令,安裝到指定的位置
  5. 安裝后的配置
    1. 導(dǎo)入二進(jìn)制程序目錄至PATH環(huán)境變量中:
    • vim /etc/profile.d/NAME.sh
    • export PATH=/PATH/TO/BIN:$PATH
    • source /etc/profile.d/NAME.sh
    1. 導(dǎo)入庫文件路徑:
    • vim /etc/ld.so.conf.d/NAME.conf
    • 添加新的庫文件所在目錄至此文件中
    • 讓系統(tǒng)重新生成緩存:ldconfig -v
    1. 導(dǎo)入頭文件:ln -sv
    2. 導(dǎo)出幫助手冊:編輯/etc/man_db.config文件,添加一個(gè)MANPATH

練習(xí)

  1. 查詢命令java來自于哪個(gè)rpm包

    [root@centos7 app]# rpm -qa |grep java
    
    [root@centos7 app]# which java
    /usr/bin/java
    [root@centos7 app]# rpm -qf /usr/bin/java
    file /usr/bin/java is not owned by any packag
    [root@centos7 app]# ls /usr/bin/java -l
    lrwxrwxrwx. 1 root root 22 May 15 22:02 /usr/bin/java -> /etc/alternatives/java
    [root@centos7 app]# ll /etc/alternatives/java
    lrwxrwxrwx. 1 root root 71 May 15 22:02 /etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-2.b14.el7.x86_64/jre/bin/java
    [root@centos7 app]# rpm -qf /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-2.b14.el7.x86_64/jre/bin/java
    java-1.8.0-openjdk-headless-1.8.0.161-2.b14.el7.x86_64
    
  2. yum的配置和使用,包括yum倉庫的創(chuàng)建

    # createrepo創(chuàng)建指定目錄存放repodate目錄
    [root@centos7 rpm]# createrepo /app/rpm/
    Spawning worker 0 with 5 pkgs
    Workers Finished
    Saving Primary metadata
    Saving file lists metadata
    Saving other metadata
    Generating sqlite DBs
    Sqlite DBs complete
    
    # 將指定目錄寫入repository,這樣才能生效
    [root@centos7 rpm]# cat /etc/yum.repos.d/base.repo 
    [base]
    name=base
    baseurl=http://172.18.0.1/centos/$releasever/
    
    [base1]
    name=base1
    baseurl=file:///media/
    
    [base2]
    name=base2
    baseurl=file:///app/rpm/
    
    [base3]
    name=base3
    baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/7/x86_64/
    
  3. 在centos7上安裝和使用dnf

    # rz導(dǎo)入本地dnf包
    # 安裝本地dnf包
    [root@centos7 dnf]# yum localinstall * -y
    # 用dnf重裝tree和samba并跳過交互式
    [root@centos7 dnf]# dnf reinsatll tree samba -y
    
  4. 編寫系統(tǒng)初始化腳本reset.sh,包括別名,提示符顏色,yum倉庫配置文件,安裝tree,ftp,lftp,telnet等包

    #!/bin/bash
    
    # 設(shè)置別名、提示符顏色和PATH
    cat > /etc/profile.d/env.sh << EOF
    alias cdnet="cd /etc/sysconfig/network-scripts"
    alias editnet="vim /etc/sysconfig/network-scripts/ifcfg-ens33"
    export PS1="[\[\e[31m\]\u\e[0m\]@\h \W]\\$ "
    export PATH=/app/bin:$PATH
    EOF
    source /etc/profile.d/env.sh
    
    # 設(shè)置vim
    cat > ~/.vimrc << EOF
    set nu
    EOF
    source ~/.vimrc
    
    # 配置yum倉庫
    cat > /etc/yum.repos.d/env.repo << EOF
    [mage]
    name=mage
    baseurl=http://172.18.0.1/centos/$releasever/
    enable=1
    
    [tsinghua]
    name=tsinghua
    baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/7/x86_64/
    enabled=1
    
    [dvd]
    name=dvd
    baseurl=file:///media/
    enabled=0
    EOF
    
    # 安裝常用包
    rpm -q tree &> /dev/null && echo "tree已安裝" || ( yum install tree -y &> /dev/null && echo "tree安裝成功" || echo "tree安裝失敗")
    rpm -q ftp &> /dev/null && echo "ftp已安裝" || ( yum install ftp -y &> /dev/null && echo "ftp安裝成功" || echo "ftp安裝失敗" )
    rpm -q lftp &> /dev/null && echo "lftp已安裝" || ( yum install lftp -y &> /dev/null && echo "lftp安裝成功" || echo "lftp安裝失敗" )
    rpm -q telnet &> /dev/null && echo "telnet已安裝" || ( yum install telnet -y &> /dev/null && echo "telnet安裝成功" || echo “telnet安裝失敗”)
    
    echo "初始化完成"
    
  5. 在CentOS6上編譯安裝apache 2.2源碼包,并啟動此服務(wù)

    # 服務(wù)器下載apache2.2源碼包,也可以rz本地上傳
    [root@centos6 ~]# lftpget ftp://172.18.0.1/pub/Sources/sources/httpd/httpd-2.2.29.tar.bz2
    # 解壓源碼包
    [root@centos6 ~]# tar -xvf httpd-2.2.29.tar.bz2
    # 安裝Development Tools
    [root@centos6 ~]# yum groupinstall "Development Tools" -y
    # 安裝第一步:./configure
    [root@centos6 ~]# ./configure --prefix=/app/apache22 --sysconfdir=/etc/apache22
    # 安裝第二步:make
    [root@centos6 ~]# make
    # 安裝第三步:make install
    [root@centos6 ~]# make install
    # 配置環(huán)境變量
    [root@centos6 ~]# cat /etc/profile.d/env.sh << EOF
    export PATH=/app/apache24/bin/:$PATH
    EOF
    [root@centos6 ~]# source /etc/profile.d/env.sh
    # 啟動服務(wù)并關(guān)閉防火墻
    [root@centos6 ~]# apachectl start
    [root@centos6 ~]# iptables -F
    
  6. 在CentOS7上編譯安裝apache 2.4源碼包,并啟動此服務(wù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,327評論 6 537
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,996評論 3 423
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,316評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,406評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,128評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,524評論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,576評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,759評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,310評論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,065評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,249評論 1 371
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,821評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,479評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,909評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,140評論 1 290
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,984評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,228評論 2 375

推薦閱讀更多精彩內(nèi)容

  • 各大Linux發(fā)行版軟件包管理參考(http://www.freeoa.net/osuport/botinstal...
    IRONYT閱讀 7,315評論 0 12
  • RPM包管理器 二進(jìn)制應(yīng)用程序的組成部分:二進(jìn)制文件、庫文件、配置文件、幫助文件 包命名: 庫文件: 管理及查看本...
    JevonWei閱讀 244評論 0 0
  • 第一節(jié) 軟件包管理簡介 1.軟件包分類 1)源碼包 腳本安裝包 2)二進(jìn)制包 系統(tǒng)默認(rèn)包,對于redhat系列是r...
    littlexjing閱讀 466評論 0 0
  • RPM/DPKG 兩大陣營簡介在 GNU/Linux( 以下簡稱 Linux) 操作系統(tǒng)中,RPM 和 DPKG ...
    空語閱讀 1,446評論 0 4
  • 最近看了一本書,.《一個(gè)陌生女人的來信》靜靜的看著一個(gè)人,看著他的喜怒哀樂,他的一顰一笑,看到他同別的賣弄風(fēng)騷的女...
    冰箱里的蘋果汁閱讀 265評論 0 0