Slackware 14.2へアップグレードする(マニュアル編)
こんにちは。今回のテーマは『Slackware 14.2へアップグレードする(マニュアル編)』です。2016年7月1日にSlackware 14.2がリリースされました。Slaciware14.1が2013年11月にリリースされてから約3年ぶりのリリースとなりました。今回はマニュアルで14.2へのアップグレードについて記事にしてみました。
※本記事でのアップグレード方法はとても面倒で時間もかかるので実際の作業はslackpkgでのアップグレード作業をおすすめします。また、本記事の内容は筆者が試した内容で、アップグレードの成功を保証するものではなく、システムの変更はご自身の責任で行って下さい。
【関連記事】
【目次】
Slackware 14.2リリース
パッケージの準備をする
Slackware 14.1を14.2にアップグレードする
Slackware 14.2リリース
Slackware14.2ではKernel4.4.14を採用し、サウンドはALSAからPulseAudioへ、またPython,Ryuby,Perl等のスクリプト言語のバージョンも大幅にアップしました。個人的にはinitシステムにSystemdが採用されるか注目していましたが、伝統的なBSDスタイルが継承されたようです。
パッケージの準備をする
今回はftp.slackware上に上がっているSlackware 14.2用のパッケージを全てローカル上にダウンロードしてアップグレードすることにしました。以下のコマンドを実行してftpサーバー上の14.2用パッケージをローカルの/root/slackware上に用意します。
root# cd /root/Downloads root# wget -mck --passive-ftp ftp://anonymous@ftp.slackware.com/pub/slackware/slackware-14.2/slackware root# cp -rv ftp.slackware.com/pub/slackware/slackware-14.2/slackware /root/slackware
これで/root/slackware上にftp上の環境と同じ環境が準備できました。
Slackware 14.1を14.2にアップグレードする
基本的な手順はUPGRADE.TXTにかかれている手順に従っていきます。
0.シングルユーザーモードに切り替える
シングルユーザーモードに切り替えましょう。
root# telinit 1
1. glibcの更新
まずはglibcライブラリを更新します。
root# upgradepkg /root/slackware/a/glibc-solibs-*.txz
2.パッケージツール群の更新
以下のコマンドを実行してパッケージを扱うツール群を更新します。
root# upgradepkg /root/slackware/a/pkgtools-*.txz root# upgradepkg /root/slackware/a/tar-*.txz root# upgradepkg /root/slackware/a/xz-*.txz root# upgradepkg /root/slackware/a/findutils-*.txz
3.パッケージの更新
以下のコマンドを実行して他の全てのパッケージのアップグレードと新しいパッケージをインストールします。
root# upgradepkg --install-new /root/slackware/*/*.t?z
もしKDEI言語パッケージを除く全てアップグレードする場合は以下のスクリプトを実行します。
#!/bin/sh for dir in a ap d e f k kde l n t tcl x xap xfce y ; do ( cd $dir ; upgradepkg --install-new *.t?z ) done
4.古いパッケージの除去
古いパッケージや不要となったパッケージを除去します。/root/CHANGES_AND_HINTS.TXTに除去すべきパッケージのリストがありますので参考にして下さい。以下コマンドで現在インストールされているパッケージの一覧を見ることができます。
root# ls /var/log/packages -lt | less
以下のコマンドはSlackware 14.1以降古くなったパッケージを除去するコマンドです。必要に応じて実行して下さい。
root# removepkg ConsoleKit apmd bluez-hcidump cxxlibs foomatic-filters \ gnome-icon-theme imlib kdeadmin kdenetwork kdesdk kdetoys kwallet \ lesstif libelf libjpeg libxfcegui4 networkmanagement obex-data-server \ obexfs open-cobol oxygen-gtk3 phonon-mplayer phonon-xine pil portmap \ procps qca-cyrus-sasl qca-gnupg qca-ossl udev xchat xf86-input-aiptek \ xf86-video-modesetting xfce4-mixer xfce4-volumed xfwm4-themes
5.設定ファイルの更新
設定ファイルの設定を行います。以下のスクリプトを実行することで新しい設定ファイルを/etc以下に導入して古い設定ファイルは*.bakファイルとしてバックアップされることになります。もちろん、マニュアルで個別に設定を行っても問題ありません。
#!/bin/sh cd /etc find . -name "*.new" | while read configfile ; do if [ ! "$configfile" = "./rc.d/rc.inet1.conf.new" \ -a ! "$configfile" = "./rc.d/rc.local.new" \ -a ! "$configfile" = "./group.new" \ -a ! "$configfile" = "./passwd.new" \ -a ! "$configfile" = "./shadow.new" ]; then cp -a $(echo $configfile | rev | cut -f 2- -d . | rev) \ $(echo $configfile | rev | cut -f 2- -d . | rev).bak 2> /dev/null mv $configfile $(echo $configfile | rev | cut -f 2- -d . | rev) fi done
6.言語パッケージの更新
もし、KDE向けの英語以外の言語(多くの場合は日本語だとおもいます。)パッケージが導入されている場合には以下のコマンドで更新する必要があります。
root# cd /root/slackware/kdei root# upgradepkg --install-new *-<your KDE locale>-*t?z
7.起動周りの設定
再起動する前にこれまでinitrdを使用して起動していた場合には新しいカーネルに合わせてinitrdを更新する必要があります。この作業を忘れると起動できなくなることもあるので注意が必要です。initrdの作成はmkinitrd_command_generator.shスクリプトを実行することで作成できます。
もし64bit向けカーネルや32bit向けのシングルプロセッサーカーネルを使用している場合は以下のコマンドを実行します。
root# /usr/share/mkinitrd/mkinitrd_command_generator.sh -k 4.4.14 | bash
If you’re using the 32-bit SMP kernel, use this command:
また、 32bit SMPカーネルを使用している場合は以下のコマンドを実行します。
root# /usr/share/mkinitrd/mkinitrd_command_generator.sh -k 4.4.14-smp | bash
ブートローダとしてLILOを使用してる場合は/etc/lilo.confを確認して起動時に呼び出すパスが間違っていないか等を確認します。
8. マルチユーザーモードに戻す
作業前にランレベルを1にしていた場合は以下コマンドで戻しましょう。
root# telinit 3
9. 再起動
設定は終わりました。再起動しましょう。
root# reboot
最後に
今回はマニュアル編ということで手動アップグレードについて書きましたが、正直パッケージのダウンロードに時間が掛かりすぎて後悔しました。今回紹介した方法は手間も時間もかかるので正直オススメできません。実際のアップグレード作業はslackpkgを用いた作業の方が現実的なのではないかと考えています。次回はslackpkgを用いたアップグレードについて書きたいと思います。
Sponsored Link
こんにちは。
Slackware Linux 14.2で、systemctlコマンドを使用することは可能なのでしょうか。
もしも、可能なのであれば、その方法をご教授ください。
よろしくお願いいたします。
Usuhaさん
返信が遅くなりごめんなさい。
Slackwareでsystemctlコマンドを使用する件ですが、
systemctlはinitシステムとしてsystemdを使用している場合のコントロールコマンドですので、Slackwreのinitをsystemdに変更すれば原理上は使用可能かとは思います。
systemdパッケージを自前でビルドして導入し、現行のBSDスタイルのinitスクリプトを停止する作業が必要になると考えますが、実際にやったことがないので詳細な手順はここでは触れません。
私は試してみたことがないので、推測の域を出ませんが、 Slackwareは公式にsystemdを採用していませんので各パッケージもsystemdで起動することを前提にはしておらず、その部分で不都合が生じる可能性はあります。
またLinuxのinitとしてsystemdを採用するディストロが多い中で珍しくBSDスタイルのinitを堅持しているのがSlackwareの特徴でもあるので、systemdを使用したい場合は他のディストロを使用した方が良いかも知れませんね。