Linuxを学び、楽しみたい人々のために
データセンターのサーバ群

パッケージ管理

ページ作成日 2016/4/27

ソフトウェアは、「生もの」で、バグやセキュリティの修正の観点から、最新のバージョンにアップデートする事が望ましいものの、一方で、人によって開発されているためバージョンアップによって不具合が発生する事もあります。

Slackwareは、セキュリティと安定性を鑑みつつ、ソフトウェアの更新をしていく点で、非常にバランス感覚が優れています。

最近は、ソフトウェアのリリースサイクルが短くなってきている事もあり、Slackwareのバージョン番号の更新とそのリリースは、マイルストーンというよりはスナップショットみたいになってきていて、Slackwareのメジャー番号(整数部)は上がらなくなり、マイナー番号(小数部)の番号が上がっています。
従って、最新のSlackwareのリリースのバージョン番号は、14.1から14.2となりました。

Slackwareをインストールしたら、そのバージョン番号に含まれているパッケージ群をそのままに利用するのではなく、Slackware-currentというパッケージツリーで更新が定常的に続いていきますから、そちらをソースレポジトリとして、システムを更新し続ける運用となります。

Windowsであれば、Microsoft Updateのサーバから更新情報の通知を受け取り、その情報に基づいてアップデートをしていくわけですが、Slackwareの場合は、自分で更新情報をチェックして、新しいパッケージがリリースされていれば自分でアップデートします。

slackpkg

Slackwareには、slackpkgというパッケージ管理ツールがあります。
元々は、Third Partyツールとして、Piter Punk氏によって開発されてきたものですが、9.1からextraフォルダに取り込まれ、12.2でapカテゴリに正式に採用されました。

初期設定

まずは、slackpkgが入っているかどうか、確認します。
slackpkgは/usr/sbinに入っている特権ユーザ用のコマンドなので、一般ユーザでは使えないですし、存在が見えません。
rootにsuして、whichコマンドで確認します。


$ su
パスワード:
# which slackpkg
/usr/sbin/slackpkg

もしも、12.2より以前のSlackwareを使っていてslackpkgが入っていない場合は、色々とパッケージの内容が変更になっているので、Slackwareのアップグレードを行ってください。

パッケージをどこから取得するかを/etc/slackpkg/mirrorsの該当箇所のコメントアウトを削除して選択します。


# cd /etc/slackpkg/mirrors
# vi mirrors

/etc/slackpkg/mirrors


#
#----------------------------------------------------------------
# Local CD/DVD drive
#----------------------------------------------------------------
# cdrom://media/cdrom/ <- CD/DVDから取得して更新する場合は、この行の#を消して有効にする
#
#----------------------------------------------------------------
# Local Directory
#----------------------------------------------------------------
# file://path/to/some/directory/ <- ローカルディスクから取得する場合は、この行の#を消して実際のパスを記述して有効にする
#
#----------------------------------------------------------------
# Slackware64-14.1
#----------------------------------------------------------------
# USE MIRRORS.SLACKWARE.COM (DO NOT USE FTP - ONLY HTTP FINDS A NEARBY MIRROR)
# http://mirrors.slackware.com/slackware/slackware64-14.1/
# AUSTRALIA (AU)
# ftp://ftp.cc.swin.edu.au/slackware/slackware64-14.1/
# http://ftp.cc.swin.edu.au/slackware/slackware64-14.1/
# ftp://ftp.iinet.net.au/pub/slackware/slackware64-14.1/
# http://ftp.iinet.net.au/pub/slackware/slackware64-14.1/
# ftp://mirror.aarnet.edu.au/pub/slackware/slackware64-14.1/
# http://mirror.aarnet.edu.au/pub/slackware/slackware64-14.1/

[画面省略]

# JAPAN (JP)  <- ネットワークから取得する場合は、このサーバの内、取得先を一つ選び、その行の#を消して有効にする
# ftp://ftp.nara.wide.ad.jp/pub/Linux/slackware/slackware64-current/
# http://ftp.nara.wide.ad.jp/pub/Linux/slackware/slackware64-current/
# ftp://ftp-srv2.kddilabs.jp/032/Linux/packages/Slackware/slackware64-current/
# http://ftp-srv2.kddilabs.jp/032/Linux/packages/Slackware/slackware64-current/
# ftp://riksun.riken.go.jp/Linux/slackware/slackware64-current/
# http://riksun.riken.go.jp/Linux/slackware/slackware64-current/

2015年11〜12月以降、日本のミラーが同期が取れていないので、私の方で管理者の皆さんに連絡しました。(2016/4/27)
KDDI研究所の方からはすぐにお返事を頂いて、修正して頂きました。
ですので、現状は、KDDI研究所のサーバをお勧めします。

