Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

https://askubuntu.com/questions/33413/how-to-create-a-meta-package-that-automatically-installs-other-packages

 

Preliminary Requirements

  1. Add your `id_rsa.pub` ssh key to launchpad
    1. Navigate to https://launchpad.net/people/+me/+editsshkeys
    2. copy and paste your public key into the prompt
      1. to output your public key into the terminal run the following command:

        Code Block
        cat ~/.ssh/id_rsa.pub

...

Setup Vagrant

  1. References
    1. https://www.olindata.com/en/blog/2014/07/installing-vagrant-and-virtual-box-ubuntu-1404-lts
  2. Install packages

    Code Block
    sudo apt-get -y install virtualbox vagrant virtualbox-dkms
  3. Install a Vagrant Box

    1. Use hashicorp to find a suitable box to install, like ubuntu/trusty64 at https://atlas.hashicorp.com/ubuntu/boxes/trusty64
      1. note, rest of development we will assume that we are using the ubuntu/trusty64 box from hashicorp
    2. navigate to a directory where you wish to store your vagrant configurations for this setup
      1. e.g., 

        Code Block
        mkdir /var/www/vagrant/ && cd /var/www/vagrant/
    3. download and setup vagrant box: 

      Code Block
      vagrant init ubuntu/trusty64; vagrant up --provider virtualbox
  4. Create relevant provisions and vagrant settings  
    1. Open the Vagrantfile for your vagrant

      Code Block
      nano /var/www/vagrant/Vagrantfile
    2. Insert the following code into the Vagrant file, at the end - but before the `end` command

      1. Don't forget to replace the values for `your_launchpad_name`, `your_launchpad_email`, etc... 
      2.  If the formatting on the code block below breaks, visit https://gist.github.com/uladkasach/81cfe5d3b879882152178f0b5c8a6ec0

        Code Block

         This process will take a /while/ to run you provision your vagrant, especially the first time.

        Code Block
         config.ssh.forward_agent = true;
                      config.vm.provision "shell" do |s|
                        your_launchpad_name = "Launchpad Name";
                        your_launchpad_email = "launchpademail@provider.com";
                        your_launchpad_username = "launchpadusername";
                        your_gpg_password = "a_gpg_password";
                        your_git_email = "yourgitemail@provider.com";
                        your_git_username = "gitusername";
                        s.inline = <<-SHELL
                            echo "##########################";
                            echo Beginning provisioning of packaging environment setup.;
                            echo "##########################";
                            echo For launchpad:
                            echo Using #{your_launchpad_name} as  your name,
                            echo Using #{your_launchpad_email} as your email,
                            echo Using #{your_launchpad_username} as your username...
                            echo For git:
                            echo Using #{your_launchpad_email} as your email,
                            echo Using #{your_launchpad_username} as your username...
                            echo "##########################";
                            echo Updating and Upgrading
                            echo "##########################";
                            sudo apt-get update && sudo apt-get -y upgrade;
                            echo "##########################";
                            echo Installing package building packages...;
                            echo "##########################";
                            sudo apt-get -y install gnupg pbuilder ubuntu-dev-tools bzr-builddeb apt-file; 
                            sudo apt-get -y install packaging-dev; # Install packaging package
                            echo This next part may take a little while...;
                            pbuilder-dist trusty create;
                            echo "##########################";
                            echo Configuring Bazaar...;
                            echo "##########################";
                            bzr whoami "#{your_launchpad_name} <#{your_launchpad_email}>";
                            bzr launchpad-login #{your_launchpad_username};
                            echo "##########################";
                            echo Configuring Git...;
                            echo "##########################";
                            git config --global user.email "#{your_git_email}"
                            git config --global user.name "#{your_git_username}"
                            git config --global push.default simple
                            echo "##########################";
                            echo Assigning your DEBFULLNAME and DEBEMAIL;
                            echo "##########################";
                            echo $'export DEBFULLNAME="#{your_launchpad_name}"\nexport DEBEMAIL="#{your_launchpad_email}"' >> ~/.bashrc;
                            source ~/.bashrc;
                            echo "##########################";
                            echo Creating your vagrants GPG key;
                            echo "##########################";
                            sudo apt-get install rng-tools;
                            cat > .temp_settings_file <<-SETTINGS
                              %echo Generating a basic OpenPGP key...
                              Key-Type: RSA
                              Key-Length: 2048
                              Subkey-Type: RSA
                              Subkey-Length: 2048
                              Name-Real: #{your_launchpad_name}
                              Name-Email: #{your_launchpad_email}
                              Expire-Date: 0
                              Passphrase: #{your_gpg_password}
                              %commit
                              %echo OpenPGP key created successfully. SETTINGS
        SETTINGS
                            gpg --batch --gen-key .temp_settings_file;
                            rm .temp_settings_file;
                            echo "##########################";
                            echo Packaging environment successfuly provisioned [Success].
                        SHELL
                      end
    3. Note: if you had run vagrant up before setting these provisions you will need to run vagrant reload --provision to see these changes affect your vagrant.

 

 

Congradulations

You're all done.

...

Add a your vagrant's GPG key to Ubuntu and Launchpad

  1. References
    1. https://help.launchpad.net/YourAccount/ImportingYourPGPKey
  2. Enter your vagrant box
    1. Note, this can take a while if this is the first time this vagrant is run or if your triggering its provisioning manually. 

      Code Block
      vagrant up; vagrant ssh;
  3. Send the vagrant's gpg key to Ubuntu registry

    1. Find all your vagrant's keys with 

      Code Block
      gpg --list- keys 
    2. Find the pub id

      1. if you see an entry that looks like `pub 2048R/523053B5 2017-06-01`, `523053B5` is the pub id

    3. Send the keys

      1. run the following command, replacing the `<pub_key_id>` with the actual value

        Code Block
        gpg --send-keys --keyserver keyserver.ubuntu.com <pub_key_id> 
      2. For example

        Code Block
        gpg --send-keys --keyserver keyserver.ubuntu.com 523053B5
    4. Verify successful transmission

      1. The response key sending input should look like the following

        Code Block
        gpg: sending key <pub_key_id> to hkp server keyserver.ubuntu.com
      2. You can double check that the transaction went through successfuly with the following command

        Code Block
        gpg --keyserver hkp://keyserver.ubuntu.com --search-key 'your@email.com'
        1. https://askubuntu.com/questions/29889/how-do-i-check-if-my-openpgp-key-is-in-the-ubuntu-keyserver

  4. Import key into launchpad

    1. navigate to your OpenPGP keys page

    2. get fingerprint of your key gpg 

      Code Block
      gpg --fingerprint
    3. copy paste the key into the launchpad input box, press import key
    4. open email that launchpad sent you
    5. decrypt the email

      1. copy and paste the contents into a new file

        Code Block
        nano email.gpg
      2. decrypt the file with your key

        Code Block
        gpg -d email.gpg
    6. open the link contained in the decrypted email and confirm your key by pressing continue

Congratulations

You're all done. You've successfully set up your packaging environment. See the packaging page for details.