Movatterモバイル変換


[0]ホーム

URL:


LoginSignup
34

Go to list of users who liked

37

Share on X(Twitter)

Share on Facebook

Add to Hatena Bookmark

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

scoopのインストール先を変更する

Last updated atPosted at 2018-05-02

Scoopのインストール先を変更する

システムドライブにデータやツールは置きたくないという宗教的理由から、C:は意図的に小さめ(100GB)でパーティション切ってます。なのでChocolateyやScoopのようなパッケージマネージャでどかどか放り込まれるのは心理的にも物理的にもつらい。

最初\scoop\以下を別ドライブに移動してc:\Users\<ユーザー名>にシンボリックリンク張ってみたんですがscoop自身がなかでジャンクションを使用してるのでリンクが循環参照しまくって気持ち悪いことに。(というか先にマニュアル読めっていう)

Scoopとは

Windows用のコマンドラインインストーラ
aptとかpacmanとかapt-cygとかpipとかgemとかchocolateyとかその辺のやつみたい
ScoopでWindowsにおける開発環境構築を最適化しよう

インストール先の指定方法

scoop/lib/core.ps1 (GitHub)の6~10行目付近によると環境変数 SCOOPSCOOP_GLOBAL (AllUsers用)を設定しておけばよいようです。規定値は以下

SCOOP =C:\Users\<ユーザー名>\scoop

SCOOP_GLOBAL =C:\ProgramData\scoop

…というか普通にwikiに記載がありました (だから先に読めっていう)

Installing Scoop to Custom Directory

Assuming the target directory is D:\Applications\Scoop, in a PowerShell command console, run:

[environment]::setEnvironmentVariable('SCOOP','D:\Applications\Scoop','User')$env:SCOOP='D:\Applications\Scoop'iex(new-objectnet.webclient).downloadstring('https://get.scoop.sh')

Scoopのアンインストールと引っ越し

Scoopはシステム依存性の少ないソフトですがジャンクションやshimのパスは張り直ししないと無理みたい。一度アンインストールして入れ直しします。

これを

C:.├─ProgramData│  └─scoop│└─Users    └─<ユーザー名>        └─scoop

こんな風にしたい

D:.├─scoop│  ├─global│  ││  └─<ユーザー名>

ぶっちゃけglobalとuserを分ける意味がないフォルダ構成ですがキニシナイ

個人PCなんでglobalはほぼ使っていないです。ただ、busyboxやgowみたいに入れると既存の同名のshimが大量上書きされるものあるのでエイリアスのテスト展開場所として一応設定しています。一か所で管理できるほうが楽かなと。

scoop以下をバックアップ

scoopのフォルダ構成

└─scoop   ├─apps   ├─buckets   ├─cache   ├─persist   └─shims

バックアップ先はD:\scoop_bkup、フォルダ構成は引っ越し先と同じにしました。

D:.├─scoop_bkup│  ├─global│  │  └─apps│  ││  └─<ユーザー名>│     ├─apps│     ├─buckets│     ├─cache│     └─persist

\apps内のジャンクションと\shimsを除いてバックアップします。

cmd.exe
> robocopy /E /xj %USERPROFILE%\scoop d:\scoop_bkup\%USERNAME% /xd shims> robocopy /E /xj %ProgramData%\scoop d:\scoop_bkup\global  /xd shims

時間かかるので面倒だったらアプリの設定が入ってる\persistだけでもいいんですが、\buckets\cacheをとっとくと後のリストアが少し楽になります。

導入済アプリのリストア 用スクリプトを作成

cmd.exe
> for /f "delims=;" %i in ('dir /b/ad %USERPROFILE%\scoop\apps') do ( echo scoop install %i>>d:\scoop_bkup\restore.ps1 )> for /f "delims=;" %i in ('dir /b/ad %ProgramData%\scoop\apps') do ( echo sudo scoop install %i  --global>>d:\scoop_bkup\restore_global.ps1 )

buckets外からインストールしたアプリがある場合はrestore*.ps1をテキストエディタで開いてjsonの場所をコピペしておきます。
scoop_restore.PNG

cmd.exe
> scoop listInstalled apps:   nyagos 4.2.2_1 [https://gist.githubusercontent.com/dohzoh/75eab6bd7a46d3625ddcd332618e4518/raw/b8e98b5f9e0c14317a9abbafe176081b0cf97438/nyagos.json]
\scoop_bkup\restore.ps1
#scoopinstallnyagosscoopinstallhttps://gist.githubusercontent.com/dohzoh/75eab6bd7a46d3625ddcd332618e4518/raw/b8e98b5f9e0c14317a9abbafe176081b0cf97438/nyagos.json

Scoopをアンインストール

cmd.exe
> scoop uninstall scoop

なんかエラーが出た時はC:\Users\<ユーザー名>\scoop以下を手動で削除

環境変数を設定

インストールしたい場所を指定、この時点では実フォルダはなくても良いようです。

管理者権限でプロンプトを起動

cmd.exe(管理者)
> setx SCOOP d:\scoop\<ユーザー名>> setx SCOOP_GLOBAL d:\scoop\global /m

(2020.06.02追記d:\scoop\%USERNAME%の指定ではうまくいかないようなので修正しました。環境変数使わないで直値で書いてください。)

Scoopの再インストール

cmd.exe->powershell
> powershellPS> set-executionpolicy unrestricted -s cuPS> iex (new-object net.webclient).downloadstring('https://get.scoop.sh')

確認

PS>Get-CommandscoopCommandTypeNameVersionSource----------------------------ExternalScriptscoop.ps1D:\scoop\<ユーザー名>\shims\scoop.ps1

バックアップデータのリストア

\buckets\cache\persistに関しては丸コピーでいけるので\appsのみ除外してリストア

\cache内にアーカイブが残ってれば後の工程でアプリの再ダウンロードが発生しないので多少早く終わります。

powershell->cmd.exe
PS> exit> robocopy /E /xo D:\scoop_bkup\%USERNAME% %SCOOP%  /xd apps> robocopy /E /xo D:\scoop_bkup\global %SCOOP_GLOBAL% /xd apps

アプリの再インストール

git入ってないとScoop本体のアプデできませんてメッセージが出るので一番最初にscoop install gitしたほうがいいかも

cmd.exe
> powershell -ExecutionPolicy RemoteSigned -File d:\scoop_bkup\restore.ps1> powershell -ExecutionPolicy RemoteSigned -File d:\scoop_bkup\restore_global.ps1

時間かかるのでしばらく待ちます。

その他のリストア

MSYS2やcygwinのように\apps内に固有環境を構築するものはファイラーで確認しながら個別に手動で戻します。終わったらバックアップフォルダは丸ごと削除

所感

めんどくさい設定をよしなにしてくれるためのパッケージマネージャなのに、環境設定を弄って使うというのは邪道な気がしなくもない。linuxみたいに入れる場所がきっちり固定化されてる環境から見たらアホなことやってるように見えるんだろうなあ。

34

Go to list of users who liked

37
1

Go to list of comments

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
34

Go to list of users who liked

37

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?


[8]ページ先頭

©2009-2025 Movatter.jp