------------------------------------------------------------------------------- Introduction ------------------------------------------------------------------------------- These are instructions for using a SourceForge (http://www.sourceforge.net/) developer account to update psh with CVS. If you aren't a psh core developer (that is, you don't have commit access to the CVS repository), you can follow the instructions on the SourceForge CVS page for anonymous access. Other psh developers are encouraged to submit patches for things they fix. See the manpages for diff and patch for information on how to produce patches. In this case, the core developers will evaluate the patch. Requests for core developer status should be directed to the project administrator, Gregor N. Purdy (gregor@focusresearch.com). We keep the number of people with CVS commit privileges low, but occasionally slots will open up. People who have submitted useful and high quality patches in the past will be given priority for write access. In the examples that follow, the host name is foo, the local user name is bar, and the home directories are stored under /home. Source code is installed under /usr/local/src, and programs are installed under /usr/local. If these aspects differ in your setup, substitute as appropriate. ------------------------------------------------------------------------------- Source Forge ------------------------------------------------------------------------------- Obtain a source forge user account via http://www.sourceforge.net/. There is a "New User via SSL" menu item on the main page that will allow you to create an account. You will need to use this user id and password in the instructions below. ------------------------------------------------------------------------------- SSH ------------------------------------------------------------------------------- Make sure you have ssh 1.x installed (even if you already have 2.x installed). The home page for SSH is http://www.ssh.org/. Versions 2.x are commercial, and versions 1.x are freeware. There is a page with downloading information on the site above. For quick access, one of the mirrors in the USA is ftp://sunsite.unc.edu/pub/packages/security/ssh/. Here is an example session. First su to root and cd to the directory where you keep source code distributions: foo$ su - Password: foo# cd /usr/local/src foo# Retrieve the latest 1.x version of SSH from one of the ftp sites listed on the mirrors list at http://www.ssh.org/download.html: foo# ftp sunsite.unc.edu ... Name (...): anonymous 331 Guest login ok, send your complete e-mail address as password. Password: your@email.address ... 230 Guest login ok, access restrictions apply. Remote system type is UNIX. Using binary mode to transfer files. ftp> cd pub/packages/security/ssh ... 250 CWD command successful. ftp> get ssh-1.2.27.tar.gz local: ssh-1.2.27.tar.gz remote: ssh-1.2.27.tar.gz 200 PORT command successful. 150 Opening BINARY mode data connection for ssh-1.2.27.tar.gz (1022546 bytes). 226 Transfer complete. 1022546 bytes received in 12.6 secs (79 Kbytes/sec) ftp> bye 221-You have transferred 1022546 bytes in 1 files. 221-Total traffic for this session was 1033430 bytes in 2 transfers. 221-Thank you for using the FTP service on helios.oit.unc.edu. 221 Goodbye. foo# Unpack the distribution, enter the directory, and configure the package: foo# tar xvzf ssh-1.2.27.tar.gz ssh-1.2.27/ ssh-1.2.27/COPYING ... ssh-1.2.27/zlib-1.0.4/Makefile foo# ./configure --prefix=/usr/local creating cache ./config.cache ... foo# Make the programs and install them: foo# make ... foo# make install ... foo# Go back to your regular user account and make sure you can find the ssh1 program: foo# exit foo$ which ssh1 /usr/local/bin/ssh1 foo$ Generate your SSH1 key: foo$ ssh-keygen1 Initializing random number generator... Generating p: ......................++ (distance 380) Generating q: ...........++ (distance 168) Computing the keys... Testing the keys... Key generation complete. Enter file in which to save the key (/home/bar/.ssh/identity): Enter passphrase: Enter the same passphrase again: Your identification has been saved in /home/bar/.ssh/identity. Your public key is: ... Your public key has been saved in /home/bar/.ssh/identity.pub foo$ ------------------------------------------------------------------------------- CVS ------------------------------------------------------------------------------- You need to configure CVS to use ssh1 as the remote shell program (the default is rsh, which won't work for connecting to Source Forge). You can either try to remember to do this every time you want to access Source Forge (necessary if you have other remote CVS repositories you access that use a different remote shell), or you can add a line to your .bashrc (assuming you are using bash) file. Either way, the command is: export CVS_RSH=ssh1 To locate the repository, you can either set the CVSROOT environment variable (handy if you are only going to use this repository), or specify the locator on the command-line used to initially check out the code (CVS will cache the locator in its sandbox metadata files so you won't have to enter the locator again while working with that sandbox). Here is the command (again for either .bashrc or interactive use) to set the CVSROOT variable: export CVSROOT=sfuser@cvs.psh.sourceforge.net:/cvsroot/psh Substitute your SourceForge user id (in all lowercase) for sfuser. If you've added lines to your .bashrc, you'll need to log out and back in again for the changes to take effect. You can check the settings of the environment variables by running 'set | grep CVS' or 'env | grep CVS'. foo$ cvs checkout psh Host key not found from the list of known hosts. Are you sure you want to continue connecting (yes/no)? yes Host 'cvs.psh.sourceforge.net' added to the list of known hosts. sfuser@cvs.psh.sourceforge.net's password: cvs server: Updating psh U psh/.cvsignore ... foo$ When prompted, agree to connect, and use your SourceForge password. If you didn't set the CVSROOT variable, you'll need to to use this form of the command: foo$ cvs -dsfuser@cvs.psh.sourceforge.net:/cvsroot/psh checkout psh Go into the psh directory and do cvs upd -dP to prune the directories that we are not currently using. foo$ cd psh foo$ cvs upd -dP sfuser@cvs.psh.sourceforge.net's password: ... foo$ ------------------------------------------------------------------------------- Committing Changes: ------------------------------------------------------------------------------- After you've edited a file, built and tested psh, then: foo$ cvs commit -m 'Fixed minor tpyos' HACKING sfuser@cvs.psh.sourceforge.net's password: Checking in HACKING; /cvsroot/psh/psh/HACKING,v <-- HACKING new revision: 1.3; previous revision: 1.2 done ------------------------------------------------------------------------------- Welcome ------------------------------------------------------------------------------- Welcome to the wonderful world of Perl Shell hacking. We look forward to your contributions. Here are some things to keep in mind while hacking: * Please make log entries when committing. The core team members receive these in email, so its a good way to keep everyone up to date with what you are doing. * Please write test programs in the t/ directory whenever you can. The better we make this test suite, the higher the quality of our releases. * Please make high level notes in the CHANGES.pod file, because these are edited to make the final CHANGES.pod when we make releases. * After you've made some major contributions, you may want to create an entry for yourself in the psh.pod file's CONTRIBUTORS section. --The Perl Shell Core Team