miczzh 发表于 2003-7-16 22:58:36

linux自动升级软件APT使用教程[转贴]

APT-HOWTO_CLE
關於 CLE 的升級系統 我採用的是 APT 套件,這套在 debian 上相當著名的套件,不久前巴西的 Conectiva 公司將其移植到 RPM 系統上,而我把它移植到 CLE 上來 相信有用過 debian 或玩過 apt 的人,應該都不會太陌生才是

由 網中人 所建立。 最後修改時間為 2003-06-26 16:13:48 ,已有 1 人觀看過本文。
本文件可以在 ftp://cle.linux.org.tw/pub/CLE/APT-HOWTO_CLE.txt 取得

#!/bin/bash
## Copyright (C) 2001-2002 Chung-Yen Chang <candyz at linux.org.tw>
##
## This program is free software; you can redistribute it and/or
## modify it under the terms of the GNU General Public License
## as published by the Free Software Foundation; either version 2
## of the License, or (at your option) any later version.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with this program; if not, write to the Free Software
## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
## 02111-1307, USA.
##
## Jun 26 2002
## Last modified by Chung-Yen Chang <candyz at linux.org.tw>
#
# =================
# APT Server 的架設
# =================
#
BASEDIR=/var/ftp/gaga
#
cd $BASEDIR
rm -rf SRPMS.gaga
ln -sf SRPMS SRPMS.gaga
#
cd RedHat
rm -rf RPMS.gaga
ln -sf RPMS RPMS.gaga
#
sh /usr/bin/genbasedir --topdir=/var/ftp/gaga --bloat --bz2only --progress RedHat gaga
#
# ================
# APT Clients 部份
# ================
#
關於 CLE 的升級系統
我採用的是 APT 套件,這套在 debian 上相當著名的套件,不久前巴西的 Conectiva
公司將其移植到 RPM 系統上,而我把它移植到 CLE 上來
相信有用過 debian 或玩過 apt 的人,應該都不會太陌生才是

事實上在過年前我就已經在測試了,目前運作的狀況還算可以接受
目前僅供 RedHat 7.0 以上的系統進行升級
我測試過的,全新安裝一台英文版的 RedHat7 後,再以 apt 來升級,
升級完成後,就跟 CLE 1.0 是一樣的了,這樣也不失為一個不錯的升級管道
目前我在升級新套件時,都已經是用 apt 在運作了...

** 注意 **
本套件仍在發展階段,因此,並不保證一定適合每個人的狀況,所以,請要使用的人
可以的話,最好先備份一下您的重要資料(而我已使用了一段時間了,一切都很正常)
若您因為使用這個套件而造成損失,我將不負任何責任

一、所需套件:
至 CLE 網站下載以下兩個套件
ftp://cle.linux.org.tw/pub/CLE/i386/RedHat/RPMS/
apt-0.3.19cnc55-5.i386.rpm
apt-devel-0.3.19cnc55-5.i386.rpm
下載回來後,以 rpm -ivh 將其安裝起來

二、主要設定檔:
1./etc/apt/sources.list
這是最重要的設定檔了,記載著 Server repository 的一些資訊,內容如下:

# Package repository URLs
#
# CLE 1.1(gaga) Mirrors
#
rpm ftp://cle.linux.org.tw/pub/CLE/i386 RedHat gaga freshrpms
rpm-src ftp://cle.linux.org.tw/pub/CLE/i386 RedHat gaga freshrpms

這是內定的,若您知道有距離您更近的站有提供同樣的服務時,可以依照您的
需求更改或是增加您要的站台
目前國內有提供 apt 服務的列表可參考底下網址:
http://cle.linux.org.tw/index.php?SCREEN=story_view&sid=&pathway=71&node=277

2.其他在 /etc/apt 目錄下的一些設定檔 apt.conf rpmpriorities vendors.list
使用內定的即可,若有需要變更,請 man 一下或是自行參考 apt 的說明文件

三、主要指令:
主要有 apt-cache apt-cdrom apt-config apt-get 這四個指令,一般使用者比較
會用到的,應該就是 apt-get 指令了,其他更詳細的說明請自行 man 或是參考相關
的說明文件

=======
apt-get
=======
1.apt-get update
更新套件資訊,要升級之前,最好都先執行一次本指令和 Server 端的資訊同步
一下

2.apt-get check
檢查你系統上套件的相依性狀況

3.apt-get dist-upgrade 和 apt-get upgrade
執行整個升級動作,建議用 apt-get dist-upgrade 比較好

4.apt-get install 套件名稱
安裝某一個套件及其相關的套件
如 apt-get install xcin
這樣就會幫您安裝好 xcin 了,連 libtabe 也會一併幫您安裝好

