読者です 読者をやめる 読者になる 読者になる

C++ ときどき ごはん、わりとてぃーぶれいく☆

Wonder Rabbit Projectのなかのひとのブログ。主にC++。

openSUSE-12.2 で .ymp をコンソールから登録する方法

CUIでも software.opensuse.org: Search などから目的のパッケージを探し openSUSEリポジトリーを登録し yast または zypper したい場合のメモ。

1. .ymp を探す

w3m "http://software.opensuse.org/search?q=darkhttpd"

darkhttpdにはもちろん自分が探したい何かに対し適当な検索キーワードを入れましょう。

f:id:USAGI-WRP:20121224143537p:plain

など適当な手段で.ympを探す。手作業でダウンロードする必要はないので、 .ymp のURLをクリップボード的なものにコピーしておく…でも良いのだけど、コンソールでは少し厄介なのでここは素直にファイルを保存しておく事に。w3mで.ympを開きsキーで保存します。

おまけ1
obs-search(){ if [ $# != 0 ]; then w3m "http://software.opensuse.org/search?q=$*"; fi; }

とか .zshrc なんかに仕込んで置くとCUIからもさっくり探せていいんじゃないかと思います。

おまけ2

f:id:USAGI-WRP:20121224143635p:plain

w3mならポインティングデバイスの右クリックでコンテキストメニューを出して保存する事も可能。というか基本的に操作全般にポインティングデバイス使用可能。

2. OCICLI

httpなURLをコマンドに渡せる状態の場合は OCICLI、 まさかの全部大文字コマンドですが実在します。

OCICLI "http://software.opensuse.org/ymp/home:USAGI-WRP/openSUSE_12.2/darkhttpd.ymp"

.ympを拾ってある場合は、

OCICLI file://`pwd`/darkhttpd.ymp

とか。OCICLIに渡すパラメーターはURL形式でなければならないので注意。

f:id:USAGI-WRP:20121224160602p:plain

.ympのロードに成功するとGPG鍵のインポートについてYaSTから尋ねられる。自己判断でTrustしましょう。

なお、OCICLIは基本的にユーザーが直接叩くコマンドとしては整備状況が悪く、エラーメッセージ等は出ません。GPG鍵のインポートについて訪ねて来る事も無く処理が戻って来たならばパラメーターが無効であるなどの理由で失敗している可能性が高いです。

おまけ3

OCICLIはOneClickInstallCLIの略。

file `which OCICLI`
/sbin/OCICLI: symbolic link to `OneClickInstallCLI'

追いかける。

file `which OneClickInstallCLI`
/sbin/OneClickInstallCLI: POSIX shell script, ASCII text executable

中身は22行の簡単なshスクリプト。

cat `which OneClickInstallCLI`
#!/bin/sh
if [ $# -ne 1 -o "$1" = "-h" -o "$1" = "--help" ]
then
        echo "Usage: <YMP URL>"
        exit 1
fi
TEMPFILE=$(mktemp)
/sbin/YaST OneClickInstallCLI prepareinstall url=$1 targetfile=$TEMPFILE
if [ $? -ne 0 ]
then
        exit $?
fi

echo "Continue? y/N"
read continue
continue=${continue:="N"}
if [ $continue == "Y" ] ||  [ $continue == "y" ]
then
        su -c "/sbin/YaST OneClickInstallCLI doinstall instructionsfile=$TEMPFILE"
else
        exit 2 
fi

yast2コマンドにモジュールOneClickInstallCLIを指示してprepareinstallとdoinstallをオプション付きで呼んでいるだけ。この中身を見てdoinstallだけでもローカルの.ympを処理できるのかなーと思ったけれどprepareinstallも必要らしく、素直にURL形式で渡すのが良いという結論となりました。ちなみにopenSUSE-12.2のyastYaSTはyast2へのシンボリックリンクです。

3. zypper したりで目的のパッケージをインストール

zypper se darkhttpd
リポジトリのデータを読み込んでいます...
インストール済みのパッケージを読み込んでいます...

S | 名前      | 概要                                   | 種類            
--+-----------+----------------------------------------+-----------------
  | darkhttpd | When you need a web server in a hurry. | ソースパッケージ

出てきましたねー^-^

zypper in darkhttpd
 ...

めでたしめでたし。これでGUIなんてコストを掛けたくない環境でも設定ファイル直接いじらずとも楽にあっさりリポジトリーの追加とパッケージの導入ができるようになりました。