お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2009-11-14 09:41:06

touko
メンバ
登録日: 2009-06-14

特定のアプリケーションの自動アップデートの停止

たとえばRuby1.8のバージョンのままにしておきたい場合とかに、自動更新しないようにするのにはどうしたらいいのでしょうか?

以前、質問したのですがデータがなくなってしまって思い出せません。申し訳ありませんが、もう一度教えてください。よろしくお願いします。

オフライン

 

#2 2009-11-14 10:12:30

hmatsue
アドバイザ
登録日: 2009-03-10

Re: 特定のアプリケーションの自動アップデートの停止

他にも方法があったような気もしますが、例えば
http://www.debian.org/doc/manuals/apt-howto/ch-apt-get.ja.html
の3.7の方法などもあります。

オフライン

 

#3 2009-11-14 10:47:19

のんき
メンバ
登録日: 2007-03-04

Re: 特定のアプリケーションの自動アップデートの停止

システムー>システム管理ー>Synaptic パッケージ・マネージャ
クイック検索窓にてバージョン固定したいパッケージ名を入力する。
パッケージ一覧窓からバージョン固定したいパッケージ名をマウスにて選択する。
Synapticメニュー、パッケージ(P)メニューからバージョン固定(L)を選択する。

GUIでやるならこんな感じですかね。

オフライン

 

#4 2009-11-14 12:40:47

touko
メンバ
登録日: 2009-06-14

Re: 特定のアプリケーションの自動アップデートの停止

ありがとうございます。CUIでの方法を知りたいんです。よろしくお願いいたします。

オフライン

 

#5 2009-11-14 12:57:28

hir0
メンバ
登録日: 2008-09-28

Re: 特定のアプリケーションの自動アップデートの停止

Ruby1.8の部分は固定したいパッケージ名を正確に入れてください。
$ sudo su
# echo Ruby1.8 hold | dpkg --set-selections
# exit

全体を確認するなら
$ dpkg --set-selections

hold に指定されているパッケージを確認するなら
$ dpkg --set-selections |grep hold

grep hold の部分をパッケージ名に変えるとかくとうするパッケージを表示、(grep コマンドを参照して下さい)

元にもどすのは
$ sudo su
# echo Ruby1.8 install | dpkg --set-selections

オフライン

 

#6 2009-11-14 13:07:22

hir0
メンバ
登録日: 2008-09-28

Re: 特定のアプリケーションの自動アップデートの停止

間違い
誤  --set-

hold に指定されているパッケージを確認するなら
$ dpkg --set-selections |grep hold

正  --get-

hold に指定されているパッケージを確認するなら
$ dpkg --get-selections |grep hold

すみませんでした。
-----------------------------------------------------
元に戻ったかどうかの確認は
$ dpkg --get-selections |grep install

もしくは
$ dpkg --gget-selections |grep パッケージ名

全表示
$ dpkg --get-selections

です。

最後の
# exit
は$に戻る操作ですが必ず実行して下さい。

オフライン

 

#7 2009-11-14 19:55:02

jackalope
メンバ
登録日: 2009-01-01

Re: 特定のアプリケーションの自動アップデートの停止

aptitudeでもできます。
sudo aptitude hold package-name

オフライン

 

#8 2009-11-15 05:46:24

touko
メンバ
登録日: 2009-06-14

Re: 特定のアプリケーションの自動アップデートの停止

ありがとうございました。またよろしくお願いします。

オフライン

 

#9 2010-08-17 17:43:26

vidronoyoru
ゲスト

Re: 特定のアプリケーションの自動アップデートの停止

既に投稿ありましたね。有難うございました。またよろしくお願いいたします。

 

#10 2010-08-18 11:02:06

ack
メンバ
登録日: 2007-06-01

Re: 特定のアプリケーションの自動アップデートの停止

本題とずれますが、

hir0 による投稿:

$ sudo su

今回の場合も含め、たいていの状況において sudo su でrootになることは(実質それで用件自体は行えてしまうのですが)良くありません。
※コマンドの使い方的にもrootになってしまう事自体も非推奨

sudoとシェルについての注記
https://wiki.ubuntulinux.jp/UbuntuTips/Others/RootSudo

sudoを使ってのコマンド実行の出力をリダイレクトするためには、特別な取扱いが必要になります。一例としては、sudo ls > /root/somefileはファイル出力をしようとするのがシェルであるため機能しません。代わりにls | sudo tee -a /root/somefile、もしくは、ls | sudo tee /root/somefileを使って下さい。あるいは、root権限を要するファイル出力のために、sudo sh -c "ls > /root/somefile"のようにしてコマンド全体をsudoを使って実行したシェルに渡すこともできます。