5.apt-get remove 套件名稱
移除某套件,和 rpm -e 功能一樣,同時還會幫您把相關的套件一併移除

6.apt-get source 套件名稱
抓回 source rpm
例: apt-get source --compile zhcon
抓回 source rpm 並編譯成 binary rpm
--compile 參數就如同 rpm -ba 一般

7.apt-get clean
刪除下載回來的檔案

=========
apt-cdrom
=========
在您安裝好系統後,可以使用 apt-cdrom 來把這三片光碟加入 apt 的 sources.list 中
用法如下:

$ apt-cdrom add
Using CD-ROM mount point /mnt/cdrom/
Unmounting CD-ROM
Please insert a Disc in the drive and press enter
Mounting CD-ROM
Identifying..
Scanning Disc for index files.. Found 1 package indexes and 0 source indexes.
Please provide a name for this Disc, such as 'MyDistro 6.0 Disk 1':
Gaga V1.1 disc1
This Disc is called:
'Gaga V1.1 disc1'
Reading Indexes... Done
Writing new source list
Source List entries for this Disc are:
rpm cdrom:/ RedHat gaga
Repeat this process for the rest of the CDs in your set.

$ apt-cdrom add
Using CD-ROM mount point /mnt/cdrom/
Unmounting CD-ROM
Please insert a Disc in the drive and press enter
Mounting CD-ROM
Identifying..
Scanning Disc for index files.. Found 1 package indexes and 0 source indexes.
Please provide a name for this Disc, such as 'MyDistro 6.0 Disk 1':
Gaga V1.1 disc2
This Disc is called:
'Gaga V1.1 disc2'
Reading Indexes... Done
Writing new source list
Source List entries for this Disc are:
rpm cdrom:/ RedHat gaga
Repeat this process for the rest of the CDs in your set.

$ apt-cdrom add
Using CD-ROM mount point /mnt/cdrom/
Unmounting CD-ROM
Please insert a Disc in the drive and press enter
Mounting CD-ROM
Identifying..
Scanning Disc for index files.. Found 1 package indexes and 0 source indexes.
Please provide a name for this Disc, such as 'MyDistro 6.0 Disk 1':
Gaga V1.1 disc3
This Disc is called:
'Gaga V1.1 disc3'
Reading Indexes... Done
Writing new source list
Source List entries for this Disc are:
rpm cdrom:/ RedHat gaga
Repeat this process for the rest of the CDs in your set.

在加完三片光碟後,您應該可以在您的 /etc/apt/sources.list 裡看到如下三行:

rpm cdrom:/ RedHat gaga
rpm cdrom:/ RedHat gaga
rpm cdrom:/ RedHat gaga

這樣以後就可以使用 apt-get 來安裝之前未安裝的套件了

範例如下:
若您並沒有連上網路,請修改您的 /etc/apt/sources.list
把其他各行都刪除或是註解起來,只留下底下這三行
rpm cdrom:/ RedHat gaga
rpm cdrom:/ RedHat gaga
rpm cdrom:/ RedHat gaga

$ apt-get update
Ign cdrom://Gaga V1.1 disc3 RedHat release.gaga
Ign cdrom://Gaga V1.1 disc2 RedHat release.gaga
Ign cdrom://Gaga V1.1 disc1 RedHat release.gaga
Ign cdrom://Gaga V1.1 disc3 RedHat/base/mirrors
Ign cdrom://Gaga V1.1 disc2 RedHat/base/mirrors
Ign cdrom://Gaga V1.1 disc1 RedHat/base/mirrors
Processing File Dependencies... Done
Reading Package Lists... Done
Building Dependency Tree... Done
W: cdrom:/ will not be authenticated.
W: cdrom:/ will not be authenticated.
W: cdrom:/ will not be authenticated.

$ apt-get install zhcon
Processing File Dependencies... Done
Reading Package Lists... Done
Building Dependency Tree... Done
The following NEW packages will be installed:
zhcon
0 packages upgraded, 1 newly installed, 0 to remove(replace) and 0 not
upgraded.
Need to get 0B/3098kB of archives. After unpacking 5466kB will be used.
Media Change: Please insert the disc labeled 'Gaga V1.1 disc3' in the drive
'/mnt/cdrom/' and press enter

Get:1 cdrom://Gaga V1.1 disc3 RedHat/gaga zhcon 0.14-6
Fetched 3098kB in 4m35s (11.3kB/s)
Executing RPM (-U)...
Preparing... ###########################################
1:zhcon ###########################################


