私はさまざまな目的でVagrantボックスを使用していますが、ほとんどの場合ダウンロード可能な既製のボックスだけで十分です。しかし、時には、単回使用ではなく、日常的な活動のためにボックスに1つまたはいくつかの追加パッケージをインストールする必要があります。
たとえば、MacにVagrantボックスがあり(MacホストのLinuxゲスト)、主に組み込みのLinuxドキュメント(man
ページ、info
ページなど)に簡単にアクセスできるようにしたいと思います。しかし、私が使用しているボックスには、man
最初にインストールしたときにインストールしたパッケージはありませんvagrant up
。
パッケージを手動でインストールすると、次のパッケージまでしか持続しませんvagrant destroy
。これを使用すると、vagrant halt
システムにいくつかのバグが発生し、vagrant
最初にVirtual Boxを使用する目的が失われます。
わかりました一般的な答えは、単一のコマンドを使用するスクリプトと同じくらい簡単な放浪構成ですsudo yum install man
。 (実際には正確にどうすればいいのかわかりません。)しかし、vagrant boxを起動するたびに、manパッケージとすべての依存関係をダウンロードするよりも、これらのパッケージをダウンロードすることをお勧めします。一度、ホストシステムに保存し、毎回仮想マシンにロードしますvagrant up
。
必要なパッケージをインポートし、パッケージファイルをホストにsudo yum install man --downloadonly
入れるためにゲストでこれを実行しました。sudo cp -r /var/cache/yum/x86_64/6/base/packages/ /vagrant/
だから私の質問は実際には2つです。
sudo yum install man
(a)スクリプト(Vagrantfileと同じディレクトリに保存されている)を呼び出すか(b)可能であれば、Vagrantfileに単一のコマンド(たとえば)を挿入するための放浪設定構文は何ですか?yum
ローカルディレクトリからパッケージをインストールするために必要なオプションフラグを提供する方法(/vagrant
)そしてオンラインストアの代わりに同じローカルディレクトリに必要な依存関係をインストールしますか?
ベストアンサー1
たとえば、MacにVagrantボックスがあります(MacホストのLinuxゲスト)。
これがどのディストリビューションかを知ることは興味深いでしょう...あなたがそれを使用しようとしているのを見れば、yum
それがRH / CentOS / ..ものだと思いますか?
私は主に組み込みのLinuxドキュメント(manページ、情報ページなど)に簡単にアクセスしたいと思います。しかし、私が最初にさまよったときに私が使っていたボックスにはmanパッケージがインストールされていませんでした。
man
これがデフォルトでインストールされているディストリビューションを知りません。
私があなたなら、ATLASの公式ボックスの1つを使用します。 Debian が思い浮かぶでしょう:https://vagrantcloud.com/debian/
質問1に答えてください
これをvagrantfileに追加します。
$script = <<SCRIPT
echo I am provisioning...
date > /etc/vagrant_provisioned_at
SCRIPT
Vagrant.configure("2") do |config|
config.vm.provision "shell", inline: $script
end
からインポートした例 http://docs.vagrantup.com/v2/provisioning/shell.html#inline-scripts
これにより、上部のスクリプトが実行され生成されます。/etc/vagrant_provisioned_at
問題をさらに調整するには:
$script = <<SCRIPT
yum install man
SCRIPT
Vagrant.configure("2") do |config|
config.vm.provision "shell", inline: $script
end
設定スクリプトはUID0として実行されるため、必要ありませんsudo
。
質問2に答えてください。
私はDebianユーザーなので、RedHatは文盲です;-)
rpm -hiv <filename>
IMHOは(i
= installation、h
= hashtag、= verbose)ですv
。