KDDI研究所のミラーのURLが変更になっているので、以下のように変更して下さい。
(旧)http://ftp-srv2.kddilabs.jp/032/Linux/packages/Slackware/slackware64-current/
(新)http://ftp-srv2.kddilabs.jp/Linux/distributions/Slackware/slackware64-current/

パッケージ情報の更新

まずは、パッケージ情報を更新します。
パッケージの更新があったかどうかは、Slackwareの公式サイトのChange Logをチェックします。

パッケージの更新があった場合には、以下のコマンドでパッケージ情報を更新します。


# slackpkg update

[画面表示省略]

        Formatting lists to slackpkg style...
                Package List: using CHECKSUMS.md5 as source
                Package descriptions

一点、注意しておきたいのは、本家の方で更新されたパッケージがあったとしても、ミラーサイトに同期されるまでには、それなりに時間差があるという点です。
1〜2日あれば、殆どのミラーサイトの同期が終わっていると思います。
急ぎ、セキュリティの問題を修正したパッケージに更新したい場合は、アメリカの方のミラーサイトの方が早いです。
必要に応じて、ミラーサイトの選択は、柔軟に変更して運用すると良いです。

パッケージの更新

パッケージの更新には、upgrade-allのオプションを指定して使います。


# slackpkg upgrade-all

すると、コンソールに以下のような画面が表示されます。
更新するパッケージが選択されている事を確認して、スペースバーで「了解」を押します。

                             upgrade
Chose package to upgrade:
          [*] mozilla-firefox-45.1.0esr-x86_64-1.txz








                  <  解 >           < 取 消 >

パッケージは、基本的に、全てインストールすることをお勧めします。

昔は、HDDの容量の関係もあって、必要なもの、推奨のものだけを入れるというのがお勧めでしたが、昨今はHDDの大容量化と共に価格も下がっていますし、SSDの価格も下がっています。
30GBもあれば、/homeのユーザ用の領域以外であれば、十分に足ります。
HDDやSSDの使用容量を節約するために、パッケージを取捨選択する必要はそれほど無いでしょう。

また、Slackwareのパッケージは、どんどん増える一方で、依存関係を追うのが困難になる一方です。
パッケージの依存関係を理解している中・上級者以外は、パッケージを全てインストールした方が無難です。

パッケージの追加

Slackwareでは、他のディストリビューション程ではないにせよ、それなりにパッケージの数が増えてきています。
新しいパッケージの追加には、install-newのオプションを指定して使います。


# slackpkg install-new

すると、コンソールに以下のような画面が表示されます。
新規に追加されたパッケージが表示・選択されている事を確認して、スペースバーで「了解」を押します。

                             install
Chose package to install:
          [*] mozilla-firefox-45.1.0esr-x86_64-1.txz








                  <  解 >           < 取 消 >

パッケージの削除

Slackwareから除外されたパッケージの削除には、clean-systemのオプションを指定して使います。


# slackpkg clean-system

すると、コンソールに以下のような画面が表示されます。
公式で収録されているパッケージ以外が表示されます。
削除したいパッケージを選択して、スペースバーで「了解」を押します。

                             remove
Chose package to remove:
          [*] deb2tgz-0.1.1-noarch-1
          [*] dropbox-3.12.6-x86_64-1_SBo
          [*] exempi-2.3.0-x86_64-1
          [*] fbterm-1.7.0-x86_64-1
          [*] google-chrome-49.0.2623.110-x86_64-1
          [*] kasmi-2.5.0-x86_64-1
          [*] lua-5.3.2-x86_64-1
          [*] opera-36.0.2130.46-x86_64-1
          [*] otp-18.3-x86_64-1
          [*] pyxdg-0.25-x86_64-1
          [*] sublime_text-3.0.83-x86_64-1_SBo
          [*] swi-prolog-6.2.4-x86_64-1_SBo
          [*] sylpheed-3.5.0-x86_64-1
                                                               81%
                  <  解 >           < 取 消 >

自分で作成したパッケージや、SlackBuild.orgから作ったパッケージも削除の一覧に表示されます。
もしも、それらを表示させたくない場合には、/etc/slackpkg/blacklist を編集して、clean-systemで表示させたくないパッケージを設定します。

blacklistの最後の行をコメントアウトすると、SlackBuild.orgから作ったパッケージは表示されなくなります。


# You can blacklist using regular expressions.
#
# Don't use *full* regex here, because all of the following
# will be checked for the regex: series, name, version, arch,
# build and fullname.
#
# This one will blacklist all SBo packages:
#[0-9]+_SBo <- SlackBuild.orgのパッケージをslackpkgで扱わないようにするためには、この行の#を消して有効にする