根據指示放入 'Gaga V1.1 disc3' 第三片光碟即可
也可免除要新增套件時,不知道該套件到底是放在哪一片光碟片上而要找半天的麻煩


如何把 iso檔加入 sources.list 用 apt-get 來安裝之前未安裝的套件?

$ mount -o loop gaga-20020625-1.iso /mnt/cdrom/
$ apt-cdrom add -m -d /mnt/cdrom
Using CD-ROM mount point /mnt/cdrom/
Identifying..
Scanning Disc for index files.. Found 1 package indexes and 0 source indexes.
Please provide a name for this Disc, such as 'MyDistro 6.0 Disk 1':
Gaga V1.1 disc1
This Disc is called:
'Gaga V1.1 disc1'
Reading Indexes... Done
Writing new source list
Source List entries for this Disc are:
rpm cdrom:/ RedHat gaga
Repeat this process for the rest of the CDs in your set.

========================================================
-m 參數表示我們自己已經 mount CDROM 了,不用再 mount 一次
-d /mnt/cdrom 用來指定我們的掛載點

重覆此步驟把三個 iso 檔都加入 sources.list 中
接下來

$ apt-get update
Ign cdrom://Gaga V1.1 disc3 RedHat release.gaga
Ign cdrom://Gaga V1.1 disc2 RedHat release.gaga
Ign cdrom://Gaga V1.1 disc1 RedHat release.gaga
Ign cdrom://Gaga V1.1 disc3 RedHat/base/mirrors
Ign cdrom://Gaga V1.1 disc2 RedHat/base/mirrors
Ign cdrom://Gaga V1.1 disc1 RedHat/base/mirrors
Processing File Dependencies... Done
Reading Package Lists... Done
Building Dependency Tree... Done
W: cdrom:/ will not be authenticated.
W: cdrom:/ will not be authenticated.
W: cdrom:/ will not be authenticated.

$ apt-get install zhcon
Processing File Dependencies... Done
Reading Package Lists... Done
Building Dependency Tree... Done
The following NEW packages will be installed:
zhcon
0 packages upgraded, 1 newly installed, 0 to remove(replace) and 0 not
upgraded.

Need to get 0B/3098kB of archives. After unpacking 5466kB will be used.
Media Change: Please insert the disc labeled 'Gaga V1.1 disc3' in the drive
'/mnt/cdrom/' and press enter

此時再開個視窗手動把 disc3 iso 掛載到 /mnt/cdrom 下即可

=========
apt-cache
=========
1.apt-cache showpkg
顯示套件資訊
例: apt-cache showpkg zhcon

2.apt-cache stats
顯示相關的統計資訊

3.apt-cache dump
顥示 cache 中每個套件的簡短資訊

4.apt-cache unmet
檢查所有未符合相依性的相關資訊

5.apt-cache show
顯示套件資訊,同 rpm -qi 一般

6.apt-cache search
尋找檔案
例: apt-cache search zhcon

7.apt-cache depends
顯示套件的相依性
例: apt-cache depends zhcon

8.apt-cache pkgnames
尋找符合的套件名稱
例: $ apt-cache pkgnames openss
openssh-askpass
openssl096
openssl-perl
openssl095a
openssl-python
openssh-clients
openssl-devel
openssh-askpass-gnome
openssh
openssl
openssh-server

==========
apt-config
==========
1.apt-config dump
顯示目前的設定狀態

==============================================================================

以上這些是比較常用到的指令

基本上,若要升級,只要定期執行 apt-get update 和 apt-get dist-upgrade 就
可以維持和 CLE 最新的套件同步的狀況了...

另外我也寫了一個選單式的 script,您可以直接執行 apt ,然後選擇您要的指令
即可....
還有一個不錯用的圖形介面 apt 前端程式 synaptic,您可以在底下網站下載到:
ftp://cle.linux.org.tw/mirror/freshrpms/valhalla/synaptic/

注意:
在升級一些特殊的套件時,尤其像是 kernel 和 glibc 等,升級的先後順序也很重要
請您還是先download回來後,再用 rpm -Uvh 去升級比較保險
至於其他的套件,就比較沒關係了,放心的用 apt 去升級
若遇到無法用 apt 升級時,那就改用 rpm 先去升級該套件吧

--
Chung-Yen Chang (candyz at linux.org.tw)
RHCE Cert Number: 806200500202093
ICQ Number: 13917113
http://cle.linux.org.tw/
--

補充 by netman:
另一篇<<從無到有,CLE 的 APT 之旅>>的文章﹐也是非常值得大家參考的﹕
http://cle.linux.org.tw/~candyz/index.htm
页: [1]
查看完整版本: linux自动升级软件APT使用教程[转贴]