など参考に、例えば

コード:

sudo sh -c "echo Ruby1.8 hold | dpkg --set-selections"

のような使い方が良いと思います。

またrootシェルの使用が避けられない場面では

sudo -i (現在の環境変数を引き継がない、他)
sudo -s (現在の環境変数を引き継ぐ、他)

のどちらかが良いと思います。

su、su -、sudo -{i,s}の違いについての大まかな説明
http://ubuntuforums.org/showpost.php?p=6188826&postcount=4
等参考になるかと思います。

またさらに余談となりますが管理者権限でGUIアプリを端末等から起動するには

グラフィカルなアプリケーションをroot権限で実行する場合、決して通常のsudoを使ってはいけません。その場合は、gksudo (Kubuntuではkdesudo)を使うべきです。
gksudoは環境変数$HOMEを~rootに設定します。そして、.Xauthorityをtmpディレクトリにコピーします。これにより、あなたのホームディレクトリの所有者がrootに変わってしまうことを防ぎます

の理由により gksudo を使います。
※sudo gedit ・・・ とやってしまいがちですが gksudo gedit ・・・ とすべき

オフライン

 

#11 2010-08-18 11:42:59

einundzwanzighundertsechs
メンバ
登録日: 2008-12-28

Re: 特定のアプリケーションの自動アップデートの停止

気になって過去の他の投稿も検索してみました.
--set-selections との組み合わせでは sudo の使い方は「疑問手」なのが多いですね.

ack さん による投稿:

コード:

sudo sh -c "echo Ruby1.8 hold | dpkg --set-selections"

root 権限が必要なのは dpkg だけなので,

echo Ruby1.8 hold | sudo dpkg --set-selections

で充分です.

オフライン

 

#12 2010-08-18 12:29:44

ack
メンバ
登録日: 2007-06-01

Re: 特定のアプリケーションの自動アップデートの停止

einundzwanzighundertsechs による投稿:

root 権限が必要なのは dpkg だけなので,

echo Ruby1.8 hold | sudo dpkg --set-selections

で充分です.

仰るとおりです、今回はeinundzwanzighundertsechsさんの形がベストですね。
# やっちまった・・・

普段から少しずつ気をつけて、{正しい|シンプルでわかりやすい|無駄のない|安全な}使い方を共有できればと思います。

オフライン

 

#13 2010-08-18 13:44:57

hito
管理者
登録日: 2007-03-18

Re: 特定のアプリケーションの自動アップデートの停止

sudoに関連するオペレーションに関する指摘は正しいのです、が……。

なんとなくそれ以前の(より重要な)問題として、「dpkg --set-selectionsする前には、必ずdpkg --get-selections <パッケージ名>をして現状を確認する」という手順が抜けているような気がします。

dpkg --set-selectionsによるhold操作を行う際は、できるだけ以下のようにしてください。
いきなり --set-selections するのは、パッケージ管理上かなりホラーです。

1) dpkg --get-selections <パッケージ名> を実行し、現状が「install」であることを確認する。
2) echo "<パッケージ名> hold" | sudo dpkg --set-selections を実行して hold する。
3) dpkg --get-selections <パッケージ名> を実行し、現状が「hold」であることを確認する。

この前提が守られていないと、「解除するときは echo "<パッケージ名> install" | sudo dpkg --set-selections」は成立せず、status に不正な情報を入れ込んでしまう結果になります。

# ダブルクォートはTab操作時などの安全確保の意味では、入れておいた方が自爆しないで済むはずです。

3) の操作時は、できれば diff -u /var/lib/dpkg/status-old /var/lib/dpkg/status も実行して、以下のような「install ok installd => hold ok installed」への変化も確認しておきましょう。

コード:

 Package: zsh
-Status: install ok installed
+Status: hold ok installed
 Priority: optional
 Section: shells
 Installed-Size: 12696

さらにホラーな話として、以下のような罠があります。たぶんこれで合っている、はず。

 ・Synaptic・aptitudeによる「バージョン固定」操作は、update managerやaptitudeに対してのみ有効です。apt-get upgrade時には無視されます。

 ・dpkg --set-selections による hold は、apt-get updateにおいてのみ有効です。aptitude などからは無視されます。

ということで、この種のバージョン固定操作は混ぜるな危険です。常用しているパッケージマネージャごとに、適切な操作を行ってください。/etc/apt/preferencesにpin設定を行うことで共通して有効な設定も可能ですが、これはこれで副作用があるので、「混ぜるな危険」を意識して、自分の使うパッケージマネージャに即したものを選択してください。

オフライン

 

Board footer

Powered by FluxBB